ubuntu/fedora/windows下Apache多站点配置

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

如果需要撤销当前配置的话,则用

1
sudo a2dissite symfony

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:设置监听端口时首先应该检查该端口是否已经占用

Just a beginner.<br /><a href='https://github.com/yaoshanliang/about' target='_blank'>profile</a>