在CentOS7系统上部署nodejs

来源:互联网 发布:权志龙ins视频软件 编辑:程序博客网 时间:2024/05/23 02:01

在CentOS7系统上部署nodejs

新建用户

  1. 登录root用户,创建新用户

    ssh root@IP (输入密码完成登录)
    adduser tom
    password tom (设置tom用户的密码 或 passwd tom)
    whereis sudoers (查找sudoers文件)
    ls -l /etc/sudoers (查看sudoers文件的权限)
    chmod -v u+w /etc/sudoers (赋予sudoers写的权限)
    vi /etc/sudoers (在root用户下面添加tom用户)
    chmod -v u-w /etc/sudoers
  2. 登录tom用户,创建ssh连接 (在tom文件夹下)

    mkdir .ssh
    chmod 700 .ssh
    ssh-keygen -t rsa -b 4096 -C "email@xx.com" (一路回车,创建秘钥)
    eval "$(ssh-agent -s)"
    cd .ssh
    ssh-add id_rsa (添加秘钥到ssh服务器中,不行的话试试 ssh -add id\_rsa)
    vi authorized_keys (直接退出即可,这样相当于创建了一个有写的权限的文件)
    chmod 600 authorized_keys (600只有属主有读写权限,700只有属主有读、写、执行权限,777所有用户都有读、写、执行权限)
    cat id\_rsa.pub >> authorized\_keys (将id\_rsa.pub的内容添加到authorized_keys中)
    ls -l 查看详情,没问题,进行下一步
  3. 本地电脑ssh配置秘钥

    // 进入c盘的用户/administrator目录下,看是否有.ssh文件夹,若没有,创建一个:
    打开git bash
    cd C/Users/Administrator
    mkdir .ssh
    ssh-keygen -t rsa -b 4096 -C "email@xx.com"
    eval "$(ssh-agent -s)"
    ssh -add: id_rsa (id\_rsa文件的路径)
  4. 将本地公钥放到tom的公钥管理中

    ssh tom@IP + 密码
    vi .ssh/authorized\_keys (将本地的id\_rsa.pub复制粘贴到authorized_keys中,保存退出)
    eval "$(ssh -agent -s)"
    // 测试本地是否可以不需要密码登录服务器

搭建开发的测试环境

  1. 安装系统应用

    sudo yum install vim openssl build-essential libssl-dev wget curl git g++ gcc
    git --version
  2. 安装nvm,在github上找到安装包地址,curl或者wget的都可以,任选其一

    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.3/install.sh | bash
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.3/install.sh | bash
    // 测试是否安装成功:
    nvm -v (报错处理: 在.bash_profile 文件中的PATH后追加 $HOME/tom/.nvm, 相邻的$HOME用半角:隔开)
  3. 安装node(启动新的终端)

    nvm ls-remote (查看可安装的node版本)
    nvm install v6.10.2 (安装某个稳定版本即可,lattest LTS: Boron)
    npm -v
    node -v
  4. 安装nodejs项目依赖包

    npm install pm2 webpack glup grunt-cli express -g
    pm2 -v

项目安装调试

  1. 在tom文件夹下创建一个文件夹nodeapps,里面创建一个测试文件

    mkdir nodeapps
    chmod 700 nodeapps
    vi test/app.js (复制一个简易的node服务器代码)
    node test/app.js (外部能正常访问服务器)
    npm i express body-parser -S
    pm2 start test/app.js (能正常启动,OK)
  2. 本地创建项目,提交到git仓库,然后在服务器上的nodeapps文件夹下:

    git clone "https://git仓库地址"
    npm i
    pm2 start /app.js (app.js的路径)
    // 测试能跑起来,则服务器环境部署完成

项目远程发布

  1. 配置git仓库(以coding.net(国内的,速度快,有免费的私有仓库)的免费仓库为例)
    • 在coding.net创建项目,
    • 在仓库设置中选择部署公钥,分别把本地和远程服务器上的公钥添加到仓库“新建部署公钥”选项中
    • 测试本地上传到这个仓库是否可以通过ssh(点击仓库地址的url前面的https可弹出ssh地址路径,复制即可)的方式免密上传
    • 测试远程服务器clone这个仓库是否可以通过ssh(点击仓库地址的url前面的https可弹出ssh地址路径,复制即可)的方式免密clone
  2. 远程部署发布项目
    • pm2.json配置文件 (配置文件内容详解:http://pm2.keymetrics.io/docs/usage/deployment/)
      1. 该配置文件是个json数组,
      2. 多个服务器同时部署依次放到apps对应的数组中即可
      3. 采用cluster模式启动了4个服务进程;如果服务占用的内存超过300M,会自动进行重启。
      4. 重要: 在部署项目时,需要安装npm依赖时,需要用到:"post-deploy": "npm install && pm2 start app.js",,卸载deploy的production中即可,它会在项目部署到服务器上后,启动前运行npm install 命令安装项目依赖。
  3. 项目远程发布命令:
    • 项目发布命令:pm2 deploy app.json production setup
    • 项目发布命令:pm2 deploy app.json production
  4. 项目修改:

pm2命令

```    // 启动    pm2 start app.js    // 直接启动nodejs服务器    pm2 start app.js --name my-app      // --name 可以对本次启动的进行命名    pm2 start app.js -i 0           // 根据CPU核数启动进程个数    pm2 start app.js --watch   // 实时监控app.js的方式启动,当app.js文件有变动时,pm2会自动reload    // 监控    pm2 monit    // 程序信息    pm2 describe id|all    // 停止    pm2 stop id|all    // 重载    pm2 reload id|all    // 重启    pm2 restart id|all    // 删除pm2进程    pm2 delete id|all    // 日志操作    pm2 logs [--raw]  // 在流中显示所有进程日志    pm2 flush       // 清空所有日志文件    pm2 reloadLogs      // 重装所有的日志    // 升级pm2    npm install pm2@lastest -g      // 安装最新版本的pm2    pm2 updatePM2       // 升级pm2    // 帮助    pm2 --help``` 
原创粉丝点击