代码改变世界

【Apache】添加多站点(设置虚拟主机)

2018-07-03 10:44  范仲淹三打白骨精  阅读(3663)  评论(0编辑  收藏  举报

设置虚拟主机

第一步:首先修改Apache的配置文件(由于我用的是MacOS自带的服务器环境,因此配置文件的目录是:/etc/apache2/http.conf。其他环境例如MAMP,则在 MAMP/conf/apache/ 中。

编辑需要root权限)。

找到这一行,将第二行前面的#号去掉,表示启用vhosts虚拟主机:

----------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------

 

第二步:接着就去找这个http-vhosts.conf文件,在文件最后添加如下代码,添加规则如下:

  • DocmentRoot:设置项目的根目录,如:/var/www/project1/、/Library/Webserver/Documents/project1/等。
  • ServerName:设置访问项目的域名,如:www.project1.com。这样设置之后,就不需要用“localhost/project1/admin”访问,而可以用“www.project1.com/admin”访问本地项目了。
  • 另外如果你用的不是80端口号,则需要改一下这里第一行 <VirtualHost *:你的端口号> 。

-------------------------------------------添加的代码---------------------------------------------------------------

--------------------------------------------------添加的代码--------------------------------------------------------

 

第三步:最后一步,设置MacOS的hosts文件(文件目录是/private/etc/hosts),将域名添加到本机地址中:

----------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------

到这一步就完成了。

记得重启apache服务器!(apachectl restart)

 

最后,如果设置后访问站点时发现如下错误:403 Forbidden Forbidden You don't have permission to access / on this server。这主要是目录访问权限没有设置,需要设置对目录的访问权。步骤如下:

  • 打开 httpd_conf 文件,找到如下语句

  <Directory />

  AllowOverride All

  Required all denied

  </Directory>

  • 将第一行的 / 改为你之前设置的项目目录(如:/Library/Webserver/Documents/project1//)
  • 将第二行的 Required all denied 改为 Required all granted 即可。

 

设置多端口

步骤和设置站点差不多:

127.0.0.1       www.project1.com
127.0.0.1       www.project2.com

然后在http-vhosts文件中新增站点信息并把端口号改一下:

<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Library/Webserver/Documents/project1/"
    ServerName www.project1.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

<VirtualHost *:81>
#    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Library/Webserver/Documents/project2/"
    ServerName www.roject2p.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

最后改一下http.conf文件:

找到 Linsten 80 这行

在下面添加 Listen 81,即可。

<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 80
    Listen 81
</IfDefine>