对于我们苦逼的草根站长来说,同一个主机放置多个站点是个非常不错的方法。为了让有限的资源满足我们无限的折腾,今天来跟大家说一下,怎样实现在一个apache服务器上放置多个站点的问题。当然这些个小儿科只是针对入门级的人员来说的,各位高手们休要拍砖!
一个ip地址放置多个站点(基于主机名的虚拟主机,即共享IP的虚拟空间),简单的来说呢,就是通过apache的虚拟主机进行实现的。下面我们看一下具体的操作步骤:
1.找到apache配置文件:httpd.conf
关于apache的配置文件,不同的linux主机可能放置在不同的地方,尤其对于那些编译安装的环境来说,放置的位置就更加不固定了,找到httpd.conf用编辑器打开。
打开Apache的安装目录,找到httpd.conf文件,分别去掉下面两行文字前面的#号。 LoadModule vhost_alias_module modules/mod_vhost_alias.so 去掉#意思是启用apache的虚拟主机功能。 Include conf/extra/httpd-vhosts.conf 去掉这一行的#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置。打开它就可以在httpd-vhosts.conf文件里写虚机配置,而不是一定要在 httpd.conf 里面写了。直接在httpd.conf中写配置也可以,但不建议这么做。
2.修改配置文件,添加虚拟主机
查找如下的配置信息:
#<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>
上面的这段配置信息就是apache为我们提供的添加虚拟主机的模板,你可以选择在原来的基础上进行修改,也可以按着这个模板自己添加,通常也是整个文件的末尾处添加如下信息:
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/web/wordpress
ServerName www.mr-c.cn
ErrorLog logs/www.mr-c.cn-error_log
CustomLog logs/www.mr-c.cn-access_log common
</VirtualHost>
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/web/wosn
ServerName www.wosn.net
ErrorLog logs/www.wosn.net-error_log
CustomLog logs/www.wosn.net-access_log common
</VirtualHost>
在这里我们用到的是沃森本人的两个域名www.wosn.net和www.mr-c.cn,在实际应用中将其替换为自己的域名。当然,如果你要配置更多的站点,可以参考这样的方式继续添加,我们用两个站点作为说明。
以域名www.wosn.net为例,需要说明一个问题,如果你在解析域名的时候将www.wosn.net和wosn.net都进行了解析,这个时候你访问wosn.net的时候可能访问到的是www.mr-c.cn这个站点而不是www.wosn.net,这该怎么办呢?我们可以在配置文件中再添加一个虚拟主机,即在配置文件添加:
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/web/wosn
ServerName wosn.net
ErrorLog logs/www.wosn.net-error_log
CustomLog logs/www.wosn.net-access_log common
</VirtualHost>
3.配置完成,重启apache
修改完配置文件后,记得一定要重启apache,否则修改是不会起到作用的,这是很多刚上手的人员最容易忽略的问题。
这样,一个apache服务器放置多个站点的配置工作就完成了,希望对大家有所帮助!
出现 HTTP 错误 403 - 禁止访问解决办法
HTTP 错误 403 - 禁止访问,即403 Forbidden:You don't have permission to access / on this server.
可能是权限不足引起的问题。
解决方法:
打开apache的配置文件httpd.conf,逐行检查。找到:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory>
此处“Deny from all”为拒绝一切连接。
把此行修改为 “Allow from all”,即可解决问题。
修改后的代码为:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow allow from all </Directory>
再在浏览器里打开,显示it works!问题解决。
403 Forbidden主要原因分析
1、你的IP被列入黑名单
2、你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了;
3、网站域名解析到了空间,但空间未绑定此域名;
4、你的网页脚本文件在当前目录下没有执行权限;
5、在不允许写/创建文件的目录中执行了创建/写文件操作;
6、服务器繁忙,同一IP地址发送请求过多,遭到服务器智能屏蔽;
设置格式的注意事项,需要说明的是一般除了设置serverName和DocumentRoot外,还需要对目录进行设置,即<Directory></Directory>的东西。否则会出现无权限访问之类的问题,其他参数诸如错误日志、用户访问信息、别名设置等等可以设置也可以省略。
以上方法也可以写在虚拟空间配置<VirtualHost *:80>....</VirtualHost>中间,如下格式:
<VirtualHost *:80> #ServerAdmin admin@myxzy.com ServerName dummy-host.example.com? DocumentRoot "g:/www2" DirectoryIndex?index.html?index.php?? ServerAlias?www.dummy-host.example.com?? <Directory "g:/www2"> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Apache VirtualHost配置
以lampp环境为例子,其他环境只是配置文件的路径不同。
先要在 ? lampp/etc/httpd.conf ( 这个是Apache 总的配置文件)中,将虚拟路径的注释去掉。
#Include etc/extra/httpd-vhosts.conf
使httpd-vhosts.conf文件起作用,或者直接在httpd.conf中写配置也可以,但不建议这么做。
相关的配置有:Listen ?NameVirtualHost ?<VirtualHost>
1. Listen ?要监听的端口,多个端口,要写多个Listen;否则Apache启动的时候,不会启动相应的接口。
比如:
Listen 80
Listen 8080
2. NameVirtualHost 如果没有这个,<VirtualHost>标签就没什么作用。(新版已废除)
(这里特指基于域名访问的情况,若是基于IP访问的,以第一个指定IP的VirtualHost为准,每个IP可以单独指定)
一个NameVirtualHost 可以对用多个<VirtualHost>,每个<VirtualHost>必须有自己的NameVirtualHost(我猜的);
NameVirutalHost *:80
制定这个主机的IP和端口,如果服务器上有多个IP,就可以制定某个IP的某个端口是哪个主机。
(新版的Apache已经去除了NameVirtualHost 这个配置,因为确实没什么用,参数在VirtualHost中都已经指明了)
3. 最关键的VirtualHost
重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。
因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)
和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认。
所以,我的第一个VirtualHost是
<VirtualHost *:80>
ServerName *
DocumentRoot </opt/lampp/htdocs/guest>
<Directory /opt/lampp/htdocs/guest>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>
后面的,依次添加就可以
<VirtualHost *:80>
ServerName www.myweb1.com
DocumentRoot </opt/lampp/htdocs/myweb1>
<Directory /opt/lampp/htdocs/myweb1>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>
nginx虚拟主机配置是在vhost.conf文件;
欢迎各位留言交流,共同进步!
评论