美文网首页
pm2 部署 node

pm2 部署 node

作者: chliar | 来源:发表于2018-04-07 20:22 被阅读0次

    pm2 部署 node

    Node安装以及部署 去官网下载最新版本,分两种一种是源码,一种是编译后的文件。下面是官网下载地址: https://nodejs.org/en/download/current/ 分不同的版本 win linux mac 下载对应版本

      以linux Windows为例 
      Linux 下安装:(方法一)
     1.1把下载的tar.gz压缩包文件解压
     1.2解压命令: tar -zxvf (压缩包的名字.tar.gz)
     1.3解压完成后就可以在bin文件中看见 node 和 npm 文件 在当前目录下执行./node可以执行node客户端
     1.4设置客户端:两条命令 node 和 npm 
       (kun/mysofltware/node-v0.10.28-linux-x64/bin/node)node文件存放位置根据自己存放位置而定
    
    ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/node /usr/local/bin/node 
    ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/npm /usr/local/bin/npm
    

    1.5在node目录下执行pwd 获取node所在的目录,要把这个目录添加到PATH环境变量
    1.6执行su 输入密码切换到root用户 执行命令 vi/etc/profile

    1.7在vi 环境下 点击 i 进入插入状态,在export PATH的上一行添加如下内容 (环境变量中的内容 是以冒号分割的)

    PATH=$PATH:/home/kun/mysofltware/node-v0.10.26-linux-x64/bin 
    

    编辑完成后按Esc键 然后输入 : wq 按回车保存退出。
    1.8退出vi ,执行 source /etc/profile 可以让变量生效
    1.9然后执行 echo $PATH ,看看输出内容是否包含自己添加的内容

    Linux 下安装:(方法二)

    2.1把下载的source code源码解压
    2.2 以此执行以下命令 :
    1、cd node-v0.10
    2、 ./configure
    3、Make
    4、Make install cp /usr/local/bin/node /usr/sbin/

    Linux 下安装:(方法三)【不推荐】

    apt-get 方式 Sudo apt-get install node.js Sudo apt-get install npm

    Windows 下安装比较简单下载下一步(不赘述)安装redis数据库

    3.1 下载源码,解压缩后编译源码。

    wget http://download.redis.io/releases/redis-2.8.3.tar.gz
    (http://download.redis.io/releases/redis-2.8.3.tar.gz)
    tar xzf redis-2.8.3.tar.gz
    cd redis-2.8.3
    make

    3.2编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、 redis-cli和redis.conf。然后拷贝到一个目录下。

    mkdir /usr/redis

    cp redis-server /usr/redis 
    cp redis-benchmark /usr/redis 
    cp redis-cli /usr/redis 
    cp redis.conf /usr/redis 
    cd /usr/redis 
    

    3.3启动Redis服务 redis-server redis.conf

    3.4然后用客户端测试一下是否启动成功。
    redis-cli redis> set foo bar OK redis> get foo"bar" 代码上传

    4.1打包:命令
    (node_modules .idea .git ne.tar.gz 这些文件不打包减小压缩包大小)
    tar cvzf ne.tar.gz
    ./ --exclude=node_modules
    --exclude=.idea
    --exclude=.git
    --exclude=ne.tar.gz

    4.2上传:命令 $ scp ./ne.tar.gz 主机名[@IP](http://cnodejs.org/user/IP)地址:文件夹的路径

    4.3 执行命令登录远程主机
    ssh 主机名[@IP](http://cnodejs.org/user/IP)地址 然后会提示输入密码

    4.4 cd ls 进入上传压缩包所在的目录 执行 tar -zxvf ne.tar.gz 解压文件
    4.5 npm 安装环境依赖 执行命令 npm install

    部署前查询DNS 端口 root 权限下
    

    5.1 命令:

     $ netstart -ntupl 关闭防火墙root权限下
    

    6.1firewall-cmd --zone=public --add-port=9010/tcp --permanent 6.2 firewall-cmd --reload注:9010处为项目需要开启的端口号 安装 pm2

    7.1 su 获得 root 权限下下载pm2
    命令: 全局安装: npm install pm2 -g
    启动: pm2 start www 启动进程

    8.2 安装开机自启动 在root 权限下 执行如下命令:
    pm2 startup
    pm2 save
    9.3 一些常用pm2 命令
    查看启动状况 :pm2 list
    重启项目: pm2 restart
    关闭: pm2 stop

    使用命令说明:
    参数说明:
    –watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。

    -i –instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。

    –ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。
    比如 –ignore-watch=”test node_modules “some scripts”“

    -n –name:应用的名称。查看应用信息的时候可以用到。

    -o –output :标准输出日志文件的路径。

    -e –error:错误输出日志文件的路径。

    –interpreter:the interpreter pm2 should use for executing app (bash, python…)。
    比如你用的coffee script来编写应用。

    完整命令行参数列表:地址

    pm2 start app.js –watch -i 2
    

    重启:
    pm2 restart app.js

    停止:
    停止特定的应用。可以先通过pm2 list获取应用的名字(–name指定的)或者进程id。
    pm2 stop app_name|app_id

    如果要停止所有应用,可以:
    pm2 stop all

    删除

    pm2 stop app_name|app_id 
    pm2 stop all
    

    查看进程状态
    pm2 list

    自动重启
    pm2 start app.js –watch
    *这里是监控整个项目的文件

    日志查看

    除了可以打开日志文件查看日志外,还可以通过pm2 logs来查看实时日志。

    pm2 logs

    更新pm2
    pm2 save# 记得保存进程状态
    npm install pm2 -g
    pm2 update

    附pm2命令:
    
    $ npm install pm2 -g     # 命令行安装 pm2 
    $ pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js 
                            # 也可以把'max' 参数传递给 start
                            # 正确的进程数目依赖于Cpu的核心数目
    $ pm2 start app.js --name my-api # 命名进程
    $ pm2 list               # 显示所有进程状态
    $ pm2 monit              # 监视所有进程
    $ pm2 logs               # 显示所有进程日志
    $ pm2 stop all           # 停止所有进程
    $ pm2 restart all        # 重启所有进程
    $ pm2 reload all         # 0 秒停机重载进程 (用于 NETWORKED 进程)
    $ pm2 stop 0             # 停止指定的进程
    $ pm2 restart 0          # 重启指定的进程
    $ pm2 startup            # 产生 init 脚本 保持进程活着
    $ pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
    $ pm2 delete 0           # 杀死指定的进程
    $ pm2 delete all         # 杀死全部进程
    

    配置pm2启动文件

    在项目根目录添加一个processes.json:

    内容如下:

    {   "apps" :
     [{
    "name": "mywork",
    "cwd": "/srv/node-app/current",
    "script": "bin/www",
    "log_date_format": "YYYY-MM-DD HH:mm Z",
    "error_file": "/var/log/node-app/node-app.stderr.log",
    "out_file": "log/node-app.stdout.log",
    "pid_file": "pids/node-geo-api.pid",
    "instances": 6,
    "min_uptime": "200s",
    "max_restarts": 10,
    "max_memory_restart": "1M",
    "cron_restart": "1 0 * * *",
    "watch": false,
    "merge_logs": true,
    "exec_interpreter": "node",
    "exec_mode": "fork",
    "autorestart": false,
    "vizion": false
    }]
    }
    

    说明:

    • apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
    • name:应用程序名称
    • cwd:应用程序所在的目录
    • script:应用程序的脚本路径
    • log_date_format:
    • error_file:自定义应用程序的错误日志文件
    • out_file:自定义应用程序日志文件
    • pid_file:自定义应用程序的pid文件
    • instances:
    • min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
    • max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
    • cron_restart:定时启动,解决重启能解决的问题
    • watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
    • merge_logs:
    • exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
    • exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
    • autorestart:启用/禁用应用程序崩溃或退出时自动重启
    • vizion:启用/禁用vizion特性(版本控制)

    可以通过pm2 start processes.json来启动。

    也可以把命令写在package.json里。如下:

    image.png

    通过npm run pm2来启动。

    启动任务命令:

              "pm2 start py文件或其他文件  -x --interpreter 程序如python"
              "pm2 start scrapy_biying_ask.py -x --interpreter python"
    

    相关文章

      网友评论

          本文标题:pm2 部署 node

          本文链接:https://www.haomeiwen.com/subject/fifuhftx.html