nodejs+express 部署到Linux服务器

一,部署整体流程

  1. 本地express项目传输到Linux服务器上(没有上传node_module)
  2. 在服务器上安装node_module包
  3. 使用pm2管理node进程 

二,部署过程

  1. 查看Linux上的node版本,一般服务器自带版本都比较低 

node -v 

       v6.17.1版本太低了,需要升级版本到V10以上

  2. 升级node版本

# 清除node缓存
npm cache clean --force
# 安装n模块管理node版本
npm install -g n
# 查看n版本
n -V
# 安装node最新版本
n latest
# 查看安装后的版本
node -v

  3. 安装pm2模块

npm install -g pm2

  4. 进入express项目根目录下,启动项目

# 启动项目下的www文件,并命名进程
pm2 start ./bin/www --name short-video-api --watch

# 查看启动日志
pm2 logs

  5. 如果启动日志没有报错,并出现启动打印信息,则启动成功,按照设定的端口访问(确定端口对外是开放的)

注:还可以自定义端口启动

pm2 start ecosystem.config.js --env production 
//ecosystem.config.js
module.exports = {
  apps: [
    {
      name: 'short-video-api',
      watch: true,
      script: './bin/www',
      env_production: {
        HOST: '0.0.0.0',
        PORT: 3001,
        NODE_ENV: 'production',
      },
    },
  ],
}

  

三,服务对外支持https访问,通过nginx转发

server {
        listen       443;
        server_name  localhost;
        
        ssl on;
        root html;
        index index.html index.htm;
        ssl_certificate      /usr/local/nginx/5220423.pem;
        ssl_certificate_key  /usr/local/nginx/5220423.key;

       #ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
        ssl_prefer_server_ciphers on;

        location / {
            root /var/www/html;
            index  index.html index.htm;
        }
        location /short-video-api {
            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 Connection "";
            proxy_pass http://127.0.0.1:3000;// nodejs项目端口
            proxy_redirect default;        
        }
    }

  

四,pm2常用命令  

详情参考官网

$ pm2 start app.js # 启动app.js应用程序

$ pm2 start app.js -i 4        # cluster mode 模式启动4个app.js的应用实例

# 4个应用程序会自动进行负载均衡

$ pm2 start app.js --name="api" # 启动应用程序并命名为 "api"

$ pm2 start app.js --watch      # 当文件变化时自动重启应用

$ pm2 start script.sh          # 启动 bash 脚本

$ pm2 list                      # 列表 PM2 启动的所有的应用程序

$ pm2 monit                    # 显示每个应用程序的CPU和内存占用情况

$ pm2 show [app-name]          # 显示应用程序的所有信息

$ pm2 logs                      # 显示所有应用程序的日志

$ pm2 logs [app-name]          # 显示指定应用程序的日志

$ pm2 flush                       # 清空所有日志文件

$ pm2 stop all                  # 停止所有的应用程序

$ pm2 stop 0                    # 停止 id为 0的指定应用程序

$ pm2 restart all              # 重启所有应用

$ pm2 reload all                # 重启 cluster mode下的所有应用

$ pm2 gracefulReload all        # Graceful reload all apps in cluster mode

$ pm2 delete all                # 关闭并删除所有应用

$ pm2 delete 0                  # 删除指定应用 id 0

$ pm2 scale api 10              # 把名字叫api的应用扩展到10个实例

$ pm2 reset [app-name]          # 重置重启数量

$ pm2 startup                  # 创建开机自启动命令

$ pm2 save                      # 保存当前应用列表

$ pm2 resurrect                # 重新加载保存的应用列表

$ pm2 update                    # Save processes, kill PM2 and restore processes

$ pm2 generate                  # Generate a sample json configuration file

  

 

posted @ 2021-12-10 16:34  King-Hao  阅读(1463)  评论(0编辑  收藏  举报