0%

记录-NodeJS项目部署

服务器购买


鉴于我买的是阿里云的云服务器, 所以接下来的是阿里云的使用。
由于我使用的是密钥登录,所以需要配置密钥对
密钥对会在下面讲,这里就不多说。
由于需要开发端口,所以需要配置安全组

putty

可以通过阿里云提供的服务创建密钥对
https://help.aliyun.com/document_detail/51793.html?spm=5176.2020520101keypair.help.13.26634df5k8AVA0#concept-wy4-th1-ydb
也可以通过PUTTYGEN.EXE
https://www.cnblogs.com/baker95935/p/9810986.html
使用密钥对关联云服务器实例后, 需要重启一下云服务器
https://www.cnblogs.com/baker95935/p/9810435.html
putty 设置 keep live,保证不会一下子就断连
https://www.cnblogs.com/lovewhatIlove/p/16580861.html

我的后端代码是通过私有git 仓库上传的同步的, 前端代码是生成 dist文件夹直接通过 PSCP

pscp -P 22 -i C:\你的私钥文件 -C -r dist username@ip:云服务器的目录
https://www.cnblogs.com/wxsj/p/9816588.html

服务器安装相应环境

nodejs 安装

1
2
3
4
5
wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.gz # 下载nodejs
tar -zxvf node-v12.13.0-linux-x64.tar.gz # 解压
mv node-v12.13.0-linux-x64 /opt/nodejs_12.16 # 移动目录
ln -s /opt/nodejs_12.16/bin/node /usr/local/bin/node
ln -s /opt/nodejs_12.16/bin/npm /usr/local/bin/npm # 软链接

尝试一下

1
2
node -v
npm -v

vim /etc/profile 修改系统配置
source /etc/profile 配置生效
1
2
3
export NODE_HOME=/opt/nodejs12.16/
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules

云服务器上更新 nodejs

2023-12-06 记录一下在云服务器上如何更新nodejs

新属性空值合并运算符 ??在低版本nodejs 会报错,,mongodb 需要更高的nodejs版本

  1. 重新下载一下,nodejs 版本, lts 长期版本已经是18.x 起,所以个人服务器建议至少要下载18.x版本
  2. 查看一下原来的 node,npm, whereis npmls -l /usr/local/bin/node
  3. 删除原来的软链,rm -rf /usr/local/bin/node记住不要最后加 /
  4. 重新生成一下软链,ln -s
  5. vim /etc/profile 修改配置, 修改原理 nodejs位置即可
  6. source /etc/profile 重新加载配置
  7. 配置镜像源

安装pm2

pm2 可以管理多个nodejs项目
npm install -g pm2 这个会有一个问题,
如果你要运行 pm2的话,
node pm2
我的做法是pm2 软链接到 /usr/bin/pm2

重新配置

2023-12-06 记录一下在云服务器上如何更新pm2

  1. 删除软链
  2. npm install pm2, 建立软链

pm2 log

pm2 log, 可以查看日志
.pm2/logs/www-out.log, 查看成功日志
.pm2/logs/www-error.log, 查看失败日志

MongoDB 安装

MongoDB 安装都是安装这个
https://www.runoob.com/mongodb/mongodb-linux-install.html
/opt/mongodb_4.2.23/config.conf 后台启动时的文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#日志文件位置
logpath=/var/log/mongodb/mongodb.log
# 以追加方式写入日志
logappend=true
# 是否以守护进程方式运行
fork = true
# 默认27017
port = 27017
# 数据库文件位置
dbpath= /var/lib/mongodb
# 启用定期记录CPU利用率和 I/O 等待
cpu = true
# 是否以安全认证方式运行,默认是不认证的非安全方式
noauth = true
# auth = true
# 详细记录输出
#verbose = true
bind_ip = 0.0.0.0
# 最大链接数
maxConns = 100
# 防止插入脏数据
objcheck = true
#pidfilepath:进程ID,没有指定则启动时候就没有PID文件
pidfilepath = /var/run/mongo.pid

启动和停止服务的命令
mongod --config /opt/mongodb_4.2.23/config.conf, 启动
mongod --shutdown --config /opt/mongodb_4.2.23/config.conf, 停止服务
mongo, 进入服务器

MongoDB import json 文件

本地导出json, 云上导入时报错,MongoDB Atlas mongoimport issues cannot decode array into a D
解决方案:https://stackoverflow.com/questions/58150528/mongodb-atlas-mongoimport-issues-cannot-decode-array-into-a-d

mongoimport --db [dbName] --collection [collectionName] --file [fileName] --jsonArray

nginx 安装

apt-get install -y nginx

新建配置文件/etc/nginx/conf.d/default.conf
配置文件需要注意

  1. 这个配置需要 location // ,root /dist/ 目录和location 需要判断是否需要加上 /
  2. upstream ... 这段代码是转发给后端接口 3000, 尝试通过 location 匹配但是没成功
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 转发到后端端口3000
    upstream koa.server{
    server localhost:3000;
    }
    server {
    listen 80;
    server_name ip ; # //你的公网ip
    # url 匹配 ip
    location / {
    root /dist/index; # 前端代码目录
    index index.html; # //该文件为目录下的index.html文件
    }
    # url 匹配 ip/mall
    location /mall/{
    alias /opt/mall/dist/;
    index index.html index.html;
    }
    }

学会看日志排查问题

nginx 的日志在 cat /var/log/nginx/access.log
/var/log/nginx/error.log
以下是我遇到配置mall项目时候遇到 403 的问题,
说明大概率是nginx 用户没有权限,
需要改变文件夹的权限 chmod 755 path
https://www.jianshu.com/p/78e5e233bc81

alias 与 root的区别

https://www.jianshu.com/p/a16936455018, alias 与 root 的区别