今天在搭建微信公众号管理平台的时候,发生了一件蛋疼的事情。就是在IIS下,php不支持OPENSSL。用PHPINFO()查看后,发现同一个版本的PHP,在apache下支持OPENSSL,而IIS6不支持,导致了IIS下微信公众号自定义菜单的功能发生错误。
网络上查找了多种解决方案无效后,决定将网站迁移到APACHE中,但有一个问题,就是IIS下已经有多个网站在使用了,包括ASP、ASP.NET网站。最后决定,将PHP开发的微信公众号管理平台迁移到APACHE中,并将80端口分配给APACHE。其他网站则通过APACHE做反向代理连接到IIS进行访问。
具体步骤如下(我用的是WAMP,步骤视不同平台而定):
1. 在apache的httpd.conf里面,取消下面四行的注释(即将前面的#号去掉)。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
2. 取消httpd.conf中
Include conf/extra/httpd-vhosts.conf前面的注释,这样apache的host配置将使用 httpd-vhosts.conf文件。
3. 打开httpd-vhosts.conf,添加如下代码,将目录D:/wwwroot/weimeng绑定到域名www.***.com,并设置默认首页和访问权限。
<VirtualHost *:80>
DocumentRoot "D:/wwwroot/weimeng"
ServerName www.***.com
<Directory "D:/wwwroot/weimeng>
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.php default.php
AllowOverride Options FileInfo
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
(如果你只做代理,不架设网站,这步可以忽略)
4.这步才是添加代理
<VirtualHost *:80>
ServerName www.aaa.com
ProxyRequests Off
<Proxy *>
Order Deny,Allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:8181/
ProxyPassReverse / http://127.0.0.1:8181/
</VirtualHost>
这样访问域名www.aaa.com将通过apache指向http://127.0.0.1:8181/,而8181端口是分配给IIS的。
其它的网站也是依样画葫芦。
设置完成后,重启apache搞定。
完成后不要忘记了,在系统服务中设置wampapache、wampmysqld两个服务为自动启动,不让重启服务器或账户被注销就麻烦了。