本地密钥生成

本地环境要和服务器环境基本保持一致,所以本地也要安装好git,node.js,pm2安装方法不在赘述

本地git bash执行ssh-keygen -t rsa,一路回车,完成后在你的用户目录下会生成一个.ssh文件夹,内容如下:

复制id_rsa.pub中的内容,登录github,在设置选项添加ssh key,这样你就可以本地提交你的代码到github了

服务器密钥生成

服务器同本地一样,也是执行ssh-keygen -t rsa,一路回车

同样在github添加你的服务器密钥

完成以上操作后在服务端执行echo "[your public key]" > ~/.ssh/authorized_keys该命令会将本机的公钥拷贝到服务器的authorized_keys文件,可打开root/.ssh/authorized_keys,查看是否拷贝成功

设置文件和目录权限

设置authorized_keys权限:$ chmod 600 authorized_keys

设置.ssh目录权限:$ chmod 700 -R .ssh

完成以上操作你的本机就和服务器建立的联系,无需密码就可以操作服务器了,这个权限设置很重要

项目部署

为了更好地说明部署细节,以我的开源项目VueBlog作为演示

在本地项目目录下执行pm2 ecosystem,然后会在根目录下生成一个ecosystem.config.js文件

module.exports = {
  apps: [
    {
      name: 'vueblog',
      script: 'build/main.js',
      env: {
        COMMON_VARIABLE: 'true'
      },
      env_production: {
        NODE_ENV: 'production'
      }
    }
  ],
  deploy: {
    production: {
      user: 'root',
      // 服务器ip
      host: '198.13.32.165',
      // 分支
      ref: 'origin/master', 
      // 仓库地址
      repo: '[email protected]:wmui/vueblog.git',
      path: '/www/vueblog',
      'post-deploy': 'yarn && npm run build && pm2 reload ecosystem.config.js --env production'
    }
  }
}

以上你要根据你自己的项目进行修改,完成修改后,提交到github

第一次你先要在你的服务器上clone你的项目,我克隆到了/www目录下,cd到该目录,服务端执行pm2 deploy ecosystem.config.js production setup初始化项目

紧接着重点来了,打开你的root目录下的.baserc文件,把最底部的以下两行代码移动到最上面,这应该是一个坑

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

然后在本地的git bash中测试,修改一些东西,提交到github,执行pm2 deploy ecosystem.config.js production你会看到你下内容,恭喜成功,服务端会自动执行安装启动等操作

pm2有很多强大的功能,比如我们项目部署到线上后发现有问题,可以执行pm2 deploy ecosystem.config.js production revert 1回滚到上一个版本,更多强大功能可查看官方文档

results matching ""

    No results matching ""