如何使用Jenkins在多个服务器上同时部署Node.js Web应用程序?

时间:2013-11-18 09:11:13

标签: node.js jenkins

我将在两个远程服务器上部署Node.js移动Web应用程序。(Linux OS) 我正在使用SVN服务器来管理我的项目源代码。

为了简单明了地管理应用程序,我决定使用Jenkins。 我是Jenkins的新手,因此安装和配置Jenkins是一项非常困难的任务。

但是我找不到如何设置Jenkins来同时构建远程服务器。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

你应该研究supervisor。它的语言和应用程序类型无关,它只是负责(重新)启动应用程序。

所以在你的jenkins构建中:

  • 您从SVN更新代码
  • 你进行单元测试(绝对是个好主意)
  • 您要么在每个主机上启动svn更新,要么将当前内容复制到它们(我建议这样做,因为有很多方法可以使SVN失败,这样可以在某些.JS文件中包含SVN_REVISION)< / LI>
  • 您在每个主机上执行:fuser -k -n tcp $DAEMON_PORT,这将使用端口$ DAEMON_PORT(您在node.js的应用程序中使用的端口)终止当前正在运行的应用程序

最好的是它会在系统启动时自动启动你的node.js(如果管理员已正确安装(在Debian上apt-get install supervisor))并在发生故障时重新启动它。

node.js supervisord的子配置如下所示:

# /etc/supervisor/conf.d/my-node-app.conf
[program:my-node-app]
user = running-user
environment = NODE_ENV=production
directory = /usr/local/share/dir_app
command = node app.js
stderr_logfile = /var/log/supervisor/my-node-app-stderr.log
stdout_logfile = /var/log/supervisor/my-node-app-stdout.log

有很多configuration parameters

注意:有一个node.js的主管,它不是我正在谈论的那个,我还没有测试过。

答案 1 :(得分:0)

根据Linux操作系统,您需要ssh到主机以运行命令以更新应用程序:

  1. 在shell脚本中计算出应用程序更新的工作流程。特别是你需要守护你的节点应用程序,以便完成jenkins作业执行不会在退出时杀死你的应用程序。这是一篇很好的文章,告诉你如何做到这一点:Running node.js Apps With Upstart,或者你可以参考像forever这样的纯nodejs技术。假设你在/etc/init.d/myNodeApp

  2. 下编写了一个脚本
  3. 从jenkins到您的Linux操作系统的ssh。因此,您需要确保已将ssh私钥文件复制到/var/lib/jenkins/.ssh/id_rsa,其所有权为jenkins用户

  4. 以下是jenkins作业配置中的示例shell步骤:

    ssh <your application ip> "service myNodeApp stop; cd /ur/app/dir; svn update; service myNodeApp restart"