(git)将更改推送到开发服务器并让它自动重新启动Node应用程序的最佳方法是什么?

时间:2015-05-20 19:44:44

标签: node.js git

以前在我的本地计算机上,我一直在使用nodemon来监视对Node应用程序所做的更改,并在每次更改时重新加载它。但是在我自己的机器上运行开发服务器已不再可行,所以我在指定的开发服务器上为应用程序设置了git。

事先我更喜欢Sublime Text,所以通过终端在开发服务器上编辑文件并不符合我的工作流程,而且我喜欢默认情况下在本地计算机上拥有所有内容的副本。我还检查了rsync,但我喜欢git提供的细粒度版本控件。

那么如何在本地编辑文件,git push将它们编辑到开发服务器,并在每次推送后自动重新加载Node应用程序?

2 个答案:

答案 0 :(得分:6)

您可以编写服务器端挂钩。在.git目录中有一个钩子目录。只需cd到.git / hooks。在那里,您可以用您需要的任何语言编写脚本。基本上在您推送它之后将运行您告诉它的脚本。这里有关于git hooks的更多信息

https://git-scm.com/book/es/v2/Customizing-Git-Git-Hooks

使这项工作的快速教程:

  1. 在开发服务器上,导航至/home/dev-user/Node并使用/home/dev-user/Node/example.gitgit init --bare example.git初始化裸存储库。

  2. 使用/home/dev-user/Node/example将存储库克隆到git clone example.git

  3. 根据需要将文件添加到/home/dev-user/Node/example,然后git add .git commit -m "init"以及最后git push origin master将文件推送到example.git

  4. 修改或创建/home/dev-user/Node/example.git/hooks/post-receive并添加以下行: GIT_WORK_TREE=/home/dev-user/Node/example/ git checkout -f

    当任何更改推送到/home/dev-user/Node/example/时,这会自动更新/home/dev-user/Node/example.git中的文件。

  5. 如果您尚未安装nodemon,请使用npm install -g nodemon进行安装。您可能必须使用sudo

  6. 假设您的主节点应用位于/home/dev-user/Node/example/app.js,请使用nodemon /home/dev-user/Node/example/app.js启动应用(或者如果您已经在/home/dev-user/Node/example内,只需nodemon app.js疗程)。

  7. 在本地计算机上,导航到/home/timbur/Node,并假设您可以通过SSH自动连接到服务器,使用git clone dev-user@dev.server.ip.address:Node/example.git克隆裸存储库。现在,您将拥有/home/timbur/Node/example

  8. 中的所有内容
  9. 编辑本地计算机上的文件,并像往常一样将/ commit / push文件添加到开发服务器,更改将自动更新服务器的example目录,nodemon将检测到该目录,应用程序将重新启动。

答案 1 :(得分:0)

最好的方法是设置一个持续集成服务器,如Jenkins:https://jenkins-ci.org/

然后有基本上无论你想做什么的插件,例如node.js的插件:https://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin

但这可能不是最简单的方法。您还可以在服务器上设置一个post-receive挂钩,每当您推送任何更改时都会检查代码,然后让它重新启动您的服务器。这是我发现的一个要点(但从未尝试过)https://gist.github.com/tlrobinson/8035884