小程序後臺配置 --- CentOS 7.3 6四、nginx、node.js

小程序後臺配置

目的

配置一個小程序後臺的開發、發佈環境,同時保留頂級域名另做他用。php

需求:

  1. 一個域名
  2. 一個主機
  3. 一個小程序帳號

系統和軟件

這裏使用CentOS 7.3 64位系統nginxnode.jsnode

1、域名到主機

購買域名和主機

這裏我買的是西部數碼的域名和騰訊雲的主機linux

解析域名到主機服務商

若是主機和域名是一個服務商,則跳過這一步nginx

到域名購買商處,把域名解析到主機運營商,具體方法去主機運營商的域名解析查看
如,騰訊雲主機的解析方法是,npm

請到域名註冊商處將DNS修改成:f1g1ns1.dnspod.netf1g1ns2.dnspod.net
修改DNS服務器須要最長72個小時的全球生效時間,請耐心等待。json

備案

在主機運營商處,爲域名備案小程序

設置二級域名

爲何要設置二級域名,對我我的來講來講,有幾點:vim

  • 域名用於多個網站和多個小程序
  • 域名同時用於多個環境:開發環境、正式發佈環境

這裏,咱們先設置一個wx二級域名,一個wx-dev二級域名:
假設主域名是aaa.top
則在主機服務商上(域名已經解析到了這裏),設置域名解析:後端

www.aaa.top --> 官網,另做他用,這裏無論
wx.aaa.top --> 小下程序發佈環境調用
wx-dev.aaa.top --> 小程序發佈環境調用centos

同理,如需設置多個小程序,能夠再添加多個二級域名

wx2.aaa.top --> 小下程序發佈環境調用
wx2-dev.aaa.top --> 小程序發佈環境調用

添加方法:

在騰訊雲中,已有前面兩行,我這裏添加後面兩行

記錄類型 記錄類型 線路類型 記錄值
@ A 默認 119.29.107.153
www A 默認 119.29.107.153
wx A 默認 119.29.107.153
wx-dev A 默認 119.29.107.153

申請證書

由於小程序要求使用https協議,因此須要使用到ssl證書,在騰訊雲中,能夠申請到免費的證書。
進入騰訊雲ssl證書管理頁面爲咱們的二級域名申請證書。
這裏申請兩個,wx.aaa.topwx-dev.aaa.top,騰訊雲這裏申請大約要一個小時。
申請完成後,將兩個證書下載到本地。在把其中Nginx文件夾中的兩個文件解壓出來,上傳到服務器中,保存至/data/release/nginx/

2、主機配置

這裏使用的是,nginx + node.js 搭建後臺
nginx可實現反代理,能夠將不一樣的域名分配給不一樣的主機或者端口。
node.js用來寫後臺程序,你也能夠用php等其餘後端語言。

安裝 Nginx

這裏使用CentOS自帶的yum直接安裝 Nginx

yum -y install nginx

安裝完成以後會顯示 Complete!,能夠經過以下命令檢查Nginx是否安裝成功:

nginx -v

這個命令會顯示 Nginx 的版本號,若是顯示以下信息,則安裝成功:

[root@VM_0_16_centos ~]# nginx -v  
nginx version: nginx/1.12.2

配置 Nginx 反向代理

參考 nginx配置
/etc/nginx/conf.d/中添加wxapp.conf:
注意,下面的wx.aaa.top應該替換成本身的wx二級域名,這樣就已經使得wx.aaa.top解析到本身的主機,且反代理到4001端口

# 將使用80端口http協議的wx.aaa.top所有轉到https協議上
server {
    listen      80;
    server_name wx.aaa.top;

    rewrite ^(.*)$ https://$server_name$1 permanent;
}
server {
    listen      443;
    server_name wx.aaa.top;

    ssl on;
                                       #  證書保存的地方
    ssl_certificate           /data/release/nginx/1_wx.aaa.top_bundle.crt;
    ssl_certificate_key       /data/release/nginx/2_wx.aaa.top.key;

    ssl_session_timeout       5m;
    ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers               ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
    ssl_session_cache         shared:SSL:50m;
    ssl_prefer_server_ciphers on;

    location / {
        # 反代理到其餘域名:
        #proxy_pass http://app_weapp;
        # 反代理到4001端口
        proxy_pass http://localhost:4001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        
    }
}

同理,能夠再爲wx-dev.aaa.top添加反代理到4002端口.
這時,在瀏覽器中輸入,http://wx.aaa.top/,會跳轉到https://wx.aaa.top/
且以下顯示502信息,則到這一步,都是正確的。

502 Bad Gateway
nginx/1.12.2

安裝node.js

下載node.js壓縮包

先在node官網找到對應系統版本的node
複製連接,我這裏找到的是,linux64位,複製連接https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz
在linux下輸入

#wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz

解壓

#xz -d node-v8.9.4-linux-x64.tar.xz
#tar -xf node-v8.9.4-linux-x64.tar

解壓以後獲得的文件夾移動到/usr/local/
爲了方便這裏吧文件夾更名爲node
測試可否運行
進入node/bin/
運行./node -v./npm -v
能顯示對應版本則爲正確

配置node.js

要想node可以在全局可以使用,須要添加鏈接,在控制檯輸入下面命令可以實現。其中/usr/local/nodebin/node爲二進制node.js文件的目錄,根據上面的步驟,我已經把node整個文件夾移動到/usr/local因此這裏是:

#ln -s /usr/local/node/bin/node /usr/local/bin/node 
#ln -s /usr/local/node/bin/npm /usr/local/bin/npm

測試

[root@VM_0_16_centos bin]# node -v
v8.9.4
[root@VM_0_16_centos bin]# npm -v
5.6.0
到這裏node就安裝完成了

測試nginx和node.js可否正常工做

新建一個文件
vim server.js
server.js中保存下面代碼

var http = require('http');

http.createServer(function (request, response) {

    // 發送 HTTP 頭部 
    // HTTP 狀態值: 200 : OK
    // 內容類型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 發送響應數據 "Hello World"
    response.end('Hello World\n');
}).listen(4001);

// 終端打印以下信息
console.log('Server running at http://127.0.0.1:4001/');

啓動服務器。
node server.js
在本地電腦瀏覽器中,輸入wx.aaa.top。顯示Hello World則域名配置完成
同理,能夠測試wx-dev.aaa.top

3、小程序後臺設置

進入微信公衆平臺
進入設置開發設置服務器域名修改
request合法域名一行填入咱們的兩個二級域名

wx.aaa.top
wx-dev.aaa.top

保存後新建一個小程序,選擇模板

在app.js中發起request

wx.request({
  url: 'https://wx.aaa.top', 
  data: {
    x:10,
    y:20
  },
  header: {
    'content-type': 'application/json' // 默認值
  },
  success: res => {
    if (res.statusCode == 200) {
        console.log(res.data);
    }
  }
});

保存後刷新,能在控制檯中看到,由wx.aaa.top發來的數據,則說明已經成功。

總結

整個交互流程是:

  1. 小程序發起請求,提交一個數據url騰訊後臺
  2. 騰訊後臺再把數據提交給url
  3. 通過域名解析,數據發到了咱們本身的後臺服務器
  4. 服務器獲得了請求,通過nginx進行反代理,把每一個請求分發給各個另外的主機或者端口
  5. 在這裏,nginx將向wx.aaa.top發起的請求分發給了4001端口
  6. 4001端口正由咱們的node.js程序監聽。
    因此請求最後是分發給了node.js程序,它獲得了請求發來的數據,進行處理,併發起響應,再一步步回到客戶端小程序
相關文章
相關標籤/搜索