nodejs应用在centos上的部署以及微信公众平台的配置


曾经学习过相关内容,但是遗忘太快,很多坑也踩了又踩,果然是好记性不如烂笔头,找个地方记录一下部署过程:

环境搭建

登录阿里云,更换系统centos7.2,可以采用阿里云现成环境镜像(偷懒),或者自己搭建,注意事项:
使用putty远程登录到服务器
安装nodejs 最好使用淘宝镜像,速度更快

安装mongodb,教程很多,不谈

如果启动报错则先以--repair方式启动,kill进程后,删除logs.lock文件再次-fork启动 配置conf文件

学会正确关闭数据库,如果直接关闭,会导致mongo为了保护数据库生成.lock文件,使得下次无法启动

use admin
db.runCommand("shutdown")//db.shutdownServer()正确关闭mongodb

或者

mongod --shutdown

还需要将mongodb添加进开机启动项:
chmod +x /etc/rc.d/rc.local

使用vim将mongo启动命令添加进去

mongo启动命令如下:

mongod --dbpath=/var/mongodb/data --logpath /var/mongodb/log/log.log -fork


指定默认数据库和日志位置,文件夹需要自己新建,后者为文件位置非文件夹位置


全局安装forever,以管理服务进程
npm install -g forever
启动服务 forever start server.js
关闭所有 forever stopall

防火墙配置

配置iptables和阿里云安全组,二者缺一不可
微信公众平台只支持443和80端口,需要在安全组中开放80端口,还需要在系统中使用iptables开放80端口
centos7的默认防火墙为firewalld,这里采用iptables,故先关闭firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service #禁止firewall开机启动
yum install iptables-services 

编辑iptables配置文件:
vim /etc/sysconfig/iptables

添加如下记录:
-A INPUT -p tcp -m state NEW -m tcp --dport 8999 -j ACCEPT

注意这几行配置不要写在最后,写在22端口下一行即可,否则不会生效

命令添加方式如下,将80端口映射到8999端口,主程序监听8999端口即可(linux下非root无法监听小于1024的端口)

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8999
sudo iptables-save
systemctl restart iptables
systemctl enable iptables
查看防火墙规则 iptables -L -n
查看端口 netstat -a -n

使用xftp上传文件,注意更改其中的地址//主程序监听阿里云内网ip,online部分改为阿里云外网ip

//或者从github中拉取代码


如何导入数据

使用mongodb工具从文件导入(如果本地有数据库也可以从本地数据库向线上数据库导入)
mongorestore 支持.bson和json格式
命令:
 mongorestore -d weixin xxx(文件夹目录)

mongoimport 导入到指定数据库 User.json
mongoimport -d dbname -c collectionname --file filename --type json

数据库管理员验证权限设置,待补充


微信公众号平台配置:

微信公众号仅支持80和443端口!!!
测试公众号填写URL为项目中微信处理件url地址
注意appID和appsecret以及token是否匹配
另外微信公众号平台需要将自己的ip地址加入白名单,以调用微信API

tips:

本地测试需要注意(使用ngrok代理)
1.如果在手机上连接笔记本本地服务器需要监听host地址为本机IP,不可以用127.0.0.1
127.0.0.1为环回地址,数据包到达网络层即被传回,不会出本机
2.开放80端口后,需要用管理员权限启动项目才能监听80端口(windows环境)





阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页