zoukankan      html  css  js  c++  java
  • nodejs+express 部署到Linux服务器 King

    一,部署整体流程

    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
    

      

  • 相关阅读:
    Django ORM操作
    两张表是一对一的关系为什么不直接都放在一张表里面?
    TCP、UDP 详解
    如何使用Xshell连接虚拟机
    selenium中常见的无法定位元素问题
    python中生产者消费者模式
    Selenium 点击后跳转至新窗口无法定位元素问题(element not interactable)
    linux 网络管理
    Linux文件权限
    linux 用户管理命令
  • 原文地址:https://www.cnblogs.com/front-web/p/15672575.html
Copyright © 2011-2022 走看看