我的代碼位於/home/ubuntu/api
在遠程服務器。 WSGI對象名爲app
,其存在於/home/ubuntu/api/api.py
中。我gunicorn的conf文件名爲gunicorn.conf.py
和/home/ubuntu/api
無法啓動與面料gunicorn
是目前我gunicorn.conf.py
import multiprocessing
bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1
backlog = 2048
worker_class = 'gevent'
daemon = True
debug = True
loglevel = 'debug'
accesslog = '/mnt/log/gunicorn_access.log'
errorlog = '/mnt/log/gunicorn_error.log'
max_requests = 1000
graceful_timeout = 20
我試圖通過面料遠程啓動gunicorn的服務器上。我的面料代碼看起來像這樣
@roles('stag_api')
def run_server():
with cd('/home/ubuntu/api'):
sudo('gunicorn -c gunicorn.conf.py api:app')
現在織物不顯示任何錯誤,但gunicorn不啓動。
所以我創建__init__.py
在/home/ubuntu/api
使它成爲一個包。我在__init__.py
文件
from api import app
這使得WSGI app
在包的命名空間中可用寫這個。然後我改變我的面料代碼到這
@roles('stag_api')
def run_server():
sudo('gunicorn -c /home/ubuntu/api/gunicorn.conf.py api:app')
即使現在面料不顯示任何錯誤,但gunicorn不啓動。
所以我創建了一個名爲server
一個shell腳本,它的代碼看起來像這樣
if [ "$1" = "start" ]; then
echo 'starting'
gunicorn -c /home/ubuntu/api/gunicorn.conf.py api:app
fi
if [ "$1" = "stop" ]; then
echo 'stopping'
pkill gunicorn
fi
if [ "$1" = "restart" ]; then
echo 'restarting'
pkill gunicorn
gunicorn -c /home/ubuntu/api/gunicorn.conf.py api:app
fi
我放在/home/ubuntu/api
這個shell腳本現在我的布代碼看起來像這樣
@roles('stag_api')
def stag_server(action='restart'):
if action not in ['start', 'stop', 'restart']:
print 'not a valid action. valid actions are start, stop and restart'
return
sudo('./server %s' % action)
現在,當我嘗試通過結構啓動服務器時,它打印starting
,因此shell腳本正在執行,而if
塊已達到,但仍然無法通過結構啓動服務器。
但是,如果我SSH服務器並做sudo ./server start
,gunicorn啓動。
有人可以解釋我做錯了什麼?
提供錯誤日誌,請 –
@amezhenin沒有錯誤。它只是不啓動gunicorn – lovesh
你知道嗎? –