环境说明:我的系统是Ubuntu 18.04 64位,CPU&内存是1核2 GiB
准备工作
1、下载 node 源文件,我这里安装的版本是 v16.13.2 。终端ssh 连接上自己的服务器,执行下面的命令:
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
2、安装node.js 和淘宝镜像
sudo apt-get install -y nodejs
node -v
npm -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
3、安装 NGINX
sudo apt-get install nginx
nginx -v
4、安装MySQL 客户端,配置密码步骤省略,自行完成
apt-get install mysql-server mysql-client
我这里的 MySQL 安装的版本是5.7
开放端口和配置域名
1、由于我的域名和服务器都是阿里云的,登入阿里云,找到网络与安全–安全组–配置规则–手动添加, 填写端口范围为3000/3000 ,授权对象为0.0.0.0/0
2、解析域名,此操作自行完成。
上传数据库
1、先将本地数据库导出sql 文件保存至桌面,数据库名先用xxx_development
2、修改服务器上项目的数据库配置文件config.json ,配置数据库的账号密码
{
"development": {
"username": "你的数据库账号",
"password": "你的数据库密码",
"database": "xxx_development",
"host": "127.0.0.1",
"dialect": "mysql",
"timezone": "+08:00"
},
"test": {
"username": "root",
"password": null,
"database": "database_test",
"host": "127.0.0.1",
"dialect": "mysql",
"timezone": "+08:00"
},
"production": {
"username": "你的数据库账号",
"password": "你的数据库密码",
"database": "xxx_development",
"host": "127.0.0.1",
"dialect": "mysql",
"timezone": "+08:00"
}
}
上传项目
1、本地开发好的接口项目除去node_modules 文件夹,其余文件全部打包Zip 格式, 通过ftp 软件上传至项目目录,我这里存放项目目录的文件夹是/var/www 。
2、进入/var/www 执行下面的命令进行解压
unzip xxx.zip
注意:上传时不要忘记了.env 文件
3、进入项目目录,安装依赖
cd /var/www/xxx
cnpm i
4、测试接口访问
服务器上 `cd` 到项目目录,执行 `npm start`
打开`Google`浏览器,访问`http://ip.xxx.xxx.xx:3000`
确认能访问到数据即可,然后停止npm start 服务。
安装 pm2
pm2 是一个进程管理工具,可以用它来管理你的node 进程,并查看node 进程的状态,当然也支持性能监控,进程守护,负载均衡等功能。
pm2 需要全局安装
cnpm i -g pm2
pm2 start ./bin/www
pm2 status
pm2 stop ./bin/www
pm2 restart ./bin/www
尝试重新访问接口是否正常。
生成配置文件
1、创建配置文件
cd /var/www/xxx
pm2 ecosystem
module.exports = {
apps : [{
name: "xxx",
script: "./bin/www",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
}
2、启动配置,以上步骤完成后,通过执行下面的命令启动配置
pm2 start ecosystem.config.js --env production
将项目代码中的数据库和客户端中的数据库都改名为xxx_production 。
配置站点
1、创建配置文件
cd /etc/nginx/sites-available
cp default xxx
vim xxx
server
{
listen 80;
server_name xxx.xxx.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 80;
server_name xxx.xxx.com;
return 301 https://xxx.xxx.com$request_uri;
}
server{
listen 443 ssl;
server_name xxx.xxx.com;
ssl_certificate /opt/nginx/xxx.xxx.com.pem;
ssl_certificate_key /root/certs/xxx.xxx.com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /{
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
2、使配置文件生效
ln -s /etc/nginx/sites-available/xxx /etc/nginx/sites-enabled/xxx
# 检查 nginx
nginx -t
# 重启 nginx
service nginx restart
pm2 有几个命令
pm2 status
pm2 start xxx
pm2 stop xxx
pm2 restart xxx
部署后台
本次项目是基于 vue 写的一个后台管理系统,做完后部署上线。
1、本地打包。进入项目目录,执行 yarn build ,注意:这个命令不是固定的,要看 package.json 里面的 scripts 。打包完成,会出现 dist 文件夹,压缩成 zip 文件。
2、登录自己的服务器,通过 ftp 软件上传至服务器中,然后配置 nginx
server {
listen 80;
root /var/www/admin;
index index.html index.htm index.nginx-debian.html;
server_name admin.xxx.com;
location / {
try_files $uri $uri/ /index.html;
}
}
3、做软链,重启 nginx 4、开启 gzip ,修改 nginx 配置文件:
sudo vim /etc/nginx/nginx.conf
找到以下内容后,取消注释
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
重启 nginx
sudo service nginx restart
5、进入项目目录,解压 zip 文件,完成
|