背景

之前鼓捣了一个微信公众号应用,wdxz_2015,大家有兴趣可以关注一下,主要是查询校招信息的,目前只是个人订阅号,没有认证,所以功能和界面上可能不太完备。

之前的公众号应用通过git一键部署在百度云BAE上的,新建应用引擎,选择基本配置tomcat+jdk(后台应用是Java写的),BAE提供自动发布的功能,这样通过将本地打包形成的war包上传上去即可。

本文假设前提是,你已经有了自己Java写好的微信公众号应用。

云服务器介绍

本文申请的是阿里云服务器学生版ECS,价格很便宜,只要9.9/月,本人购买的是Linux版本,Centos 6.5 64位,1G内存,1核CPU,带宽1G,配置虽然不是很高,但供我们经营一个非商业的微信公众号应用是足够了的。

购买完成之后,会有一个公网IP地址,这个IP地址当然是最重要的。如果MAC或linux电脑可以直接使用终端登录,Windows系统的电脑可以下载一个putty软件实现远程登录,这种登录方式基于ssh协议,而一般linux服务器或主机都自带安装有ssh server,且自动打开,如果没有的话,就自行安装吧。

云服务器安装和配置

刚购买的阿里云学生版ECS上并没有为我们安装tomcat和jdk相关的软件和运行环境,所以我们必须自己手动安装,当然你还有另外一种选择就是在云市场上花钱购买,有一键安装web环境,php和java的都有,也只要1元钱,但我想能自己安装走一遍,何乐而不为呢!

Centos上安装Tomcat,这篇博客上介绍的非常详细,可以参考一下。这里面包括tomcat的基本配置,以及设置tomcat为系统服务方式,并设置开机启动。

关于Linux系统环境变量的配置,如果只是某个用户的环境变量,可以直接编辑用户主目录下的.bashrc文件,如果要配置系统环境变量,则需要使用root用户编辑/etc/profile。

部署应用到云服务器

这时候已经完成了云服务器上Tomcat Web服务器的安装和配置,我们在自己的windows平台上通过使用Filezilla工具(ftp客户端软件)上传我们打包好的war到Tomcat的webapps目录下。

重新启动Tomcat,这样就可以自动解压上传的war包,并生成基本的项目目录,由于本项目只是微信公众号后台应用,而微信公众平台接口验证那里需要输入后台应用的url,来进行token验证。这里的url是后台主servlet的地址。

使用自己的微信公众平台账号登陆到公众平台上,选择开发模式,进入开发配置那里,输入token验证的url,我们尝试输入http://ECS公网ip地址(如果你绑定了域名,且域名经过备案,这里你也可以使用域名):8080/webapps下的项目目录名/主Servlet名。输入之后,提示url非法,只能接收80或443端口。

首先想到的解决办法就是将tomcat端口改为80,这确实能够解决,但是80端口是一个稀缺资源,最后不要这样就给占了,所以我选择通过nginx进行反向代理配置,实现动静分离。

安装ngnix服务器

Cenos下nginx服务器的下载与安装,nginx服务器的安装可以参考这篇博客的内容,这里面详细介绍如何将nginx设为系统服务,并随开机启动,假设您现在已经设置完成。接下来对nginx服务器的配置,让它真正实现动静分离。

修改nginx.conf文件(在nginx安装目录下的conf目录下),配置server_name为公网ip地址,或者你已经绑定备案了的域名,通过location下的proxy_pass实现反向代理,重启nginx服务,然后直接输入http://ip/index.jsp已经进入tomcat目录,说明实现了向tomcat服务器的代理服务。

接下来,我们就将新的不带8080端口的url进行微信公众平台的token验证,此时,顺利通过验证,很高兴,我的公众号经历了百度云到阿里云的搬家,现在又可以使用了。