我将在两个远程服务器上部署Node.js移动Web应用程序。(Linux OS) 我正在使用SVN服务器来管理我的项目源代码。
为了简单明了地管理应用程序,我决定使用Jenkins。 我是Jenkins的新手,因此安装和配置Jenkins是一项非常困难的任务。
但是我找不到如何设置Jenkins来同时构建远程服务器。
你能帮帮我吗?
答案 0 :(得分:1)
你应该研究supervisor。它的语言和应用程序类型无关,它只是负责(重新)启动应用程序。
所以在你的jenkins构建中:
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
注意:有一个node.js的主管,它不是我正在谈论的那个,我还没有测试过。
答案 1 :(得分:0)
根据Linux操作系统,您需要ssh到主机以运行命令以更新应用程序:
在shell脚本中计算出应用程序更新的工作流程。特别是你需要守护你的节点应用程序,以便完成jenkins作业执行不会在退出时杀死你的应用程序。这是一篇很好的文章,告诉你如何做到这一点:Running node.js Apps With Upstart,或者你可以参考像forever这样的纯nodejs技术。假设你在/etc/init.d/myNodeApp
从jenkins到您的Linux操作系统的ssh。因此,您需要确保已将ssh私钥文件复制到/var/lib/jenkins/.ssh/id_rsa,其所有权为jenkins
用户
以下是jenkins作业配置中的示例shell步骤:
ssh <your application ip> "service myNodeApp stop; cd /ur/app/dir; svn update; service myNodeApp restart"