与Nginx和Gunicorn在同一台服务器上的多个Mezzanine项目:"无法找到服务器IP地址"

时间:2018-02-17 00:22:55

标签: django nginx deployment gunicorn mezzanine

我对部署非常陌生。我试图在Ubuntu 16.04上部署两个Mezzanine 4.2.3项目(根据requirements.txt使用Django 1.10.8)。我使用此tutorial成功部署了第一个。我可以通过其域名访问它,比如example.com。我尝试在food.example.com或最好example.com/food上访问另一个,但浏览器返回:"无法找到服务器IP地址"。

example.com的{​​{1}}的nginx配置:

/etc/nginx/sites-available/example

server { listen 80; server_name [SERVER IP ADDRESS] example.com; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/example; } location / { include proxy_params; proxy_pass http://unix:/home/example/example.sock; } 的{​​{1}}的nginx配置:

food.example.com

我尝试使用/etc/nginx/sites-available/food但是nginx一直在说那里有可疑符号。我不知道这是否是阻止页面显示的问题之一,但无论如何我都将其更改为子域server { listen 81; server_name food.example.com; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/food; } location / { include proxy_params; proxy_pass http://unix:/home/food/food.sock; } } 以尝试隔离问题。

example.com/food food处的gunicorn配置文件:

example.com

/etc/systemd/system/gunicorn_example.service [Unit] Description=gunicorn daemon After=network.target [Service] User=root Group=www-data WorkingDirectory=/home/example ExecStart=/home/example/env_example/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/example/example.sock example.wsgi:application [Install] WantedBy=multi-user.target 处的gunicorn配置文件:

food.example.com

Nginx日志显示没有错误。

nginx的

/etc/systemd/system/gunicorn_food.service[Unit] Description=gunicorn daemon After=network.target [Service] User=root Group=www-data WorkingDirectory=/home/food ExecStart=/home/food/env_food/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/food/food.sock food.wsgi:application [Install] WantedBy=multi-user.target systemctl status似乎表明一切都很好。 gunicorn_examplegunicorn_food语法和测试都可以。

nginx -tnginx.conf都在运行。

gunicorn_examplegunicorn_food.service都已成功生成。

example.sock显示工人正在运行。

不确定这是否是一个重要细节,但我不会使用主管或暴发户进行部署。

我猜我写错了网址。但是我尝试了各种组合,并且没有把它弄好。

food.sock' urls.py ps aux | grep gunicorn settings.py`:

example.com

in the same folder as urlpatterns += [ url("^$", views.blog_post_list_index, name="home"), ] food.example.com位于同一文件夹中:

urls.py

应用目录中应用的settings.py

urlpatterns += [
    url("^food.example.com$", views.blog_post_list_index, name="home"),
    url("^food.example.com/", include('food_crud.urls')),
    url("^", include("mezzanine.urls")),
]

我错过了什么?

2018年2月18日编辑:urls.py中的urlpatterns += [ url('add/$', food_crud_views.FoodCreateView.as_view(), name='food add'), url('list/$', food_crud_views.FoodListView.as_view(), name='food list'), url('(?P<pk>\d+)/$', food_crud_views.FoodDetailView.as_view(), name='food detail'), url('(?P<pk>\d+)/update$', food_crud_views.FoodUpdateView.as_view(), name='food update'), url('(?P<pk>\d+)/delete$', food_crud_views.FoodDeleteView.as_view(), name='food delete'), ] 仅包含ALLOWED_HOSTS

1 个答案:

答案 0 :(得分:0)

在阅读了更多信息,询问IRC并进行更多实验之后,我发现我唯一要做的就是让两个项目都在端口80上进行监听。

这让我很困惑,因为我读过的大多数文章都说让他们在不同的端口上听。必须在这方面进行更多调查。