前段时间开始了第一个小程序,但毕竟不是全职开发,眼看小程序开发未完,3个月的免费使用就要到期了。这可犯难了,如果要续费3台主机,对于未推出产品的个人用户,将是一笔不小的花费。于是有一个想法,将原来的会话管理服务器和业务服务器合并到一台主机上,这样就可以省掉一台云主机的费用。
文件迁移
因为两台服务器的镜像是不同的,里面的环境也不同。业务服务器是nginx+php-fpm的环境,而会话服务器是LAMP (Apache)。
首先把登录会话服务器,把文件传到业务服务器来。
会话服务器(172.16.0.15) /opt/lampp/htdocs/mina_auth
迁移到 ->
业务服务器(172.16.0.8) /data/release/session-wafer/mina_auth
[root@VM_0_15_centos htdocs]# pwd
/opt/lampp/htdocs
[root@VM_0_15_centos htdocs]# ls
mina_auth update_mina.sh
[root@VM_0_15_centos htdocs]# tar czvf session.tar.gz mina_auth
打包完成之后,把文件通过scp复制过去。
scp /opt/lampp/htdocs/session.tar.gz root@172.16.0.8:/data/release/
然后,登录业务服务器
停掉php-fpm服务,命令:
kill -QUIT `cat /run/php-fpm/php-fpm.pid`
停掉nginx服务,命令:
nginx -s stop
解压session.tar.gz命令:tar xzvf session.tar.gz
把mina_auth创建到正确的目录下面。
设置nginx
因为业务服务器已经跑在了80端口,因而我们现在把会话服务器配置到8080端口会更加合理。所以我们是让一个nginx同时支持多个端口。
默认nginx有两个配置文件
- /etc/nginx/nginx.conf 这个是主配置文件,打开查看可以发现在末端它引用了目录 /etc/nginx/conf.d 里面的所有配置文件;
- /etc/nginx/conf.d/php-weapp-demo.conf 这个是80端口的业务服务器的配置;(我个人把它改了名字 application-wafer.conf)
把application-wafer.conf复制一份,起名为session-wafer.conf,并修改下面的内容。
这个时候,似乎掺的配置都修改完成了,但是还不能运行起来的,必须在程序上做一些修改。特别是加解密部分,可是花了赞哥成天的时间找出来。
修改小程序sdk配置
位置: /etc/qcloud/sdk.config
把这个地址改成你业务服务器本机的地址。如,我从 172.16.0.15 变成了 172.16.0.8:8080
修改解密算法
为这个问题我找了一天时间,非常郁闷。
位置:/data/release/session-wafer/mina_auth/system/wx_decrypt_data/new/pkcs7Encoder.php
问题描述:
在会话服务器里,mcrypt插件是已经随LAMP安装了的,而在业务服务器,并没有这个插件。请看下面的phpinfo。(你需要在php.ini里面把phpinfo生产才能查看)
原来打算在业务服务器上安装mcrypt插件,但是查看php的官网,特别是php 7.1后,mcrypt是特别不建议使用的,其可以用openssl替代。
$decrypted = openssl_decrypt($aesCipher, 'aes-128-cbc', $this->key, OPENSSL_RAW_DATA, $aesIV);
修改后的效果为:
重新启动服务器
启动nginx和php-fpm,直接高点命令nginx和php-fpm
测试工作
curl http://localhost/
curl http://localhost:8080/mina_auth/
注意:8080端口是默认不能通过外网访问进来的,只能通过VPC内网。