微信后台+node+nginx+docker+腾讯云踩坑之旅

微信后台+node+nginx+docker+腾讯云踩坑之旅

  • 微信公众号后台
  • node相关
  • nginx
  • docker化node程序
  • 腾讯云配置,端口问题
  • scp ssh传送文件

公众号后台

值得注意的就是ip white_list和服务器配置的问题

首先开发之前白名单配,在后台的基本配置里面填写微信后台+node+nginx+docker+腾讯云踩坑之旅

其次服务器配置微信后台+node+nginx+docker+腾讯云踩坑之旅
就在白名单配置下方,其中服务器是定义的后台逻辑用来处理微信push过来的消息并作出反应,其中关于URL(深坑),仅开放80和443端口,分别支持http和https,对于后台服务器是linux的来说,真的是一言难尽了。并且我开始以为只能是dnsname,后来经测试发现也可以直接是ip,不用填端口,token自定义就可以了,提交的时候wxserver会发送一个message去填写的服务器来验证,验证通过方可提交。

表格

node相关

node的话还是异步回调问题

nginx

基于上面所说后台只开放80和443端口,在linux和mac osx下,<1024的端口是被占用的(这时候就能体现windows的优势了?233),因此我选择用nginx来做转发

nginx安装mac直接brew安装就行,linux我是ubuntu16.04因此直接apt-get,没通过yum,安装下来后比较重要的就是nginx的配置文件nginx.conf了,默认是无法编辑的,通过sudo vim打开就行微信后台+node+nginx+docker+腾讯云踩坑之旅
配置文件只要修改这个做个转发就行,注意location / {空格 ,server_name如果是填的ip不必加http和端口号 转发需要http+端口号,另外写完保存完后 运行sudo nginx -t可以检查语法错误(个人感觉很有用,可以减少很多不必要的麻烦)。

docker化node app

首先推荐英文文档,中文文档完全感觉就是直接丢进百度翻译,而且很多都没跟上英文doc的版本

安装完docker以后就是制作自己的image,我的是node app所以是在node父镜像上构建的,提一句Cannot connect to the Docker daemon. Is the docker daemon running on this host?我是直接sudo 就可以解决,从docker hub里面直接pull下node,然后新建文件夹mydocker,新建Dockerfile,将package.json和app.js都放在这个目录下,如图微信后台+node+nginx+docker+腾讯云踩坑之旅
然后就是编辑Dockerfile的内容,doc都有教程,就放一张自己的Dockerfile,微信后台+node+nginx+docker+腾讯云踩坑之旅,随后直接build image就行了。
“docker build -t yourappname .”千万注意不要漏了这个点!!!找了好久才找到问题
微信后台+node+nginx+docker+腾讯云踩坑之旅
到这就算成了,可以直接在image里面查看,之后直接run就行了”sudo docker run -p 8000:8088 mynodeservice”

腾讯云配置

我的项目是放在腾讯云上面跑测试的,而腾讯云默认80不开放的。。(找了好久才知道)要手动打开

微信后台+node+nginx+docker+腾讯云踩坑之旅

直接在安全组里打开就行,打开后别忘记关联服务器实例,不会自动关联!!!!!
然而,即使打开了,你会发现还是无法打通,因为打开后默认会被占据微信后台+node+nginx+docker+腾讯云踩坑之旅

此时可以直接查看80端口被哪个进程占据,直接kill掉就行,图是我在kill掉之后自己nginx转发监听的

scp ssh传文件

其中一个还没讲就是把本地代码push到服务器上,我选择的是scp,还是遇到了一些问题的,orz

微信后台+node+nginx+docker+腾讯云踩坑之旅

ssh连不上去,开始我以为是我密码问题,后来在尝试了多次以及改密码后,意识到并不是,首先vim /etc/ssh/sshd_config,打开后修改微信后台+node+nginx+docker+腾讯云踩坑之旅

然后直接传输就行了,其中不能直接传到/home下,我是传到/tmp下在mv到/home下的。穿的是zip

暂时记录这么多