做移动前端开发需要经常用微信的扫一扫来访问网站的地址,公司使用apache来配置的,不过确实没用过这东东,早上来电脑启动后发现一直报错,就对apache的配置做了一下研究,总结如下。
1.现象是在启动apache的服务时一直报错,经调查后发现是80端口的原因,80端口为iis默认使用的端口,apache得重新配置其他端口。
在安装目录的conf目录下的httpd.conf(里面以#开头的都是注释)文件是Apache 总的配置文件,在这里配置的一些内容对所有的虚拟网站都适用。
http.conf里面的配置介绍:
- Listen :监听端口,默认情况是80。
可以监听多个端口 ,如
Listen 8081
Listen 8082
- ServerAdmin :服务器管理员邮箱。
- ServerName:服务名。
- DocumentRoot:网站的路径。apache会默认给配置DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs",
- <Directory />
2.在conf\extra目录下有httpd-vhosts.conf文件,该文件为虚拟站点的配置:
怎么能让该文件生效呢?需要修改httpd.conf文件的 #Include etc/extra/httpd-vhosts.conf,去掉前面的#,即将httpd-vhosts.conf文件包含进来
一个NameVirtualHost 可以对用多个<VirtualHost>,每个<VirtualHost>必须有自己的NameVirtualHost(我猜的)
- NameVirutalHost *:80
制定这个主机的IP和端口,如果服务器上有多个IP,就可以制定某个IP的某个端口是哪个 主机。
( 新版的Apache已经去除了NameVirtualHost 这个配置,因为确实没什么用,参数在VirtualHost中都已经指明了)
- 关键的VirtualHost
重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,然后再找匹配的,如果没有匹配的,就是第一个VirtualHost起作用。
因此在httpd.conf中,将<Dicrectory />(这个是所有目录的默认配置)
和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.作为默认。
以下是我配置的本地8081的一个虚拟站点,端口使用8081,DocumentRoot为站点的目录,ServerAlias为设定虚拟主机的別名,可以设置多个,ErrorLog为错误log的写入路径
<VirtualHost *:8081>
DocumentRoot "E:\tong\assets\assets"
ServerName localhost
ServerAlias 127.0.0.1
ErrorLog "logs/error.log"
</VirtualHost>
3.至此,在浏览器中输入localhost:8081即可看到页面,如果输入localhost:8081/xxxxxx (xxxx代表documentRoot下的html的路径)即可访问虚拟站点下的文件,
4.但用localhost并不能让微信的扫一扫成功,将其改成本地ip即可
5.为什么直接用localhost访问不行,必须加上端口号,这是因为直接访问localhost采用80端口
参考文章:
http://www.cnblogs.com/wpjsolo/archive/2012/01/19/2327457.html
http://blog.chinaunix.net/uid-18933439-id-2808715.html