Apache可以支持虚拟主机,通过不同的IP或者端口搭建多个站点。一方面可以缩短访问的目录,另一方面可以在DocumentRoot里设置仅可以public的文件目录。下文将在ubuntu/fedora/windows下通过不同的port搭建多个站点。
Ubuntu
Apache的安装目录在/etc/apache2下,site-available文件夹下有default和default-ssl两个文件。其中default是HTTP虚拟主机服务的配置文件,default-ssl是HTTPS服务的配置文件。新建站点的话需要新建一个配置,如下复制一份default为symfony
1 2
| sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/symfony sudo vim /etc/apache2/sites-available/symfony
|
增加其监听端口8080,修改/DocumentRoot和,例如DocumentRoot为symfony下的web文件夹,还要注意将该目录的AllowOverride 从None改为All。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Listen 8080 <VirtualHost *:8080> ServerAdmin webmaster@localhost DocumentRoot /home/wangrui/workspace/symfony/web <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/wangrui/workspace/symfony/web> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
|
然后激活虚拟主机配置
1 2
| sudo a2ensite symfony sudo service apache2 reload
|
最后重启Apache服务就可以了,如果发现重启失败,查看提示信息,看是否是端口已经占用。
1
| sudo service apache2 restart
|
如果需要撤销当前配置的话,则用
Fedora
Fedora下打开Apache的配置文件/etc/httpd/conf/httpd.conf,添加如下内容
1 2 3 4 5 6 7 8
| Listen 8080 <VirtualHost *:8080> ServerAdmin localhost DocumentRoot /var/www/html/oa/www ServerName localhost ErrorLog logs/dummy-host.auto.rex.com-error_log CustomLog logs/dummy-host.auto.rex.com-access_log common </VirtualHost>
|
然后重启apache
1
| sudo service httpd restart
|
Windows
找到对应的安装目录,采用XAMPP默认安装的话应该在C:\xampp\apache下,打开apache/conf/httpd.conf文件,去掉Include “conf/extra/httpd-vhost.conf”前的#号
1 2
| # Virtual hosts Include "conf/extra/httpd-vhosts.conf"
|
打开apache/conf/extra/httpd-vhosts.conf文件,添加一个监听端口,并修改VirtualHost,将DocumentRoot改为oa\www
1 2 3 4 5 6 7 8 9
| Listen 8080 <VirtualHost *:8080> ServerAdmin localhost DocumentRoot "C:\xampp\htdocs\oa\www" ServerName localhost ServerAlias www.dummy-host.localhost ErrorLog "logs/dummy-host.localhost-error.log" CustomLog "logs/dummy-host.localhost-access.log" combined </VirtualHost>
|
然后重启Apache就可以了
1 2
| net stop apache2.2 net start apache2.2
|
后续
上面的Ubuntu多站点是在公司的电脑上配置的,后来自己电脑新装的Ubuntu14.04中发现apache的配置文件略有不同。/etc/apache2/site-available/下是000-default.conf和default-ssl.conf两个文件,其中000-default.conf是HTTP的,另一个是HTTPS的。和上面的一样,新建时copy一个000-default.conf,修改时需要注意,000-default.conf是没有的。一种方式是自己增加一个,另一种是在/etc/apache2/apache2.conf中修改其
PS:设置监听端口时首先应该检查该端口是否已经占用