Могу ли я запустить 3 службы uwsgi, используя другой порт

У меня есть 3 приложения Python django на одном сервере. И я хочу запускать каждую службу, используя другой порт.

пр.) 80 для конечного пользователя 8001 для поставщика услуг 8002 для оператора услуг

Но я понятия не имею, как я могу это сделать.

Теперь одна служба uwsgi работает с использованием systemctl.

Это мой сервис uwsgi.service.

# uwsgi.service
[Unit]
Description=uWSGI
After=syslog.target

[Service]
ExecStartPre=/bin/bash -c 'mkdir -p /var/run/uwsgi; chown root:ubuntu 
/var/run/uwsgi; chmod g+w /var/run/uwsgi;'
ExecStart=/bin/bash -c 'source /var/www/html/remosys/bin/activate; uwsgi --ini /var/www/html/remosys/uwsgi.ini'
#Restart=always
Restart=on-failure
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

А вот uwsgi.ini выглядит следующим образом.

[uwsgi]
uid = ubuntu
gid = ubuntu

# Django-related settings
# the base directory (full path)
chdir = /var/www/html/remosys/remoshin

# Django's wsgi file
module = remoshin.wsgi

# the virtualenv (full path)
home = /var/www/html/remosys


# process-related settings
# master
master = true

# maximum number of worker processes
processes = 2

threads = 1

# the socket (use the full path to be safe
socket = /var/run/uwsgi/master.sock

pidfile = /var/run/uwsgi/master.pid

# ... with appropriate permissions - may be needed
chmod-socket = 666

# clear environment on exit
vacuum = true

thunder-lock = true

max-requests = 6000
max-requests-delta = 300

# log
logto = /var/log/uwsgi/uwsgi.log
deamonize = /var/log/uwsgi/uwsgi-@(exec://date +%Y-%m-%d).log
log-reopen = true

И моя настройка nginx следующая.

# the upstream component nginx needs to connect to
upstream django {
    # for a file socket
    server unix:///var/run/uwsgi/master.sock;
}

# configuration of the server
server {
    # the port your site will be served on
    listen      80;
    # the domain name it will serve for
    # substitute your machine's IP address or FQDN
    server_name localhost
    charset     utf-8;

    location /clinic {
        # your Django project's static files - amend as required
        alias /home/ubuntu/public_html/clinic;
    }
    # max upload size
    # Django media
    location /static {
        # your Django project's static files - amend as required
        alias /home/ubuntu/remosys/remoshin/apiv1/static;
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        # the uwsgi_params file you installed
        include     /var/www/html/remosys/uwsgi_params;
}

}

Я хочу знать, как мне сделать настройки для запуска некоторой службы uwsgi и как настроить файл конфигурации nginx.

Не могли бы вы дать мне совет?

Заранее спасибо.


person Kazzz Studio    schedule 24.08.2017    source источник


Ответы (1)


uwsgi_p1.ini для my_project1

[uwsgi]
chdir = /root/my_workplace/my_project1
module = my_project1.wsgi
virtualenv = /root/my_workplace/virtual/my_project1
processes = 2
socket = 127.0.0.1:10001    # **pay attention to this port**
vacuum = true
master = true

nginx_p1.conf для my_project1

server {
listen      8888;  #  use different server_name or listenport
charset     utf-8;
client_max_body_size 75M;

server_name project1.mydomain.com;  #  use different server_name or listenport

location / {
    uwsgi_pass  127.0.0.1:10001;   #  pay attention to here
    include     uwsgi_params;
}
}

==============================

uwsgi_p2.ini для my_project2

[uwsgi]
chdir = /root/my_workplace/my_project2
module = my_project2.wsgi
virtualenv = /root/my_workplace/virtual/project2
processes = 2
socket = 127.0.0.1:10002
vacuum = true
master = true

nginx_p2.conf для my_project2

server {
listen      8889;
charset     utf-8;
client_max_body_size 75M;

server_name project2.mydomain.com;  

location / {
    uwsgi_pass  127.0.0.1:10002;   
    include     uwsgi_params;
}
}

и так далее...

person study-machine    schedule 24.08.2017
comment
Спасибо за совет. У меня еще один вопрос. Как запустить сервис uwsgi? Я пробовал sudo systemctl uwsgi --ini uwsgi_1.ini и sudo systemctl uwsgi --ini uwsgi_2.ini. Но при попытке запустить вторую команду у меня появилось повторяющееся сообщение об ошибке. - person Kazzz Studio; 24.08.2017
comment
Я использую супервизор. Это распространенный способ администрирования процесса django-uwsgi. - person study-machine; 24.08.2017
comment
@KazzzStudio Не используйте супервизора. Раньше мы использовали supervisor, потому что в то время systemd не был доступен. Теперь, когда все основные дистрибутивы используют systemd, нет необходимости использовать супервизор (systemd уже установлен, он более надежен и одинаково прост в настройке). Единственным недостатком является то, что у него худшая документация, но, поскольку вы уже успели с ним поработать, вам не нужно использовать устаревшее решение. - person Antonis Christofides; 24.08.2017
comment
@KazzzStudio Вам просто нужно создать uwsgi1.service и uwsgi2.service (но лучше использовать более описательный квалификатор, чем 1 и 2). - person Antonis Christofides; 24.08.2017