其实这个东西本身没有可说的,只要仔细的阅读了apache的帮助文档就可以知道当你新添加一个virtualhost的新端口时,一定要添加一个到ports.conf文件。但是往往有些程序员认为只要在virtualhost中写明端口的就可以了,这样apache就知道我要的是这个端口。但事实上,apache不是凭你virtualhost的端口来启动端口监听的;而是ports.conf。
今天因为这个问题花了一个小时,所以写下来。
刚开始创建了一个virtualhost,文件名test, 内容如下:
1 <VirtualHost *:8001>
2
3 ServerName 127.0.0.1
4 DocumentRoot /var/www/django/tests
5 LogLevel info
6 ErrorLog ${APACHE_LOG_DIR}/tests-error.log
7 CustomLog ${APACHE_LOG_DIR}/tests-access.log Combined
8
9 WSGIScriptAlias / /var/www/django/tests/django.wsgi
10
11 <Directory /var/www/django/tests/static>
12 Options indexes
13 Order allow,deny
14 Allow from all
15 </Directory>
16
17 <Directory />
18 Options indexes
19 Order allow,deny
20 Allow from all
21 </Directory>
“djangotest” [readonly] 30L, 662C 1,1 Top
让后使用
sudo a2ensite test
启用我们test的virtualhost
sudo service apache2 reload
加载
sudo service apache2 restart
重启
然后直接在firefox中访问
127.0.0.1:8001
发现不可访问,然后使用
telnet 127.0.0.1 8001
发现还是不可以,那就说明apache根本就没有监听这个端口,但是就是找不到原因。apache在启动的时候没有任何错误。
后来又是查看log,又是上网搜索,没有任何进展。后来实在没有办法,在目录瞎溜达,结果看到ports.conf,才恍然大悟。原来端口要在这里添加端口。
1 # If you just change the port or add more ports here, you will likely also
2 # have to change the VirtualHost statement in
3 # /etc/apache2/sites-enabled/000-default
4 # This is also true if you have upgraded from before 2.2.9-3 (i.e. from
5 # Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
6 # README.Debian.gz
7
8 NameVirtualHost *:80
9 Listen 80
10
11 NameVirtualHost *:8080
12 Listen 8080
13
14 NameVirtualHost *:8088
15 Listen 8088
16
17
18 NameVirtualHost *:8001
19 Listen 8001
20
21 <IfModule mod_ssl.c>
“ports.conf” [readonly] 33L, 859C 1,1 Top
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.