使用Fabric來模擬我的SSH工作流以部署我的Web應用程序時,出現問題。在Fabric中切換用戶
這是我平時的命令時,流我SSH連接到服務器:使用root用戶
- SSH。 SSH [email protected]
- 切換到網絡用戶:蘇 - 網絡
- 更改目錄:cd/SRV /網絡/生產/ abc_project
- 開始的virtualenv:workon abc_env
- 執行混帳拉:混帳拉原點掌握
- 運行腳本:build_stuff -m建立
- 運行另一個腳本:./run
我試着寫本作中,布料將部署腳本,我得到一個shell的輸出,當s您輸入了網頁。我必須按Ctrl-D來繼續腳本。我也無法激活我的virtualenv ....因爲: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)
...還有一兩件事:沒有,我最初不能登錄,網頁,我必須以root登陸。它是具有virtualenv而不是root用戶的Web用戶。
非常感謝!我從來沒有想過使用Web用戶來運行git命令。我一直試圖在git命令前面使用'su-web'。感謝百萬計! – Mark