搭建 Django + nginx + gunicorn 網站,fabric 文件如下:
from fabric.api import env, run
from fabric.operations import sudo
import win_unicode_console
win_unicode_console.enable()
GIT_REPO = 'https://github.com/lanlingsheng/blogprojecttwo.git'
env.user = 'gaoyan'
env.password = '*****'
env.hosts = ['www.rubic.win']
env.port = '22'
def deploy():
source_folder = '/home/gaoyan/sites/blogprojecttwo'
run('cd {} && git pull'.format(source_folder))
run("""
cd {} &&
../venv/bin/pip3 install -r requirements.txt &&
../venv/bin/python3 manage.py collectstatic --noinput &&
../venv/bin/python3 manage.py migrate
""".format(source_folder))
sudo('restart gunicorn-www.rubic.win')
sudo('service nginx reload')
使用 Fabric 自動部署出現報錯,運行 fab deploy
:
[www.rubic.win] sudo: restart gunicorn-www.rubic.win
[www.rubic.win] out: sudo password:
[www.rubic.win] out: restart: Unknown instance:
[www.rubic.win] out:
Fatal error: sudo() received nonzero return code 1 while executing!
Requested: restart gunicorn-www.rubic.win
Executed: sudo -S -p 'sudo password:' /bin/bash -l -c "restart gunicorn-www.rubic.win"
Aborting.
Disconnecting from www.rubic.win... done.
在網上找了半天都是關於 sudo 權限問題的,例如這裏
後來發現報錯出現在 sudo('restart gunicorn-www.rubic.win')
這個位置。
在服務器上運行 sudo restart gunicorn-www.rubic.win
發現 gunicorn-www.rubic.win
如果沒有在運行使用 sudo start
就會報錯不運行 gunicorn-www.rubic.win
。所以要現在服務器上 sudo start gunicorn-www.rubic.win
確保服務器運行成功 gunicorn-www.rubic.win
,才能用 Fabric。