首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >交换矩阵中的用户

交换矩阵中的用户
EN

Stack Overflow用户
提问于 2012-10-26 12:16:49
回答 3查看 15.7K关注 0票数 20

在使用Fabric模拟SSH工作流程来部署web应用程序时,我遇到了一个问题。

下面是我在通过SSH连接到服务器时通常使用的命令流:

使用根用户的

  1. SSH。ssh root@1.2.3.4
  2. Switch to web用户: su -web构建运行更改目录: cd /srv/web/prod/abc_project
  3. Start abc_env
  4. Perform虚拟ssh:工作区

git拉取: git拉取原始主机

  1. 运行脚本: build_stuff -m构建
  2. 运行另一个脚本:./run

我尝试将其作为Fabric中的部署脚本编写,当输入su - web时,我得到一个shell输出。我必须按Ctrl-D键才能继续执行脚本。我也无法激活我的virtualenv....because: su - web成功地将用户切换到web,但由于Ctrl-d (以便我可以继续Fabric脚本),它从该用户注销并返回到根目录。

下面是我的脚本:

代码语言:javascript
复制
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用户。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13080643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档