本文基于以下环境:

  • 腾讯云服务器:Centos 7.5 64 位

安装配置 Nginx 和 HTTPS

安装 Nginx

首先 Node.js 是单进程的,我们可以通过多开 Node.js 并配合 Nginx 来实现多进程 Node.js 负载均衡,然后要做的项目需要用一些前端静态页面需要通过 Nginx 代理,提高性能。并且还需要通过 Nginx 给域名配置 HTTPS。所以首先要安装 Nginx

1
2
3
yum -y install nginx

nginx -v

正常打印Nodej

配置 HTTPS

在阿里云申请且下载 SSL证书 ,然后使用 SFTP 上传到 /data/release/nginx 目录,也可以是别的目录

上传完证Nodejinx,进入服务器的/etc/nginx/conf.d目录,新建一个weapp.conf文件,打开编辑,写入如下配置(将配置里wedolist.zhzh.xyzSSL证书` 路径修改为自己的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
upstream app_weapp {
server localhost:5757;
keepalive 8;
}

server {
listen 80;
server_name wedolist.zhzh.xyz;

rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
listen 443;
server_name wedolist.zhzh.xyz;

ssl on;

ssl_certificate /data/release/nginx/wedolist.zhzh.xyz.crt;
ssl_certificate_key /data/release/nginx/wedolist.zhzh.xyz.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;
}
}

配置完成之后,输入:

1
nginx -t

检测配置文件是否成功,配置成功后,输入 nginx,启动 Nginx。通过配置的域名访问域名,如果跳转到 HTTPS,且显示 502 Bad Gateway,则表示配置成功。

安装配置 MySQL

安装 MySQL

Wafer2小程序NodejMySQL 5.7 及以上版本,这里选择 5.7版本安装

1
2
yum localinstaNodejysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum install myNodejrver

启动 MySQLNodej

第一次安装,设置数据库开机自动启动:

1
2
systemctl enable mysqld
systemctl start mysqld

完成后打印出运行状态,确认 MySQL 是否正常启动:

1
systemctl status mysqld

配置密码

MySQL 第一次启动时,会为 root 用户生成临时密码。通过以下命令找到密码:

1
grep 'temporary password' /var/log/mysqld.log

运行该 mysql_secure_installation 配置 MySQL 的安全性:

1
mysql_secure_installation

系统会要求输入刚才从 log 中打印出来的临时密码,然后根据提示和个人需求设置新密码、是否删除匿名用户等等

配置远程访问

首先登录 MySQL,系统会提示输入数据库 root 用户的密码,输入完成后即进入 mysql shell

1
mysql -uroot -p

进去 mysql shell 后给 root 用户或者其他你需要远程连接的用户权限:

1
2
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '这里改为密码' WITH GRANT OPTION;

修改完成后重启 MySQL 就可以使用 Navicat 等工具远程连接数据库了

安装配置 phpMyAdmin

phpMyAdmin 是一个基于 PHP 的开源工具,它允许用户通过 WebMySQL 数据库交互,管理用户帐户和权限,执行SQL语句,以各种数据格式导入和导出数据等等。

安装 PHP

CentOS 7 附带 PHP 5,但是 phpMyadmin 需要 PHP 7,所以需要自行安装 PHP 7

1
2
3
4
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
yum-config-manager --enable remi-php72
yum install php-fpm php-opcache php-cli php-gd php-curl php-mysql

默认情况下,PHP FPM 使用 apache9000 端口上以用户身份运行。需要将用户更改为 nginxTCP socket 切换到 Unix socket。为此,需要编辑 /etc/php-fpm.d/www.conf

需要修改的内容如下:

1
2
3
4
5
user = nginx
group = nginx
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx

配置 user 是为了控制权限, 读写站点文件.

配置 listen.owner/group 是为了 nginx 有权限和 php-fpm 通信.

phpfpm1
phpfpm2

然后使用一下命令,保证 /var/lib/php 目录具有权限:

1
chown -R root:nginx /var/lib/php

最后启用 PHP FPM 服务:

1
2
systemctl enable php-fpm
systemctl start php-fpm

没有报错就说明启动成功,在 Linux 中没有消息就是好消息

安装 phpMyAdmin

之前已经启用 EPEL 软件包了,这里可以直接进行安装,当然安装完成后需要把根目录的用户组改为 nginx,方便后面使用 nginx 配置

1
2
yum install phpmyadmin
chgrp -R nginx /etc/phpMyAdmin

设置 Nginx 和 phpMyAdmin

跟之前配置小程序域名一样,上传访问 phpMyAdmin 的域名的证书;进入服务器的 /etc/nginx/conf.d 目录,新建一个 phpmyadmin.conf 文件,打开编辑,写入如下配置(将配置里 XXX.zhzh.xyzphpmyadmin安装根目录 和 SSL证书 路径修改为自己的):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
server {
listen 80;
server_name XXX.zhzh.xyz;

rewrite ^(.*)$ https://$server_name$1 permanent;
}

server {
listen 443;
server_name XXX.zhzh.xyz;

ssl on;

ssl_certificate /data/release/nginx/XXX.zhzh.xyz.pem;
ssl_certificate_key /data/release/nginx/XXX.zhzh.xyz.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 / {
root `phpmyadmin`安装根目录;
index index.php;
}
location ~ \.php$ {
root `phpmyadmin`安装根目录;
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~ \.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
root `phpmyadmin`安装根目录;
}
}

安装 Nodejs

WaferDemo 需要 7.6 以上版本的 Node.js 才能运行,目前最新稳定版本为 10.xyum 本身不提供 Node.js 的源,所以首先我们得切换源:

1
curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -

接着就可以直接通过 yum 安装了:

1
yum -y install nodejs

同理,我们可以通过如下命令验证 Node.js 是否安装成功:

1
node -v

该命令会返回当前 Node.js 的版本号,如果你看到了版本号大于 7.6,则 Node.js 安装成功。之后需要使用 npm 安装腾讯提供的 wafer2,这里先把 npm 源切换到腾讯云镜像,防止官方镜像下载失败:

1
npm config set registry http://mirrors.tencentyun.com/npm/

配置小程序服务端

下载并修改配置文件

Wafer2-startup 仓库下载最新的 Demo 代码,修改 server/config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const CONF = {
port: '5757',
rootPathname: '',

// 微信小程序 App ID
appId: '',

// 微信小程序 App Secret
appSecret: '',

// 是否使用腾讯云代理登录小程序
useQcloudLogin: true, // 可以直接微信登录小程序

/**
* MySQL 配置,用来存储 session 和用户信息
* 若使用了腾讯云微信小程序解决方案
* 开发环境下,MySQL 的初始密码为您的微信小程序 appid
*/
mysql: {
host: '云数据库内网IP',
port: 3306,
user: 'root',
db: 'cAuth',
pass: '云数据库密码',
char: 'utf8mb4'
},

cos: {
/**
* 区域
* @see https://cloud.tencent.com/document/product/436/6224
*/
region: 'ap-guangzhou',
// Bucket 名称
fileBucket: 'qcloudtest',
// 文件夹
uploadFolder: ''
},

// 微信登录态有效期
wxLoginExpires: 7200,

// 其他配置 ...
serverHost: '你的域名',
tunnelServerUrl: 'https://tunnel.ws.qcloud.la',
tunnelSignatureKey: '27fb7d1c161b7ca52d73cce0f1d833f9f5b5ec89',
// 腾讯云相关配置可以查看云 API 秘钥控制台:https://console.qcloud.com/capi
qcloudAppId: '你的腾讯云 AppID',
qcloudSecretId: '你的腾讯云 SecretId',
qcloudSecretKey: '你的腾讯云 SecretKey',
wxMessageToken: 'weixinmsgtoken',
networkTimeout: 30000
}

module.exports = CONF

安装并启动服务

安装 pm2作为后台服务管理工具

1
npm install -g pm2

server 上传到服务器,使用 npm install 安装程序需要使用的包。然后打开之前配置好的 phpMyAdmin 新建数据库,数据库名需要跟之前的配置文件写得一样,编码为 utf8mb,然后使用以下命令初始化数据库:

1
node tools/initdb.js

最后使用 pm2 开启服务

1
pm2 start app.js