使用nuxt创建个人博客系列-24 通过pm2和github提交应用

311
2020-01-24 18:37
5 个月前

添加自己的公钥到github上

查看有没有生成~/.ssh/id_rsa.pub,如果你看了我上一章节,应该是已经生成的

$ cat ~/.ssh/id_rsa.pub #得到这一串秘钥后靠背出来
如果你没生成秘钥,则继续打命令
$  ssh-keygen -t rsa #一路回车下去就行,让后执行上面的命令,拷贝出来,
$ 最好设置一下git的用户名和邮箱
$ git config --global user.name "guojian"
$ git config --global user.email 424139777@qq.com

然后打开githubkeys这里添加ssh-key(就是上面拷贝的那一串东东),没有登录会跳到登录页面。至此服务器上就可以拉取github上面的代码了

使用pm2部署

pm2可以一键部署到线上,可以集群,可以做到服务重启,反正就是很多作用,我就用上了一个自动部署功能。pm2官网
要使用pm2自动部署,需要使用秘钥登录,和添加known_hosts

$ ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts #把github.com添加到known_hosts

博客上传到github

首先在github上创建项目 github-new
然后把本地的代码提交到刚才新增的项目里,首先添加pm2配置文件 目录:ecosystem.json 说明: path,需要再自己的服务器上创建目录,我的配置是/data/www/myblog/production,所以要创建这个目录,最好给他们是777权限,我怕会因为权限问题提交失败。

{
  "apps":[
    {
      "name":"app",
      "script":"build/main.js",
      "env":{
        "NODE_ENV": "development",
        "COMMON_VARIABLE":true
      },
      "env_dev":{
        "NODE_ENV":"dev1"
      },
      "env_production":{
        "NODE_ENV":"production"
      }
    }
  ],
  "deploy":{
    "production":{
      "user":"root", //用户
      "host":["1**.24.17.1**"], //服务器地址
      "ref":"origin/master",
      "key":"/Users/guojian/key/id_rsa", //秘钥
      "port":"22",
      "repo":"git@github.com:***/***.git", //github地址
      "path":"/data/www/myblog/production", // 需要先创建文件夹
      "post-deploy":"npm install&& pm2 startOrRestart ecosystem.json --env production", 
       //部署命令,如果拉取不成功,建议在npm 前面执行git pull
      "pre-deploy-local":"echo 'Deploy Done!'",
      "env":{
        "NODE_ENV":"production"
      }
    }
  }
}

正式部署到线上

#首先提交到github
$ git init
$ git remote add origin git@github.com:***/***.git
$ git fetch
$ git add .
$ git commit -m 'first commit'
$ git push origin master
#执行pm2 deploy
$ pm2 deploy ecosystem.json production setup #成功后执行
$ pm2 deploy ecosystem.json production #执行这句后会登录到服务器上,执行上面配置的命令

提示:
pm2 deploy ecosystem.json production setup在项目里只会执行一次。
以后每次执行 pm2 deploy ecosystem.json production,都要先把代码提交到github上


下一章节我们会讲到使用nginx转发到node服务上,下一节我们讲一下nginx。