您的當前位置: 首頁>>新聞中心>>行業資訊

部署微信小程序服務器

瀏覽量(105310) 時間:2020-09-09

為什么有了node還要安裝nginx?

可以使用nginx代理來實現負載均衡等功能,方法后續擴展。
環境

我是購買了一個騰訊云服務,并且購買了一個域名并且備案。

服務器安裝的系統是Centos 7.6
安裝Nginx

yum -y install nginx

nginx -v

開啟nginx

nginx

重啟nginx

nginx -s reload

停止nginx

nginx -s stop
安裝Node.js

Wafer 的 Demo 需要 7.6 以上版本的 Node.js 才能運行,目前最新版本為 8.x,yum 本身不提供 Node.js 的源,所以首先我們得切換源:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

可以把上面的8.x改為最新版本12.x,因為現在node的最新版本是12
yum -y install nodejs

 

node -v

查看到版本信息代表安裝成功
安裝Mysql

下載mysql安裝包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安裝mysql源

yum localinstall mysql57-community-release-el7-8.noarch.rpm

安裝MySQL

yum install mysql-community-server

啟動MySQL服務

systemctl start mysqld

查看MySQL的啟動狀態

systemctl status mysqld

mysql安裝完成之后,在/var/log/mysqld.log文件中給root生成了一個默認密碼。通過下面的方式找到root默認密碼:
grep 'temporary password' /var/log/mysqld.log

登錄mysql:登錄后會進入mysql的命令行模式
mysql -u root -p

 

mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼!';

新建數據庫

新建一個數據庫名為 cAuth,排序規則為 utf8mb4_unicode_ci。數據庫名必須和小程序文件中的保持一致,可自行修改。命令結束別忘了寫分號;如果輸入命令后顯示的是 -> 提示符,很有可能是沒寫分號。

mysql> CREATE DATABASE IF NOT EXISTS cAuth DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
開啟SFTP

SFTP 是一種安全的文件傳輸協議,我們可以通過 SFTP 把本地的文件上傳到服務器上,通過以下命令檢查 sftp 狀態:

service sshd status

看到綠色的actiov(running)狀態表示服務已經開啟
配置Https

完成以上準備工作,就要開始配置 Nginx 和 HTTPS 了,首先需要申請一個 SSL 證書,可以到騰訊云申請免費的 SSL 證書,申請成功之后下載證書,并把壓縮包中 Nginx 目錄下的證書文件通過 SFTP 上傳到服務器的 /data/release/nginx 目錄,如果沒有這個目錄則新建:

上傳完證書以后,可以開始配置 Nginx,進入服務器的 /etc/nginx/conf.d 目錄,新建一個 weapp.conf 文件,將文件拷貝到本地,打開編輯,寫入如下配置(請將配置里 wx.ijason.cc 修改為你自己的域名,包括證書文件):
upstream app_weapp { server localhost:5757; keepalive 8; } server { listen 80; server_name 替換成服務器域名; rewrite ^(.*)$ https://$server_name$1 permanent; } server { listen 443 ssl; server_name 替換成服務器域名; ssl_certificate /data/release/nginx/1_wx.ijason.cc_bundle.crt; ssl_certificate_key /data/release/nginx/2_wx.ijason.cc.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_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; } }

其中有一行是

listen 443 ssl;

官方版本是

listen 443;

ssl on;

是版本差異導致的。

修改完將這個文件上傳到服務器上,然后在 ssh 中輸入:

nginx -t

看結果是否OK

然后輸入nginx啟動服務

測試一下接口是否可以,現在是應該顯示502錯誤頁面
上傳服務器代碼

Github倉庫地址:Wafer2-startup ,使用小程序開發工具開發工具打開Demo源碼(別忘了填寫AppID)

配置server/config.js
const CONF = { port: '5757', rootPathname: '' /data/release/weapp' , //服務器上server文件夾地址與此處一致 // 填寫微信小程序 App ID appId: 'wx33333', // 填寫微信小程序 App Secret appSecret: 'wx22222', // 是否使用騰訊云代理登錄小程序 useQcloudLogin: false, // 可直接使用微信登陸小程序 因為使用阿里云改為false /** * MySQL 配置,用來存儲 session 和用戶信息 * 若使用了騰訊云微信小程序解決方案 * 開發環境下,MySQL 的初始密碼為您的微信小程序 appid */ mysql: { host: '服務器IP',//很多文檔都寫的云數據庫內網IP,關于這一點我寫的服務器公網IP一樣可以用,不太了解 port: 3306, user: 'root', db: 'cAuth', pass: '服務器數據庫密碼',//之前操作修改過 char: 'utf8mb4' }, cos: {//這個地區沒什么影響,可以不改 /** * 區域 * 華北:cn-north * 華東:cn-east * 華南:cn-south * 西南:cn-southwest * 新加坡:sg * @see https://cloud.tencent.com/document/product/436/6224 */ region: 'cn-south', // Bucket 名稱 fileBucket: 'qcloudtest', // 文件夾 uploadFolder: '' }, // 微信登錄態有效期 wxLoginExpires: 7200, // 其他配置 ... serverHost: '你的域名', //以下配置可以留空不填 但是參數一定要有 一定要有 一定要有 否則會報錯,node啟動不了 tunnelServerUrl: '',//騰訊云信道服務地址 很多文檔里寫的地址打開直接404 tunnelSignatureKey: '', // 可以注冊一個騰訊云賬號,獲取一下配置。騰訊云相關配置可以查看云 API 秘鑰控制臺: https://console.cloud.tencent.com/capi qcloudAppId: '你的騰訊云 AppID', qcloudSecretId: '你的騰訊云 SecretId', qcloudSecretKey: '你的騰訊云 SecretKey', wxMessageToken: 'weixinmsgtoken', networkTimeout: 30000 } module.exports = process.env.NODE_ENV === 'local' ? Object.assign({}, CONF, require('./config.local')) : CONF;

都配置好以后,將server文件里的所有代碼上傳到服務器上的/data/release/weapp目錄下,要與前文的 rootPathname: '' /data/release/weapp' 一致。
服務器安裝依賴

進入到weapp目錄里,輸入以下命令切換npm 源到淘寶鏡像,防止官方鏡像下載失?。?不切換也無所謂)
npm config set registry https://registry.npm.taobao.org

使用npm全局安裝pm2

npm i -g pm2

然后常規操作,安裝package.json里的依賴:

npm i

使用 Demo 代碼里的 tools/initdb.js 工具初始化數據庫:

node tools/initdb.js

初始化成功則會提示“數據庫初始化成功”
啟動項目

npm start

這里需要學習 node 的一些插件 pm2 nodemon 這些都是干啥的,有什么洋的啟動機制。

順利完成以上操作后,也就完成了 Wafer2 Demo 在自己服務器上的部署。

直接訪問 http://你的域名/weapp/login,會提示:{"code":-1,"error":"ERR_HEADER_MISSED"},則表示配置成功?,F在就可以使用開發者工具來進行聯調測試啦?。ńK于完成了?。。。?br/>


以上文章來源于網絡,如有侵權請聯系創一網的客服處理。謝謝!

最新文章
亚洲国产AV一区二区三区久久_乱人妻中文字幕视频_91麻豆精品国产一级_精品国产欧美另类一区
无码精品A∨在线观看十八禁软件| 天天爽夜夜爽视频精品| 亚洲一级aⅴ无码毛片中文国产翁| 久久国产精品尤物网站| 亚洲视频国产91www.亚洲永远免费视频| 无码国产精品一区二区免费I6| 日产亚洲一区二区三区| 日本真人做人A爱视频| 无码A级毛片免费视频内谢5J| 国产91免费视频|