自行搭建小程序服务器

2,163 阅读5分钟

最近为了学习小程序开发及上线的流程,决定自己开发一个小程序,下面是我的开发和部署的过程.

开发

开发使用的mpvue+koa

  • 首先要注册微信公众平台,申请小程序,开通腾讯云,这样你会有appId和用于测试的二级域名.

  • 首先在微信小程序的开发环境的资源下载中下载node.js demo

  • 我们只需要用到demo中的server文件夹.

  • 快速构建一个mpvue的项目my-project 构建方法.

  • 把server放到my-project中,作为后端服务,并在project.config.json中增加字段"qcloudRoot": "server/".

  • cd my-project

  • npm install

  • npm run dev

  • 下载小程序开发工具,并打开my-project项目(小程序开发工具也具有编辑功能,当然也可以用此直接开发,但是还是建议用自己熟悉的编辑器开发,毕竟用习惯了)

  • 可以每次修改了server的代码,将最新代码通过腾讯云-上传测试代码到腾讯云的开发环境上进行测试,但是这样效率太低了,毕竟上传和部署并没有那么快,而且也不好调试,为了高效开发,我们采用本地调试.

    如何开通本地调试?

  1.在server/config.js中的CONF对象中增加如下代码
    // 其他配置 ...
    serverHost: 'localhost',
    tunnelServerUrl: '',
    tunnelSignatureKey: '27fb7d1c161b7ca52d73cce0f1d833f9f5b5ec89',
    // 腾讯云相关配置可以查看云 API 密钥控制台:https://console.cloud.tencent.com/capi
    qcloudAppId: '您的腾讯云AppID',
    qcloudSecretId: '您的腾讯云SecretId',
    qcloudSecretKey: '您的腾讯云SecretKey',
    wxMessageToken: 'weixinmsgtoken',
    networkTimeout: 30000
  2.本地安装mysql,对于数据库的配置在config.js中
    mysql: {
        host: 'localhost',
        port: 3306,
        user: 'root',//数据库的用户名
        db: 'cAuth',
        pass: '数据库的密码',
        char: 'utf8mb4'
    }
  3.新建数据库cAuth
  4.cd server
  5.npm install
  6.npm run initdb
  7.全局安装保存后自动更新的node程序
   sudo npm install -g nodemon 
  8.可以愉快地启动了
   npm run dev
   至此本地服务已经搭建好了,端口在config.js中,现在我们可以愉快地开发前端页面了.

部署

首先可以直接使用腾讯云的小程序服务器,会方便很多,数据库和nginx已经安装配置了,不需要自己再麻烦操作.我的首选也是想直接用,但是在我想购买的时候发现没货了.没办法,只能自己来搭建一下了,下面是我配置阿里云服务器的过程.

  • 购买阿里ECS服务器

  • 购买域名(在阿里云平台上买的)

  • 将域名解析到服务器

  • 将域名进行备案(在阿里云平台按步骤进行,耗时比较久)

  • 备案通过后,在微信小程序平台-开发-开发设置-服务器域名-设置合法域名

  • 进入到你的服务器

  • 安装nginx

    1.添加Nginx存储库
    sudo yum -y install epel-release
    
    2.安装nginx
    sudo yum -y install nginx
    
    3.启动Nginx
    sudo systemctl start nginx
    
    4.如果你在使用防火墙,需要进行设置
      允许http通信
      sudo firewall-cmd --permanent --zone=public --add-service=http
      允许https通信
      sudo firewall-cmd --permanent --zone=public --add-service=https
      重启防火墙
      sudo firewall-cmd --reload
    
    5.设置开机自启动
    sudo systemctl enable nginx
    
    6.测试
    在浏览器中键入你的ip或域名,如果能看到nginx的欢迎页面,说明已经安装并启动成功了
    
    7.申请ssl证书
    因为小程序要求使用https协议,所以我们需要ssl证书.
    可以在腾讯云https://console.cloud.tencent.com/ssl申请免费证书.
    按提示步骤一步步申请,很快就能申请下来.
    然后把申请下来的文件夹中Nginx中的.crt和.key文件拷贝到你的服务器上.
    
    8.配置nginx
    进入到nginx的目录 cd /etc/nginx
    可以看到目录下有conf.d,这里是nginx的配置文件放置的地方
    cd conf.d
    新建一个.conf的文件
    配置如下:
    upstream app_nodejs {
        server 127.0.0.1:5757; //你的node服务地址
    }
    server {
        listen       443 ssl; //https 的默认端口是443
        server_name  你的域名;
        ssl_certificate      /路径/xxx.crt;
        ssl_certificate_key  /路径/xxx.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://app_nodejs;
            proxy_redirect off;
        }
    }
    保存,退出
    
    9.重新加载配置文件
    nginx -s reload
    如果报这样类似的错误
    nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
    是因为/var/run目录下并不存在nginx.pid文件
    解决方法一:
      需要编辑nginx.conf,将pid这行的注释去掉,保存退出
      查找nginx存在的目录
      whereis nginx
      发现nginx存在于下面几个地方
      nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz
      执行命令
      /usr/sbin/nginx -c /etc/nginx/nginx.conf
      进入到/var/run
      可以看到nginx.pid存在了
      此时执行nginx -s reload 会成功
    解决方法二:
      重新启动nginx
      service nginx stop
      service nginx start
      进入到/var/run
      可以看到nginx.pid存在了
      此时执行nginx -s reload 会成功
    这两个方法都可以试一下,我是第一次用的方法一成功了,第二次用的方法二才能成功,原因我也不清楚.  
    
  • 安装mysql

  • 安装node环境

  • 安装pm2

  • 安装git

  • 将项目clone到服务器上

  • 新建cAuth数据库

  • cd server

  • npm run install

  • npm run initdb

  • npm run start

  • pm2 list可以查看进程是否启动成功了

  • 将小程序的请求地址指向你配置的域名地址

  • 访问,看是否成功 至此,小程序服务器的部署就完成了.

现在可以用小程序开发工具上传小程序的代码到微信平台-提交审核了-发布上线了.

以上就是我的开发和部署的流程,当然期间有卡到一些地方,用了一两天才解决掉,当最后小程序可以请求成功的时候是很开心的.希望看到文章的你,服务也能部署的顺利.