Nodejs在Linux VPS上的应用管理工具
Nodejs在Linux VPS上的应用管理工具
为了在自己的VPS上发布node应用,给自己写了一个。用了一段时间貌似还挺稳定。
- 提供一个VPS上的命令行界面,用来创建/删除/启动/停止/查看服务器上的node应用
- 每一个应用都有一个git repo. 在开发机器上git push = 发布并重启应用进程。可以自定义push以后重启之前额外干些什么。
- 基于pm2。pm2有的功能都具备,比如进程挂了自动重启,日志,cluster,监视进程资源等。只需要把node_modules里面pm2的可执行文件link到/usr/local/bin里。
更多见github文档:https://github.com/yyx990803/pod
Nodejs在Linux VPS上的应用管理工具
为了在自己的VPS上发布node应用,我编写了一个简单的工具。经过一段时间的使用,我发现它非常稳定。
主要功能
- 命令行界面:提供一个命令行界面,用来创建、删除、启动、停止以及查看服务器上的node应用。
- Git集成:每个应用都有一个对应的Git仓库。在开发机器上进行
git push
操作即可实现应用的发布和重启,并且可以在推送后添加自定义的操作步骤。 - 基于PM2:该工具集成了PM2的所有功能,如进程自动重启、日志管理、集群模式和资源监控等。只需将
node_modules
中的PM2可执行文件链接到/usr/local/bin
目录下。
示例代码
以下是一个简单的示例,展示了如何使用这个工具来管理你的Node.js应用。
# 安装PM2
npm install -g pm2
# 将PM2的可执行文件链接到全局路径
ln -s /path/to/node_modules/pm2/bin/pm2 /usr/local/bin/pm2
# 创建一个新的Node.js应用
pod create myapp
# 进入应用目录
cd myapp
# 初始化Git仓库
git init
# 添加远程Git仓库
git remote add origin git@github.com:username/myapp.git
# 提交代码
git add .
git commit -m "Initial commit"
# 推送代码到远程仓库
git push origin master
# 启动应用
pod start myapp
# 查看应用状态
pod status myapp
# 停止应用
pod stop myapp
# 删除应用
pod delete myapp
使用说明
-
安装PM2:
npm install -g pm2
-
创建应用:
pod create myapp
-
初始化Git仓库:
cd myapp git init git remote add origin git@github.com:username/myapp.git
-
提交并推送代码:
git add . git commit -m "Initial commit" git push origin master
-
启动应用:
pod start myapp
-
查看应用状态:
pod status myapp
-
停止应用:
pod stop myapp
-
删除应用:
pod delete myapp
更多详细信息和文档请参见GitHub。希望这个工具能帮助你在Linux VPS上更方便地管理和部署Node.js应用。
没什么人看,稍微补充两句吧。
这个玩意儿主要是嫌forever/pm2这样的进程管理工具还是太麻烦所以才写的。我理想的node发布就是每次commit以后git push就自动搞定了。这个工具可以帮我做到这一点。下面简单说说部署流程:
-
一个全新的VPS,上去以后装上nginx,git和node,(这个过程请自己google)然后
sudo npm install -g pod
-
配置一下ssh。把你的public key放到VPS上也好,把密码放在
~/.ssh/config
里也好,总之最好能做到无密码登陆。我们假设配置好以后vps的host名字叫做myvps
。 -
在服务器上第一次运行
pod
,会提示你选一个路径放文件。确保选择一个你的账号有所有权限不需要sudo的地方。 -
然后创建一个新应用:
pod create hello
。这时候会创建一个空的git仓库,以及一个从这个仓库clone出来的work copy。复制一下这个git仓库的路径,比如/srv/repos/hello.git
-
运行
pod list
,会显示当前所有应用的运行状态和监听的端口。如何用nginx reverse proxy我就不说了,自行google。 -
在你本地的项目里,
git remote add deploy ssh://myvps/srv/repos/hello.git
。默认的主文件是app.js
,你可以在package.json
里面通过main
这一项来指定用的主文件。至此,设置完成。 -
从今以后,每次写了点东西要发布的时候,只需commit然后
git push deploy master
。远端的git hook会自动让work copy pull,npm install(以防依赖有变化),然后用pm2重启应用进程。如果你想要重启前先跑个测试什么的,也可以自定义hook的内容。
更多选项请看顶楼github连接(英文)。
有人看, 这种工具一定要大力支持.