Выполнение двух проектов Django по одной капле с Gunicorn и Nginx - PullRequest
0 голосов
/ 28 ноября 2018

Я исчерпал себя, пытаясь решить эту проблему, я надеюсь, что смогу получить некоторую помощь

Я хочу разместить два проекта Django на одной капле DigitalOcean.Я могу без проблем разместить один сайт после выполнения этого руководства , но я просто не могу найти способ заставить эту работу работать с двумя сайтами.В настоящее время example.com работает, и example2.com имеет проблему с тем, что он использует модуль настроек project1 - project1.settings.Мне нужно использовать модуль project2.settings из его директории проекта, и я не знаю, как это сделать.

Мой файл gunicorn.socket для проекта 1:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Мой оружейный.файл сокета для проекта 2:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/project2.gunicorn.sock

[Install]
WantedBy=sockets.target

Мой файл gunicorn.service для проекта 1:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=rain
Group=www-data
WorkingDirectory=/home/rain/rv/project1-web
ExecStart=/home/rain/rv/rv-env/bin/gunicorn \
      --access-logfile - \
      --workers 3 \
      --bind unix:/run/gunicorn.sock \
      project1.wsgi:application

[Install]
WantedBy=multi-user.target

Я подумал, что должен быть второй служебный файл для другого проекта, поэтому я создал project2.gunicorn.service:

[Unit]
Description=gunicorn daemon
Requires=project2.gunicorn.socket
After=network.target

[Service]
User=rain
Group=www-data
WorkingDirectory=/home/rain/rv/project2-web
ExecStart=/home/rain/rv/rv-env/bin/gunicorn \
      --access-logfile - \
      --workers 3 \
      --bind unix:/run/gunicorn.sock \
      project2.wsgi:application

[Install]
WantedBy=multi-user.target

Файл, доступный моим сайтам nginx для проекта 1:

server {
    server_name example.com; 
    charset     utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/rain/rv/project1-web;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot    
}

server {
    server_name www.example.com;
    charset     utf-8;

    return 301 https://example.com$request_uri;
}
server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen      80;
    server_name example.com www.example.com;
    return 404; # managed by Certbot
}

И еще один блок сервера для проекта 2:

server {
    server_name example2.com; 
    charset     utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/rain/rv/project2-web;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/project2.gunicorn.sock;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot    
}

server {
    server_name www.example2.com;
    charset     utf-8;

    return 301 https://example2.com$request_uri;
}
server {
    if ($host = www.example2.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = example2.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen      80;
    server_name example2.com www.example2.com;
    return 404; # managed by Certbot
}
...