运用背景
当我们须要将项目布置到长途线上效劳器时;传统的要领能够就是:
- 将当地代码经由过程ssh、ftp等体式格局上传到效劳器;
- 然后经由过程ssh登入到效劳器,设置好环境;
- 手动启动运用。
- 太甚手动化,贫苦,操纵烦琐。
当代自动化布置
- 环境:当地(Mac);长途效劳器(CentOS)
- 运用东西:
Git、pm2、node
; - 需知观点:
ssh秘钥上岸
;Github增加Deploy Keys
1、效劳器环境布置
- 基础东西装置:
git、pm2、node
2、ssh效劳器免密上岸
效劳器天生秘钥对
ssh-keygen -t rsa -C '1285227393@qq.com' -t 指定密钥范例,默许即 rsa ,能够省略 -C 设置解释笔墨,比方邮箱,能够省略
- 由于运用的是百度云效劳器,内里能够直接界面天生秘钥对,然后下载到当地的是一个xxx.txt文件
- . 此时上岸能够运用
ssh -i xxx.txt[下载的公钥途径] name@domain
- 报错:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'server-key.txt' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "server-key.txt": bad permissions
也许意义就是,私钥文件不能被其他人所接见。能够考虑到假如被他人获取到,就能够对效劳器平安形成影响,所以须要从新设置下秘钥文件的权限
- 从新设置秘钥文件权限:
chmod 600 server-key.txt
,作废其他用户Read权限 - 然则,运用
ssh name@domain
情势照样没法直接登入;追其缘由,发明由于不是当地直接天生的秘钥对; - 所以须要运用
ssh-add -K ~/.ssh/xxx.txt[下载公钥文件]
(-K
示意永远存储式,假如不运用者每次开机后须要从新ssh-add),就像是当地天生秘钥对然后布置到效劳器须要将秘钥追加到ssh认证文件一个原理; -
ssh name@domain
能够一般免密上岸啦!(设置这类情势上岸背面pm2须要运用)
- 从新设置秘钥文件权限:
- 设置快速登录(附加)
1. 进入ssh目次:cd ~/.ssh
2. 建立config文件: touch config
3. 进入config设置文件设置:vi config
Host lwh #快速别号
HostName host #ssh效劳器ip或domain
Port port #ssh效劳器端口,默许为22
User root #ssh效劳器用户名
IdentityFile ~/.ssh/server-key.txt #下载的私钥文件
4. :wq!保留退出
5. 完成后能够直接运用:ssh lwh 上岸
在Github上增加Deploy Keys
- 效劳器天生秘钥
# 天生ssh key
ssh-keygen -t rsa
# 检察公钥内容
cat ~/.ssh/id_rsa.pub
- 复制秘钥内容,增加到Github上对应的项目堆栈Settings下的
Deploy keys
中 - 设置
Deploy keys
,使得效劳器能够经由过程ssh拉取项目堆栈;
设置pm2
- 设置
ecosystem.config.js
;详细pm2
设置及基础运用引见,戳~运用pm2设置临盆环境
module.exports = {
apps: [
{
name: 'back-Api', //运用名
script: './server/start.js', //运用文件位置
env: {
//PM2_SERVE_PATH: "./apidoc", //静态效劳途径
PM2_SERVE_PORT: 8080, //静态效劳器接见端口
NODE_ENV: 'development' //启动默许形式
},
env_production : {
PM2_SERVE_PORT: 8080,
NODE_ENV: 'production' //运用production形式 pm2 start ecosystem.config.js --env production
},
instances:"max", //将运用程序散布在所有CPU核心上,能够是整数或负数
instance_var: "INSTANCE_ID",
exec_mode: "cluster",
min_uptime: "30s",
max_restarts: 10,
//cron_restart: "40",
watch:[
"server",
], //监听形式,不能纯真的设置为true,易致使无穷重启,由于日记文件在变化,须要消除对其的监听
merge_logs: true, //集群情况下,能够兼并日记
}
],
deploy: {
production : {
//设置没法供应暗码,所以前面须要设置ssh免暗码登录效劳器
user: 'root', //ssh 上岸效劳器用户名
host: '100.12.102.198', //ssh 地点效劳器domain/IP
ref: 'origin/master', //Git长途/分支
repo: 'git@github.com', //git地点运用ssh地点
path: '/liwenhui/www', //项目寄存效劳器文件途径
"post-deploy": 'npm install && pm2 reload ecosystem.config.js --env production' //布置后的行动
}
}
};
最先布置
最先布置
pm2 deploy ecosystem.config.js production
报错
appledeMBP:back-server-api apple$ pm2 deploy ecosystem.config.js production --> Deploying to production environment --> on host 106.12.132.188 ○ deploying origin/master ○ executing pre-deploy-local ○ hook pre-deploy bash: 第 0 行:cd: /lwh/www/source: 没有谁人文件或目次 ○ fetching updates ○ full fetch bash: 第 0 行:cd: /lwh/www/source: 没有谁人文件或目次 fetch failed Deploy failed 1
- 须要先初始化效劳器运用:
pm2 deploy ecosystem.config.js production setup
, - 然后:
pm2 deploy ecosystem.config.js production
其他
- pm2日记设置运用概况运用pm2设置临盆环境
- 当地连接长途mongodb设置效劳器(CentOS)装置设置mongodb
“积跬步、行千里”—— 延续更新中~,喜好的话留下个赞和关注哦!