我刚刚编写了我的第一个ruby脚本。其目的是在从a git web hook调用服务器时在服务器上运行命令。
require 'webrick'
server = WEBrick::HTTPServer.new(Port: ARGV.first)
server.mount_proc '/' do |req, res|
r10kstatus = system( "sudo r10k deploy environment -pv warn" )
puts r10kstatus
end
trap 'INT' do server.shutdown end
server.start
现在我有一个工作脚本,我该如何部署'它。
我需要:
我认为我可以更新gem,但是如何管理自动启动脚本?
我正在研究的选项:
更新
我创造了一个我可以用木偶部署的rubygem。
package {'r10k_gitlab_webhook':
ensure => latest,
provider => gem,
}
http://rubygems.org/gems/r10k_gitlab_webhook
我仍然不确定如何制作,因此每次启动服务器时都会执行此脚本
答案 0 :(得分:1)
我成功使用fpm(https://github.com/jordansissel/fpm)从ruby中创建debian包。我不会将它用于更大规模的任务,但它对于(我的)内部故事来说非常好。
然后,进入rc.d / init并弄清楚如何在特定的运行级别启动它。这取决于您使用的分布(假设它是一个单独的系统)。
我的标准路线是安装一个apache,phusion乘客,然后创建一个sinatra / rack-based应用程序来完成这项工作,并让apache处理" autostart"和" webrick"部分(它不再是webrick)。
但是我之所以选择这个,是因为我的场景中的机器无论如何都运行apache,并且周围的工具是我的" toolbelt"的一部分。 Imho它是一个有效的解决方案,如果你计划使用类似的技术。
如果我没记错的话,瘦Web服务器也有一个自我注册的安装命令。
答案 1 :(得分:1)
对我有用的解决方案是使用pleaserun
。
我是这样做的:
# Assumes ruby > 1.9, and r10k_gitlab_webhook is in path
gem install pleaserun
gem install r10k_gitlab_webhook
pleaserun --install --user git --group git --description 'Starts webserver on port 8000' r10k_gitlab_webhook 8000
这将在/etc/init/r10k_gitlab_webhook.conf中创建以下文件。
请注意,这是一个centos特定的init文件。如果你在ubuntu上运行pleaserun,它将创建一个upstart文件。
description "Starts webserver on port 8000"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
respawn
umask 022
#nice
#chroot /
#chdir /
#limit core <softlimit> <hardlimit>
#limit cpu <softlimit> <hardlimit>
#limit data <softlimit> <hardlimit>
#limit fsize <softlimit> <hardlimit>
#limit memlock <softlimit> <hardlimit>
#limit msgqueue <softlimit> <hardlimit>
#limit nice <softlimit> <hardlimit>
#limit nofile <softlimit> <hardlimit>
#limit nproc <softlimit> <hardlimit>
#limit rss <softlimit> <hardlimit>
#limit rtprio <softlimit> <hardlimit>
#limit sigpending <softlimit> <hardlimit>
#limit stack <softlimit> <hardlimit>
exec chroot --userspec git:git / r10k_gitlab_webhook "8000"
现在将在每次启动时启动该服务。
答案 2 :(得分:0)
在我的公司,当我的老板需要我的一个脚本在启动时运行时,我们只是将脚本放在启动文件夹中,但我不确定这是否适合你。另一件事就是任务调度员。只需设置触发器即可。把它指向你的红宝石脚本和bam。祝你好运