昨天实践了下在CentOS 5上通过Apache直接配置虚拟主机,服务器没有安装面板软件,所以只能通过SSH远程连接操作了。Apache安装在/etc/httpd目录下,这个即是Apache的根目录,所以Apache配置文件/etc/httpd/conf/httpd.conf中的ServerRoot设置的是ServerRoot “/etc/httpd”。
我们编辑httpd.conf,在虚拟主机配置区看到如下的代码:
#NameVirtualHost *:80
ps:中间数行无关紧要注释略去了。
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
重要的就是这两部分,用来配置虚拟主机的。假设服务器的IP是127.0.0.1,那么我们在范例后增加test.com这个域名的虚拟主机,绑定到/var/www/html/htdocs/test.com这个目录。/var/www/html/htdocs我设置为为网站根目录,所有用户的网站内容都放这个目录下面。(最好不要直接改原来的模版,可以copy之后增加虚拟主机配置,保留范例配置,#号表示注释,#号开头的行不会影响服务器)
我们首先在#NameVirtualHost *:80行下一行增加:NameVirtualHost 127.0.0.1:80(要写在虚拟主机配置前,可以就在上面#行上去除#号修改或者下一行加上这句。)
接下来在虚拟主机配置范例的下面增加test.com的虚拟主机配置:
<VirtualHost 127.0.0.1:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/htdocs/test.com
ServerName test.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
大家看到其中我仅修改了:
DocumentRoot /var/www/html/htdocs
ServerName test.com
这两行就OK了,其他几行对这个虚拟主机能否运行不重要,暂时先不设置了。实际运营时ServerAdmin要设置自己的邮箱以便接收通知。
从DocumentRoot可以看到/var/www/html/htdocs是我测试的网站test.com的根目录,所以这个网站内容直接通过ftp传到该目录下即可。
另外还要注意一点就是索引页优先级,这个也是在/etc/httpd/conf/httpd.conf中设置的,通过
DirectoryIndex index.html index.php
该行来指定服务器默认的索引页面(需要设置什么为索引页加在后面就可以了,中间空一格,访问的时候服务器会按从从到尾的优先级来锁定索引页)。
另外,test.com事先要在域名面板做好解析,指向服务器的IP127.0.0.1才行。解析和服务器端绑定都完成才能保证访问到网站。