PHP 虚拟主机配置

步骤很简单,所以先来说下踩过的坑

(1)配置虚拟主机的目录详解,即针对目录的详细配置注意事项。刚开始写成如下格式

<Directory>
        #允许所有访问
        #allow from all
        #允许重写
        #AllowOverride all
        #表示允许站点显示文件目录结构
        Options +indexes
</Directory>

   保存后重启Apache,发现启动失败。查找后发现目录文件里需要加入站点文档根目录,否则会匹配失败

   这里,我改为了

<Directory "C:\site">
...
</Directory>

 

 

 

 

①创建站点目录

②开启httpd-vhosts.conf配置功能

    找到Apache的\conf目录下的httpd.conf文件,位置:因为我用的集成包所以在一级目录下的Apache里


具体路径:


 

 

   打开它,找到下面这两行:

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
把它改成下面这样:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

    意思是启用虚拟主机的设置文件httpd-vhosts.conf,虚拟主机的设置都在这个文件下设置

③配置Apache虚拟主机的配置文件,创建一个虚拟主机;

    文件位于Apache目录下,conf/extra/httpd-vhosts,打开配置文件后,复制一段之前的站点配置代码---虚拟主机配置,粘贴到最后

#自定义虚拟主机
<VirtualHost *:80>
    #配置站点管理员邮箱,当站点报500服务器错误时时,会在页面提示错误信息,
      #并列出管理员邮箱
    ServerAdmin [email protected]
    #站点文档根目录
    DocumentRoot "C:\site"
    #站点绑定的域名
    ServerName www.1006.com
    #站点别名ServerAlias 1006.com(一般是不带www的域名)
    #错误日志的存储位置,logs目录在Apache目录下,不在站点根目录
    ErrorLog "logs/1006-error.log"
    #正常访问日志的存储位置,也在Apache目录下。最后的common是日志的记录规则名称,
    #在Apache的组配置文件httpd.conf定义记录规则
    CustomLog "logs/1006-access.log" common
    #针对目录的详细配置
    <Directory>
        #允许所有访问
        allow from all
        #允许重写
        AllowOverride all
        #表示允许站点显示文件目录结构
        Options +indexes
    </Directory>
</VirtualHost>

 ④重启Apache

⑤修改hosts文件,将配置文件里声明的2个域名进行绑定解析

    hosts文件位置:C:\Windows\System32\drivers\etc\hosts,快捷操作win+R弹出运行对话框,输drivers即可找到etc目录

    编辑hosts:输入127.0.0.1 www.1006.com 1006.com(可以将两个域名写在一行,站点域名写在前,站点别名写在后面)

⑥检验

   在cmd里通过ping命令来测试域名是否绑定成功

   检验IP是否指向本机cdm输入:ping ip

   ping 是Windows系列自带的一个可执行命令。利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。应用格式:Ping IP地址

现在浏览器输入自定义的ip,便会看到index of /,表示列出站点目录。

此时说明虚拟主机配置完成。

⑦将代码文件复制到站点目录

   复制ThinkPHP目录和index.php入口文件到站点根目录。通过浏览器进行访问新域名,此时会看到欢迎使用ThinkPHP!界面

   并且会在站点目录里自动创建Application目录,因为入口文件index.php里定义了应用目录,所以引文件时不需要引入Application目录

// 定义应用目录,后期自动生成的文件都会放到里面
define('APP_PATH','./Application/');



 

 

 分享下其他文章:

先说配置虚拟主机的流程:

1.先打开httpd.conf文件,打开httpd-vhosts.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

2.然后打开httpd-vhosts.conf文件,配置一个虚拟主机

<VirtualHost *:80>
    DocumentRoot "D:/amp/www/wechat"
    ServerName www.wechat.com
</VirtualHost>

3.打开hosts文件,添加域名

127.0.0.1        www.wechat.com

4.重启Apache,这时虚拟主机的域名www.wechat.com可以正常访问,

 但是我的localhost就不能访问了。报错如下:

解决过程:

我的思路是,添加一个名为localhost的虚拟主机不就可以了?

1.打开httpd-vhosts.conf文件,配置一个名为localhost的虚拟主机:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "D:/amp/www"
</VirtualHost>

2.打开hosts文件,添加域名

注意:这一步,做或者不做,都没有影响,亲测通过。

#127.0.0.1        localhost

3.重启Apache,期待的结果并没有出现,哎,都累得半死了,还是不能访问localhost,虽然其他虚拟域名都可以正常访问,

 可是我就是想鱼和熊掌兼得,继续查找问题

 

问题解决:

最后我比对了我原来的配置代码,发现,在httpd.conf文件中有一行代码是需要注释掉的

#ServerName localhost:80

就是这一行代码,把我折腾的够呛,把 ServerName 这一行代码注释掉就可以了

也许你的httpd.conf文件中并不是localhost:80 这个值,可能是  ServerName  a.com:80 ; 都一样,直接注释掉

以后无论开启或者关闭虚拟主机,localhost都可以正常访问。

 

 

其他文章2:

首先,我们要明白为什么访问localhost就可以访问到我们的apache主页

解析域名的时候,首先是从本地的hosts文件开始的

如果查不到,才会去DNS服务器查询。

解析:

在Windows操作系统C:\WINDOWS\system32\drivers\etc目录下的hosts文件,存放着一些主机名和IP地址的映射表。通常,客户机需要进行域名解析时,系统会先读取该文件,在其中查找对应域名的IP地址。若查找失败,则将域名解析任务提交给该主机所配置的首选DNS服务器进行查询。默认情况下,该文件必须包含的一条“127.0.0.1 localhost”记录。

如果你在这里面写一行:127.0.0.1 www.baidu.com

百度你是肯定上不了。因为访问的是你自己的机器。

hosts 就是一个映射(域名和IP的对应,localhost也可以说是一个域名) localhost -> 127.0.0.1 

找到C:\WINDOWS\system32\drivers\etc\hosts ,修改如下

不多解释,这就是为什么计算机认识localhost的原因。

.

猜你喜欢

转载自570109268.iteye.com/blog/2414410