CentOS 7.3 下部署基于 Node.js的微信小程序商城
2018-01-08 20:19
1161 查看
本文档为微信小程序商城NideShop项目的安装部署教程,欢迎star
NideShop商城api服务:https://github.com/tumobi/nideshop
NideShop微信小程序商城: https://github.com/tumobi/nideshop-mini-program
NideShop后台管理系统: https://github.com/tumobi/nideshop-admin
验证安装是否成功
看到输出版本信息 0.33.5 表示安装成功
查看最新 8.x 版本 Node.js 版本并安装
看到输出版本信息 v8.2.1 表示安装成功
必须安装 Node.js 8.x 以上版本
启动 mysql
查找 root 的初始密码
更改密码
回车后输入查找到的密码,然后按照料提示更改密码
注意新密码必须包含特殊字符、数字、和大小写字母且不得少于8位,否则更改失败。
验证 mysql 是否安装成功
回车后输入查找到的密码,登录成功后的样子
image.png
全局安装 ThinkJS 命令
安装依赖
创建数据库并导入数据
修改 Nideshop 的数据库配置
修改后
注意 encoding,prefix 的值
编译项目
以生产模式启动
打开另一个终端验证是否启动成功
输出 HTTP/1.1 200 OK,则表示成功
** Ctrl + C 停止运行**
为防止后面操作出现[Error] Error: Address already in use, port:8360. 的错误,一定要记得Ctrl + C停止运行,并确保curl -I http://127.0.0.1:8360/不能访问
修改项目根目录下的 pm2.json 为:
修改后的内容如下 :
如果服务器配置较高,可适当调整 max_memory_restart 和instances的值
启动pm2
成功启动
image.png
再次验证是否可以访问
测试本地是否可以正常访问
修改nginx配置
内容如下(只需更改 server 里面的内容)
重新启动nginx并验证nginx是否还可以正常访问
如果返回的是下图的json数据则表示nginx反向代理配置成功
nginx转发成功
注:阿里云默认外网不能访问80/443端口,请更改实例的安全组配置,配置教程:https://help.aliyun.com/document_detail/25475.html?spm=5176.doc25475.3.3.ZAx4Uo
如果 certbot -nginx 这步出错,则执行
重新执行 certbot --nginx
配置自动更新证书
测试浏览器使用https形式访问是否成功
配置https访问成功
打开文件config/api.js,修改NewApiRootUrl为自己的域名
注意https和后面的api/不能少
到此部署成功。如有问题请加QQ群:497145766
NideShop商城api服务:https://github.com/tumobi/nideshop
NideShop微信小程序商城: https://github.com/tumobi/nideshop-mini-program
NideShop后台管理系统: https://github.com/tumobi/nideshop-admin
环境介绍
阿里云 ECS CentOS 7.3 64 云服务器ECS优惠券领取链接更新系统和安装 git、vim、curl
yum update -y yum install curl git -y
通过 nvm 安装 Node.js
安装 nvmcurl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
验证安装是否成功
source ~/.bashrc nvm --version
看到输出版本信息 0.33.5 表示安装成功
查看最新 8.x 版本 Node.js 版本并安装
nvm ls-remote nvm install v8.2.1 node -v
看到输出版本信息 v8.2.1 表示安装成功
必须安装 Node.js 8.x 以上版本
安装 MySQL 5.7
yum install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm -y yum install mysql-community-server -y
启动 mysql
systemctl start mysqld systemctl enable mysqld
查找 root 的初始密码
cat /var/log/mysqld.log | grep password
更改密码
mysql_secure_installation
回车后输入查找到的密码,然后按照料提示更改密码
注意新密码必须包含特殊字符、数字、和大小写字母且不得少于8位,否则更改失败。
验证 mysql 是否安装成功
mysql -uroot -p
回车后输入查找到的密码,登录成功后的样子
image.png
开始运行 NideShop
下载 NideShop 的源码mkdir /var/www cd /var/www git clone https://github.com/tumobi/nideshop
全局安装 ThinkJS 命令
npm install -g think-cli thinkjs -v
安装依赖
cd /var/www/nideshop npm install
创建数据库并导入数据
mysql -uroot -p -e "create database nideshop character set utf8mb4" mysql -uroot -p nideshop < /var/www/nideshop/nideshop.sql
修改 Nideshop 的数据库配置
vim src/common/config/adapter.js
修改后
24 /** 25 * model adapter config 26 * @type {Object} 27 */ 28 exports.model = { 29 type: 'mysql', 30 common: { 31 logConnect: isDev, 32 logSql: isDev, 33 logger: msg => think.logger.info(msg) 34 }, 35 mysql: { 36 handle: mysql, 37 database: 'nideshop', 38 prefix: 'nideshop_', 39 encoding: 'utf8mb4', 40 host: '127.0.0.1', 41 port: '3306', 42 user: 'root', 43 password: '你的密码', 44 dateStrings: true 45 } 46 };
注意 encoding,prefix 的值
编译项目
npm run compile
以生产模式启动
node production.js
打开另一个终端验证是否启动成功
curl -I http://127.0.0.1:8360/
输出 HTTP/1.1 200 OK,则表示成功
** Ctrl + C 停止运行**
为防止后面操作出现[Error] Error: Address already in use, port:8360. 的错误,一定要记得Ctrl + C停止运行,并确保curl -I http://127.0.0.1:8360/不能访问
使用 PM2 管理服务
安装配置 pm2npm install -g pm2
修改项目根目录下的 pm2.json 为:
vim pm2.json
修改后的内容如下 :
{ "apps": [{ "name": "nideshop", "script": "production.js", "cwd": "/var/www/nideshop", "exec_mode": "fork", "max_memory_restart": "256M", "autorestart": true, "node_args": [], "args": [], "env": { } }] }
如果服务器配置较高,可适当调整 max_memory_restart 和instances的值
启动pm2
pm2 start pm2.json
成功启动
image.png
再次验证是否可以访问
curl -I http://127.0.0.1:8360/
使用 nginx 做反向代理
yum install nginx -y systemctl start nginx.service systemctl enable nginx.service
测试本地是否可以正常访问
curl -I localhost
修改nginx配置
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak vim /etc/nginx/nginx.conf
内容如下(只需更改 server 里面的内容)
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; server_name nideshop.com www.nideshop.com; # 改成你自己的域名 root /var/www/nideshop/www; set $node_port 8360; index index.js index.html index.htm; if ( -f $request_filename/index.html ){ rewrite (.*) $1/index.html break; } if ( !-f $request_filename ){ rewrite (.*) /index.js; } location = /index.js { proxy_http_version 1.1; 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_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:$node_port$request_uri; proxy_redirect off; } location ~ /static/ { etag on; expires max; } } }
重新启动nginx并验证nginx是否还可以正常访问
nginx -t systemctl restart nginx.service curl http://127.0.0.1/
如果返回的是下图的json数据则表示nginx反向代理配置成功
nginx转发成功
注:阿里云默认外网不能访问80/443端口,请更改实例的安全组配置,配置教程:https://help.aliyun.com/document_detail/25475.html?spm=5176.doc25475.3.3.ZAx4Uo
配置https访问
安装certbotyum install epel-release -y yum install certbot-nginx -y certbot --nginx
如果 certbot -nginx 这步出错,则执行
pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
重新执行 certbot --nginx
配置自动更新证书
certbot renew --dry-run
测试浏览器使用https形式访问是否成功
配置https访问成功
修改NideShop微信小程序客户端的配置
微信小程序商城客户端GitHub: https://github.com/tumobi/nideshop-mini-program打开文件config/api.js,修改NewApiRootUrl为自己的域名
var NewApiRootUrl = 'https://www.nideshop.com/api/';
注意https和后面的api/不能少
到此部署成功。如有问题请加QQ群:497145766
原文链接:https://www.jianshu.com/p/5d5497697b0a
相关文章推荐
- 通过新浪云部署NideShop微信小程序商城(基于Node.js+MySQL+ThinkJS)
- NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦
- Ubuntu 16.04 下部署Node.js+MySQL微信小程序商城
- 基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)
- Ubuntu 16.04 下部署Node.js+MySQL微信小程序商城
- 通过新浪云部署Node.js微信小程序商城(不用买域名、不用备案、不用配置https)
- 通过新浪云部署Node.js微信小程序商城(不用买域名、不用备案、不用配置https)
- Ubuntu 16.04 下部署Node.js+MySQL微信小程序商城
- 基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)
- 基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)
- 仿网易严选手机版node.js微信小程序商城
- 微信小程序基于node.js的websocket服务器搭建和SSL证书申请、配置全家桶
- 微信小程序完整精品demo:移动小商城:基于node,包含前后台
- 微信小程序完整精品demo:移动小商城:基于node,包含前后台
- 微信小程序支付过程详解,基于node.js的后台
- (开源)基于vue, react, node.js, go开发的微商城(含微信小程序)
- 基于centos7.3 3.10-514的LVS双机负载均衡部署方案
- 【阿里云】node.js部署项目到阿里云ECS(CentOS 7),并实现nginx域名绑定
- 微信小程序 Node.js (基础六) Buffer(缓冲区)
- 微信小程序 Node.js (基础七) Stream(流)