在使用Fabric模拟SSH工作流程来部署web应用程序时,我遇到了一个问题。
下面是我在通过SSH连接到服务器时通常使用的命令流:
使用根用户的
git拉取: git拉取原始主机
我尝试将其作为Fabric中的部署脚本编写,当输入su - web时,我得到一个shell输出。我必须按Ctrl-D键才能继续执行脚本。我也无法激活我的virtualenv....because: su - web成功地将用户切换到web
,但由于Ctrl-d (以便我可以继续Fabric脚本),它从该用户注销并返回到根目录。
下面是我的脚本:
env.user = 'root'
@roles('web')
def deploy():
dev_path = '/srv/web/prod'
app_path = '/srv/web/prod/rhino'
workon = 'workon rhino_env'
with prefix('su - web'):
puts('Switched to `web` user')
with settings(warn_only=True):
run('kill -9 `cat /srv/web/run/rhino/rhino.pid`')
puts('Stopped rhino...')
with cd(app_path):
run('git reset --hard HEAD')
puts('Discarded all untracked and modified files')
run('git checkout master')
run('git pull origin master')
users = run('users')
puts('Output from `users` command: %s' % users)
run(workon)
run('build_assets -m build')
run('cd %(dev_path)s; chown -R web:ebalu rhino' % {'dev_path': dev_path})
run('cd %(app_path)s; ./run' % {'app_path': app_path})
pid = run('cat /srv/web/run/rhino/rhino.pid')
puts('Rhino started again with pid: %s.' % pid)
...还有一件事:不,我最初不能以web登录,我必须以root登录。是web用户拥有virtualenv,而不是root用户。
https://stackoverflow.com/questions/13080643
复制相似问题