nginx / 1.4.6(Ubuntu) Django 1.8.4
这是我第一次在实时网络服务器上部署任何内容。 主机为我提供了IP地址和技术域名。
此时我只想使用Django开发webserber来显示网站的工作情况。这只是为了我自己,而不是一个真正的网站。 稍后一切都将通过gunicorn。
在/ etc / nginx / sites-available / default中:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
proxy_pass http://localhost:8000;
}
}
然后在Django项目中:
在urls.py
from lists import views as list_views
from lists import urls as list_urls
urlpatterns = [
#url(r'^admin/', include(admin.site.urls)),
url(r'^$', list_views.home_page, name="home"),
url(r'^lists/', include(list_urls)),
]
**In lists/urls.py**
from lists import views
urlpatterns = [
url(r'^new$', views.new_list, name='new_list'),
url(r'^(\d+)/$', views.view_list, name='view_list' ),
url(r'^(\d+)/add_item$', views.add_item, name='add_item'),
]
**lists/views.py**
import logging
def home_page(request):
logger = logging.getLogger(__name__)
logger.error('In home_page')
def view_list(request, list_id):
logger = logging.getLogger(__name__)
logger.error('In view_list')
def new_list(request):
logger = logging.getLogger(__name__)
logger.error('In new_list')
然后当我通过IP地址或技术链接访问我的网站时,我可以看到主页。
但是当我去/ lists / new时,我在浏览器中捕获了404。和
一样nginx/1.4.6 (Ubuntu)
这意味着Django服务器甚至没有得到通知。并且检查日志证明了这一点。没有消息"在new_list"。绝对是Django dev服务器在这里没有捕获信号。
你能帮我解决这个问题吗?
答案 0 :(得分:1)
如果你想检查你的Django项目是否运行良好,你不需要Nginx。只需./manage.py runserver example.com:8000
即可通过http://example.com:8000
访问您的网站。如果端口未打开,您也可以使用service nginx stop
停止Nginx,然后在端口:80上运行Django。
此设置似乎告诉Nginx尝试查看文件是否存在,如果不存在则返回HTTP 404。我认为它不会到达第二行。
location / {
try_files $uri $uri/ =404;
proxy_pass http://localhost:8000;
}
尝试删除" try_files"并为您要提供的静态文件添加额外的location
规则。
location /static/ {
try_files $uri $uri/ =404;
}
location / {
proxy_pass http://localhost:8000;
}