我对部署非常陌生。我试图在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_example
说gunicorn_food
语法和测试都可以。
nginx -t
和nginx.conf
都在运行。
gunicorn_example
和gunicorn_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
。
答案 0 :(得分:0)
在阅读了更多信息,询问IRC并进行更多实验之后,我发现我唯一要做的就是让两个项目都在端口80上进行监听。
这让我很困惑,因为我读过的大多数文章都说让他们在不同的端口上听。必须在这方面进行更多调查。