视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何使用pm2快速将项目部署到远程服务器
2020-11-27 22:00:15 责编:小采
文档

大概意思就是,私钥文件不能被其他人所访问。可能考虑到如果被别人获取到,就可能对服务器安全造成影响,所以需要从新设置下秘钥文件的权限

重新设置秘钥文件权限: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

下载本文
显示全文
专题