में उपयोगकर्ता को स्विच करना मुझे अपने वेब एप्लिकेशन को तैनात करने के लिए मेरे एसएसएच वर्कफ़्लो की नकल करने के लिए फैब्रिक का उपयोग करते समय समस्या है।फैब्रिक
- SSH जड़ उपयोगकर्ता का उपयोग कर:
यहाँ आदेशों की मेरी हमेशा की तरह प्रवाह जब मैं एक सर्वर से ssh है। ssh [email protected]
- स्विच वेब उपयोगकर्ता के लिए: सु - वेब
- बदलें निर्देशिका: सीडी/SRV/वेब/prod/abc_project
- प्रारंभ virtualenv: workon abc_env
- Git पुल को पूरा करें: Git पुल मूल गुरु
- में चलने वाली स्क्रिप्ट: build_stuff -m
- रन एक और स्क्रिप्ट का निर्माण: ./run
मैं कपड़ा में एक तैनाती स्क्रिप्ट के रूप में यह लिखने का प्रयास किया है और मैं एक खोल उत्पादन जब रों मिल यू - वेब दर्ज किया गया है। मुझे स्क्रिप्ट जारी रखने के लिए Ctrl-D को हिट करना होगा। मैं अपने वर्चुअलएनवी को सक्रिय करने में भी असमर्थ हूं .... क्योंकि: su-web सफलतापूर्वक उपयोगकर्ता को web
पर स्विच करता है लेकिन Ctrl-d की वजह से (ताकि मैं फैब्रिक स्क्रिप्ट जारी रख सकूं), यह उस उपयोगकर्ता से वापस लॉग आउट हो जाता है और वापस जड़।
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)
... वहाँ एक और बात है::
यहाँ मेरी स्क्रिप्ट है नहीं, मैं वेब के रूप में शुरू में प्रवेश नहीं कर सकते, मैं रूट के रूप में लॉग इन किया है। यह वह वेब उपयोगकर्ता है जिसमें वर्चुअलएव रूट उपयोगकर्ता नहीं है।
धन्यवाद प्रत्येक बार प्रत्येक पासवर्ड टाइप करना! मैंने कभी भी वेब उपयोगकर्ता का उपयोग करके गिट कमांड चलाने का विचार नहीं किया। मैं इसके बजाए गिट कमांड के सामने 'सु-वेब' का उपयोग करने की कोशिश करता रहा। धन्यवाद एक लाख मेचमाइंड! – Mark