使用PM2实现自动部署代码到Ubuntu服务器
86 浏览量
更新于2024-08-29
收藏 220KB PDF 举报
"这篇文章主要介绍了如何使用PM2进行自动部署代码的步骤流程,涉及环境条件、本地与服务器环境的SSH设置、Git配置以及PM2的配置文件设置。"
在进行自动化部署时,PM2作为一个流行的Node.js应用的进程管理器,提供了方便的部署功能。以下是对文章中提到的知识点的详细说明:
### 0x01 环境条件
在进行自动部署之前,你需要确保本地和服务器环境满足以下条件:
1. **本地环境**: Windows 10上的WSL(Windows Subsystem for Linux)运行Ubuntu 16.04。
2. **服务器环境**: Ubuntu 18.04。
3. **软件安装**: 在两个环境中都需要安装PM2和Git。PM2用于管理Node.js应用程序,Git则用于版本控制。
### 0x02 设置本地环境与服务器环境Gitee仓库SSH
#### 本地环境
1. **生成SSH密钥**: 使用`ssh-keygen -t rsa -b 2048 -f pm2deploy -C "PM2deploysshkey"`生成名为`pm2deploy`的SSH密钥对。
2. **加载SSH密钥**: 使用`ssh-agent bash -l -i`启动SSH代理,并通过`ssh-add pm2deploy`将密钥添加到代理中。
3. **验证SSH配置**: 添加公钥到Gitee个人账户,然后在本地运行`git -T git@gitee.com`,如果返回“successfully”,则表示SSH设置成功。
#### 服务器环境
1. **添加SSH部署公钥**: 与本地环境类似,但服务器的公钥应添加到Gitee的部署公钥中。
2. **配置Git**: 修改`.git/config`文件,将`origin`的URL改为SSH别名,例如`gitee`。
### 0x03 配置Git
1. **修改远程仓库地址**: 使用`vim ~/.git/config`打开配置文件,将`gitee.com`替换为别名`gitee`,确保服务器和本地的别名一致,但证书仍保持各自环境的设置。
### 0x04 配置PM2
PM2的自动部署主要依赖于`ecosystem.config.js`配置文件。配置主要包括:
1. **定义应用**: 指定Node.js应用程序的位置、启动命令等。
2. **部署设置**: 配置部署的目标服务器、用户、SSH密钥路径等信息。
3. **钩子函数**: 可以设置预部署和后部署脚本,如代码拉取后的构建过程。
4. **自动更新**: PM2能够监控代码仓库的变更,当检测到新的提交时,会自动拉取并重启应用。
在确保所有配置完成后,PM2会自动监控代码仓库,一旦检测到新提交,就会自动部署到服务器上,并根据配置文件重启应用,从而实现无缝的自动化部署。
请注意,实际部署过程中可能还需要处理权限问题、错误日志跟踪、环境变量设置等多个环节,这些都需要根据具体项目的需求进行细致的配置和调试。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-10-17 上传
2020-10-17 上传
2021-07-04 上传
2020-10-17 上传
2024-02-22 上传
2021-02-16 上传
weixin_38707217
- 粉丝: 3
- 资源: 903
最新资源
- BookStores:ASP.NET Core Web API + EF Core后端入门模板
- advanced-analytics-with-spark:O O'Reilly出版的“ Advanced Spark with Spark”案例研究的非官方面向DataFrame的解决方案
- 非常好用的H5选人组件
- my-first-website
- apache2.2.zip
- Google-Chat-Extender:Google Chat Extender允许向Google Chat应用添加新主题和插件
- wImageReaderWebp
- step7实现PID.rar
- 跳转到app store的小案例.zipIOS应用例子源码下载
- mumuki-guia-python3-hola-python
- 编程乐趣:此存储库包含编程问题。
- TYPO3-version-chart:使用jQuery UI和jQuery Isotope的TYPO3版本可视化
- adtech-design-interview
- aabbtree-2.8.1-py2.py3-none-any.whl.zip
- weixin051畅阅读微信小程序+ssm后端毕业源码案例设计
- montana.github.io