我正在寻找比sudo restart projectname
每次发布更好的东西git pull origin master
,这将我的最新更改下拉到Django项目.restart
我相信这个命令与Upstart有关,我用它来启动/支持我的Gunicorn服务器进程.
此重新启动会导致短暂停机.击中Web服务器(nginx)的用户将获得500,因为Gunicorn仍在重启.事实上,它似乎立即重启,但页面加载需要几秒钟.
关于如何使这个无缝的任何想法?理想情况下,我想git pull
自动发出我的和Gunicorn重新加载.
我正在运行Ubuntu 11.10并且已经运行sudo apt-get install jenkins
在这个系统上安装Jenkins.
我已经看过一些关于如何设置反向代理(Apache,Nginx等)的教程,但是这是一个专门用于jenkins的VM,我希望在jenkins在端口80上运行时保持尽可能精简.
我找到了upstart配置/etc/init/jenkins.conf
并将端口修改为80env HTTP_PORT=80
当我启动jenkins via时service jenkins start
,ps
显示它运行了几秒钟然后终止.
这是因为jenkins作为jenkins
特权端口上的用户运行吗?如果是这样,我该如何解决这个问题?欢迎任何其他想法.
这是upstart配置:
description "jenkins: Jenkins Continuous Integration Server"
author "James Page <james.page@ubuntu.com>"
start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]
env USER="jenkins"
env GROUP="jenkins"
env JENKINS_LOG="/var/log/jenkins"
env JENKINS_ROOT="/usr/share/jenkins"
env JENKINS_HOME="/var/lib/jenkins"
env JENKINS_RUN="/var/run/jenkins"
env HTTP_PORT=80
env AJP_PORT=-1
env JAVA_OPTS=""
env JAVA_HOME="/usr/lib/jvm/default-java"
limit nofile 8192 8192
pre-start script
test -f $JENKINS_ROOT/jenkins.war || { stop ; exit 0; …
Run Code Online (Sandbox Code Playgroud) 下面是redis的新手脚本.如何创建一个pid所以我使用monit进行监控?
#!upstart
description "Redis Server"
env USER=redis
start on startup
stop on shutdown
respawn
exec sudo -u $USER sh -c "/usr/local/bin/redis-server /etc/redis/redis.conf 2>&1 >> /var/log/redis/redis.log"
Run Code Online (Sandbox Code Playgroud) 除了执行http://upstart.ubuntu.com/wiki/Debugging中建议的显式日志记录指令外,有没有办法启用outstart发生的输出?
我正在运行多个工作实例,如本答案中所述:自动启动多个upstart实例
问题:我可以一次重启所有实例吗?
要开始我的工作,我可以做:
initctl启动我的工作者
然后允许我这样做:
initctl status worker N = 1 worker(1)启动/运行,进程551
initctl status worker N = 2 worker(2)start/running,process 552
有没有办法做这样的事情:
initctl重启我的工作者
我希望能够重新启动所有实例,而无需知道有多少实例正在运行.
这是我的my-workers.conf
start on stopped cloud-init
stop on shutdown
env NUM_WORKERS=4
script
for i in `seq 1 $NUM_WORKERS`
do
start worker N=$i
done
end script
Run Code Online (Sandbox Code Playgroud)
和worker.conf
stop on shutdown
chdir /path/to/current
respawn
instance $N
script
exec su -c "/home/worker/.rvm/bin/rvm-shell -c 'bundle exec rake work 2>&1 >> /var/log/worker-$N.log'" worker
end script
Run Code Online (Sandbox Code Playgroud) 由于某种原因,暴发户不会激活我的virtualenv.
这就是我运行它的方式
script
# My startup script, plain old shell scripting here.
cd path/to/env
source bin/activate
....
end script
Run Code Online (Sandbox Code Playgroud)
virtualenv在手动启动时运行正常
为什么这不起作用?
我们正在完成一个项目的开发,客户端已经在使用它,但偶尔会出现一些错误 - 崩溃服务器.
我知道我可以在linux上注册一个服务作为'upstart'脚本,以便在崩溃时重启我的节点服务.
但我们的服务器运行其他东西,所以我们无法重启它.好吧,实际上,在写作的时候,我意识到我有两个问题:
我们使用PHP gearman worker并行运行各种任务.一切都运行得很好,我有愚蠢的小shell脚本,当我想要它们时将它们旋转起来.作为一名程序员(因此也是懒惰的),我想看看我是否可以通过一个新手脚本来解决这些问题.
我想出了如何使用实例节,所以我可以使用实例编号启动它们:
description "Async insert workers"
author "Mike Grunder"
env SCRIPT_PATH="/path/to/my/script"
instance $N
script
php $SCRIPT_PATH/worker.php
end script
Run Code Online (Sandbox Code Playgroud)
这很好用,就像这样开始它们:
sudo start async-worker N=1
sudo start async-worker N=2
Run Code Online (Sandbox Code Playgroud)
我想要使用这些工作者的方法是调整其中的一些(可能每个核心一个等),我想在启动时这样做.要清楚,我不需要upstart脚本来检测核心数量.我很高兴只说"做8个实例",但这就是我想要多次运行的原因.有没有办法让我在upstart脚本中使用"start on"子句自动执行此操作?
例如,启动实例1,2,3,4?然后让它们在关机时正常退出?
我想我可以将它挂钩到init.d脚本中,但我想知道upstart是否可以处理这样的事情,或者是否有人已经弄清楚了这个问题.
干杯啦!