Я очень новичок в развертывании. Я пытаюсь развернуть два проекта Mezzanine 4.2.3 (они используют Django 1.10.8 в соответствии с требованиями.txt) на Ubuntu 16.04. Я успешно развернул первый с помощью этого руководство. Я могу получить к нему доступ через его доменное имя, скажем, example.com
. Я пытаюсь сделать другой доступным либо на food.example.com
, либо предпочтительно на example.com/food
, но браузер возвращает: «IP-адрес сервера не найден».
Конфиг nginx для example.com
в /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;
}
Конфиг nginx для food.example.com
в /etc/nginx/sites-available/food
:
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
, но nginx продолжал говорить, что в нем есть подозрительные символы. Я не знаю, является ли это одной из проблем, препятствующих отображению страницы, но я все равно изменил его на субдомен 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
по адресу /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
Журнал Nginx не показывает ошибок.
systemctl status
для nginx, gunicorn_example
и gunicorn_food
, похоже, указывают на то, что все в порядке. nginx -t
говорит, что синтаксис nginx.conf
и тест в порядке.
И gunicorn_example
, и gunicorn_food.service
работают.
И example.sock
, и food.sock
были успешно сгенерированы.
ps aux | grep gunicorn
показывает бегущих рабочих.
Не уверен, что это важная деталь, но я не использую супервизор или выскочку для развертывания.
Я предполагаю, что я написал URL-адреса неправильно. Но я пробовал разные комбинации и не получил нужного результата.
example.com
в urls.pyin the same folder as
settings.py`:
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")),
]
Приложение 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'),
]
Что я пропустил?
Редактировать 18 февраля 2018 года: ALLOWED_HOSTS
в settings.py
содержит только ["example.com/food,"]
.