小程序後臺配置 --- CentOS 7.3 64、nginx、node.js
小程序後臺配置
目的
配置一個小程序後臺的開發、發布環境,同時保留頂級域名另作他用。
需求:
- 一個域名
- 一個主機
- 一個小程序賬號
系統和軟件
這裏使用CentOS 7.3 64位系統
和nginx
、node.js
一、域名到主機
購買域名和主機
這裏我買的是西部數碼的域名和騰訊雲的主機
解析域名到主機服務商
如果主機和域名是一個服務商,則跳過這一步
到域名購買商處,把域名解析到主機運營商,具體方法去主機運營商的域名解析查看
如,騰訊雲主機的解析方法是,
請到域名註冊商處將DNS修改為:f1g1ns1.dnspod.netf1g1ns2.dnspod.net
修改DNS服務器需要最長72個小時的全球生效時間,請耐心等待。
備案
在主機運營商處,為域名備案
設置二級域名
為什麽要設置二級域名,對我個人來說來說,有幾點:
- 域名用於多個網站和多個小程序
- 域名同時用於多個環境:開發環境、正式發布環境
這裏,我們先設置一個wx二級域名,一個wx-dev二級域名:
假設主域名是aaa.top
則在主機服務商上(域名已經解析到了這裏),設置域名解析:
www.aaa.top --> 官網,另作他用,這裏不管
wx.aaa.top --> 小下程序發布環境調用
wx-dev.aaa.top --> 小程序發布環境調用
同理,如需設置多個小程序,可以再添加多個二級域名
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
wx-pre|A|默認|119.29.107.153
申請證書
因為小程序要求使用https
協議,所以需要使用到ssl證書,在騰訊雲中,可以申請到免費的證書。
進入騰訊雲ssl頁面為我們的二級域名申請證書。
wx.aaa.top
和wx-dev.aaa.top
。申請完成後,將兩個證書下載到本地。在把其中Nginx
文件夾中的兩個文件解壓出來,上傳到服務器中,保存至/data/release/nginx/
。
二、主機配置
這裏使用的是,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端口
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;
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
三、小程序後臺設置
進入微信公眾平臺
進入設置
》開發設置
》服務器域名
》修改
在request合法域名
一行填入我們的兩個二級域名
wx.aaa.top
wx-dev.aaa.top
保存後新建一個小程序,選擇模板
在app.jsz中發起request
wx.request({
url: 'https://wx.aaa.top/login',
data: {
x:10,
y:20
},
header: {
'content-type': 'application/json' // 默認值
},
success: res => {
if (res.statusCode == 200) {
console.log(res.data);
}
}
});
保存後,能在控制臺中看到,由wx.aaa.top發來的數據,則說明已經成功。
小程序後臺配置 --- CentOS 7.3 64、nginx、node.js