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


4 回复

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

使用说明

  1. 安装PM2

    npm install -g pm2
    
  2. 创建应用

    pod create myapp
    
  3. 初始化Git仓库

    cd myapp
    git init
    git remote add origin git@github.com:username/myapp.git
    
  4. 提交并推送代码

    git add .
    git commit -m "Initial commit"
    git push origin master
    
  5. 启动应用

    pod start myapp
    
  6. 查看应用状态

    pod status myapp
    
  7. 停止应用

    pod stop myapp
    
  8. 删除应用

    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连接(英文)。

有人看, 这种工具一定要大力支持.

针对“Nodejs在Linux VPS上的应用管理工具”这个帖子内容,我将介绍一个简单的应用管理工具的实现思路和部分代码片段。该工具旨在简化Node.js应用在Linux VPS上的管理和部署。

1. 工具概述

  • 命令行界面:提供pod create <app_name>pod delete <app_name>pod start <app_name>pod stop <app_name>pod status <app_name>等命令。
  • 自动化部署:通过监听GitHub仓库的变化,自动进行代码更新和应用重启。
  • 基于PM2:使用PM2来管理Node.js应用的生命周期,确保应用稳定运行。

2. 示例代码

2.1 安装依赖

首先安装必要的依赖项:

npm install -g pm2
npm install -g inquirer
npm install -g simple-git

2.2 创建应用

// pod create <app_name>

const inquirer = require('inquirer');
const simpleGit = require('simple-git/promise')();

async function createApp(appName) {
    const questions = [
        {
            type: 'input',
            name: 'repo',
            message: `Enter the git repository URL for ${appName}:`,
        },
        {
            type: 'input',
            name: 'port',
            message: `Enter the port number for ${appName}:`,
        }
    ];

    const answers = await inquirer.prompt(questions);

    // Initialize application folder
    await simpleGit.checkoutLocalBranch(appName);
    await simpleGit.addRemote('origin', answers.repo);
    
    // Install dependencies and start application
    await simpleGit.exec(['install']);
    await simpleGit.exec(['start', '--name', appName, '--port', answers.port]);
}

createApp('myApp').catch(console.error);

2.3 更新应用

// 监听GitHub仓库的变化,自动执行更新逻辑
simpleGit()
    .on('pre-push', () => {
        console.log('Push event detected. Updating application...');
        // 执行更新逻辑
    })
    .on('post-push', () => {
        console.log('Application updated.');
        // 重启应用
        pm2.restart('myApp');
    });

3. 使用说明

  1. 初始化项目:运行pod create myApp来创建一个新的Node.js应用,并指定其Git仓库地址和端口号。
  2. 更新应用:当开发机上的代码发生变化并推送到远程仓库时,VPS会自动拉取最新代码并重启应用。

4. 注意事项

  • 确保在VPS上配置好PM2和Git环境。
  • 考虑添加错误处理机制以提高稳定性。

以上是基于你的需求设计的一个简单应用管理工具框架。你可以根据实际需求进一步扩展和完善。

回到顶部