2015-12-11 19 views
0

我有一個運行gunicorn的Django應用程序 - 我現在想用waitress替換它。很簡單,我通過apt-get install python-waitress安裝了服務員,並通過waitress-serve --port=8080 myproject.wsgi:application運行。構建蟒蛇服務員的Upstart文件

現在我想設置這個通過Upstart文件(我在Ubuntu上)運行。我希望它在正常的運行級別2,3,4和5上運行,並在其他任何運行級別(如系統重新啓動,關閉或單用戶時)中停止運行。我也希望Upstart在失敗時自動重啓服務。最後但並非最不重要,我需要waitress運行在端口80上,而不是端口8080上。

我的問題是:如何構建我的Upstart文件以反映這些要求?還有其他的內容會有幫助嗎?請指教;這是我的主要生產服務器。

其次,根據waitress本身,除了能夠使用SSL以外,使用反向代理(如Nginx)和waitress有什麼優勢?我的應用程序是一個閱讀繁瑣的Django網絡應用程序,用戶可以在其中互相聚集和聊天。

回答

0

我不會寫你自己的新貴腳本,而是建議去看看其他衆所周知的戰鬥測試解決方案。一種這樣的流行解決方案是supervisor。它是純Python,並且安裝和配置非常簡單。如果你使用apt-get進行安裝,它會附帶所有必要的腳本,以便在Ubuntu本身重新啓動時運行它(儘管最有可能你不會安裝最新版本的管理程序)。一旦安裝了管理員,您所需要做的就是爲您的Web服務器進程添加一個小配置。然後,當你啓動主管時,它將管理你的網絡服務器進程。下面是一個簡單的主管配置:

[program:project_name] 
command=/path/to/virtualenv/bin/waitress-serve --port=8080 myproject.wsgi:application 
directory=/path/to/django/project 
autostart=true 
autorestart=true 
redirect_stderr=True 
user=www 

注意,管理員可以管理多個進程,所以如果你有需要,爲您的Web應用程序運行的任何其他進程,你可以將它們添加到監事爲好。

至於使用nginx的優點,關於這個話題有很多其他的StackOverflow問題,所以我建議看看那些,而不是在這裏背誦類似的想法。這裏有幾個我發現:

+0

三木感謝對主管的職位。關於nginx,作爲女服務員的反向代理,我問了這個問題,因爲(i)我讀了這篇文章,聲稱女服務員是一個足夠好的生產級獨立服務器:http://blog.etianen.com/blog/2014/01/ 19/gunicorn-heroku-django /,以及(ii)有人提到使用nginx與女服務員的唯一原因是因爲https支持:http://stackoverflow.com/questions/19462959/i-can-not-connect-to -https-waitress-wsgi-server –

+1

沒有我自己用過女服務員但是我會想象nginx會提供更高性能的服務靜態文件和其他東西nginx很像負載平衡等。它也有一些基本的工具來防禦DDOS等附加,因爲它可以更有效地管理內存。但在一天結束時,我認爲你應該使用任何適合你的作品。我會給nginx一個試試 – miki725

+0

是的,我已經採取了你的建議,並深入潛水設置nginx + gunicorn。一切工作在那裏,除了當我嘗試訪問一些數據庫記錄,我得到一個**無效輸入語法的類型inet **錯誤。如果你能幫忙,快速瀏覽一下我剛剛打開的單獨問題:http://stackoverflow.com/questions/34238623/invalid-input-syntax-for-type-in​​et-db-error-in-django-app -with-的Postgres和區 –