git线上服务器_pm2实现git仓库代码一键配置部署到线上服务器

第一步 先实现 ssh的免密登录远程服务器:

第二步 初始化项目, 并把项目部署到git仓库

下面用几个最简单的项目做演示, 项目目录下面就这个三个文件

1670cbbd1bcb070000948655443c250a.png

把项目部署到git仓库,记住git仓库地址 比如 git@github.com:xxxxx.git

app.js 文件内容如下:(记得安装 http 模块):

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

const http = require('http')const homePage =`

Node.js 静态网站/API 部署上线示例

text-align: center;

color: #ff6600;

}

Node.js 静态网站/API 部署上线示例

`

http.createServer((req, res)=>{

res.statusCode= 200res.setHeader('Content-Type', 'text/html')

res.end(homePage)

}).listen(5000, () =>{

console.log('Server running at 5000')

})

View Code

ecosystem.yaml  文件内容如下:

apps:

- script: app.js

name: NodeDeployStatic

env:

COMMON_VARIABLE: true

env_production:

NODE_ENV: production

deploy:

production:

user: root

host:

- 12.12.12.12

port: '12'

ref: origin/master

repo: git@github.com:xxxxx.git

path: /root/www/node-deploy-static/production

ssh_options: StrictHostKeyChecking=no

pre-deploy: git fetch --all

post-deploy: 'npm i && pm2 startOrRestart ecosystem.yaml --env production'

env:

NODE_ENV: production

package.json  文件内容如下:

{"name": "deploy-static","version": "1.0.0","description": "练习pm2 的 node静态部署","main": "app.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"repository": {"type": "git","url": ""},"author": "","license": "ISC","dependencies": {},"devDependencies": {"http": "0.0.1-security"}

}

第三步 把本地的 id_rsa 的公钥被配置到git仓库里

在本地 cat 一下 .ssh/id_rsa.pub 这公钥,全部选中,然后复制下来,来到 Git 的个人配置后台,找到 Deploy keys 设置,然后,粘贴进去,提交。

0a7b44e9c8e9dc51df8417943f70fbd3.png

b60abd67308f36132b053e5a8fa4a2b4.png

第四步 把服务器的的 id_rsa 的公钥被配置到git仓库里

在服务器上 cat 一下 .ssh/id_rsa.pub 这公钥,全部选中,然后复制下来,来到 Git 的个人配置后台,找到 Deploy keys 设置,然后,粘贴进去,提交(添加公钥方式同第三步)

服务上记得也要安装 git   Ubuntu 下安装 git 方式: sudo apt-get install git

安装完成 git 并且将服务器上的 .ssh/id_rsa.pub 配置到git仓库的后台之后,我们在服务器上随便新建一个文件夹temp/, 并且 cd 进去然后执行:

# git clone 你的线上私有仓库的地址

git clone git@git.xxxxx.git

中间会询问你是否要继续,输入 yes 继续即可,这样我们就把从本地上传到线上仓库的代码给 clone 到了服务器。

第五步 配置 PM2 一键部署项目目录

上面,我们把本地的项目都推送到了私有仓库,并且服务器也能下载到了私有仓库的项目代码,

那这个时候我们就需要有一个傻瓜式的管理代码更新和服务运行的工具,

帮助我们完成“同步代码更新”以及“服务的重启”之类的工作,这个傻瓜式的工具就是 PM2。

在本地命令行执行

pm2 deploy ecosystem.yaml production setup  注意: 首次部署 需要使用 setup, 第一次成功之后就不用使用了

在服务器自动创建对应的目录,以及把目录分配好,为正式发布做环境准备,如果不能读取和克隆远端的分支,

这个原因是,Git 仓库的分支 clone 的时候会校验可信任的 IP,我们只需要在服务器上先 clone 一下就好了。

Host key verification failed.

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

failed to clone

Deploy failed

首先来到服务器的命令下面,把这个分支随便 clone 一个地方

git clone git@xxxxx.git

clone 的时候,可能会有提醒说是否想要继续链接,输入 yes 回车就可以了,然后再切回到本地的命令行窗口,重新执行一下

pm2 deploy ecosystem.json production setup

就可以了,这就把部署的目录和仓库都弄好了。我们可以来看下这个目录组成,首先在 node-deploy-static 下面生成了一个 production 的文件夹,然后在它内部又创建了 3 个子文件夹:

6d180f8e29341976d1c51141725dfdc1.png

当前的服务所运行的文件夹,source 是 clone 下来的源码,shared 里面是日志文件和 pid 之类,其中 current 是 source 的软连接,两者是一样的代码

注意 第一次部署的时候 必须加上setup

pm2 deploy ecosystem.json production setup

之后在部署的时候 就不用加了

pm2 deploy ecosystem.json production

部署成功如下所示:

8db0bf124491ae6f31c34251eb2e81fb.png

更多 deploy的 命令可以输入  pm2 deploy help  进行查看

8e2ef45e3baf606c35bd450002057c3e.png

相关命令的解释如下:

setup 初始化(第一次部署才會用到)

update 更新到最新的 commit

revert [n] 回复到上一次的 deployment

curr[ent] 输出目前上线中的 commit

prev[ious] 输出上一次部署的 commit

exec|run 执行指定的指令

list 列出包含目前,以及之前所部署的 commit

[ref] 部署到指定的 ref

遇到的问题:

一.   pm2自动部署的时候报错 提示npm/pm2 command not found post-deploy hook failed Deploy failed 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值