我在Dotcloud上部署了我的Django應用程序。使用Nginx和自定義服務來提供靜態文件。 Dotcloud
我正在使用Gevent和django-socketio的websockets,所以我使用了自定義服務。目前,我仍然使用'runserver_socketio'來使其工作。
現在,我想用Nginx來提供我的靜態文件。我發現這個:https://github.com/dotcloud/nginx-on-dotcloud
我試過使用它。這裏是我的dotcloud.yml:
www:
type: custom
buildscript: nginx/builder
processes:
app: /home/dotcloud/env/bin/python myproject/manage.py runserver_socketio 0.0.0.0:$PORT_WWW
nginx: nginx
ports:
www: http
systempackages:
- libevent-dev
- python-psycopg2
- libpcre3-dev
db:
type: postgresql
而且我在我的應用程序的根目錄下添加了文件夾'nginx'。
我也在安裝後的末尾增加:
nginx_config_template="/home/dotcloud/current/nginx/nginx.conf.in"
if [ -e "$nginx_config_template" ]; then
sed > $HOME/nginx/conf/nginx.conf < $nginx_config_template \
-e "s/@[email protected]/${PORT_WWW:-42800}/g"
else
echo "($nginx_config_template) isn't there!!! Make sure it is in the correct location or else nginx won't be setup correctly."
fi
但是,當我去我的應用程序後,我推,我得到的錯誤:
403 Forbidden, nginx/1.0.14
而且Nginx的不服務錯誤頁面404。
所以我不知道爲什麼,但我無法再訪問我的應用程序。你對我如何使用Nginx設置我的應用程序有任何想法嗎?
非常感謝您
你想把你的應用放在nginx的後面,還是放在它的前面? - 如果你把你的應用放在nginx之後,你將無法再使用websockets。 - 如果你把你的應用放在nginx前面,我不確定你會從nginx中獲得什麼。 所以我想了解背後的理由! – jpetazzo
nginx文件夾位於dotcloud應用程序或django應用程序的根目錄下嗎? 'nginx:nginx'讓我相信nginx進程將在nginx用戶下運行。 nginx用戶是否有權讀取nginx文件夾中的文件? – Enrico
@jpetazzo我不想用nginx來提供我的靜態文件,並把我的應用放在nginx前面。我仍然使用runserver_socketio運行我的應用程序,所以我不能將我的DEBUG模式設置爲False,因爲Django將停止提供我的靜態文件。所以我需要使用服務器來做到這一點。我是編程新手,所以我不知道做什麼是最好的方法。我會採取任何建議,你可以給我!謝謝您的回答。 – Marcolac