Okablowanie uWSGI do pracy z Django i nginx na Ubuntu 16.04

14

Staram się śledzić ten tutorial do instalacji uWSGIz Djangoi nginxna Ubuntu16.04.

Wszystko działa dobrze aż do ostatniego kroku (o ironio ...), w którym próbuję wykonać to polecenie:

sudo service uwsgi start

Jeśli nie powiedzie się następujący błąd:

Nie udało się uruchomić uwsgi.service: Nie znaleziono jednostki uwsgi.service.

Inni wydają się otrzymywać podobny błąd:

Nie udało się uruchomić uwsgi.service: Nie udało się załadować jednostki uwsgi.service: Brak takiego pliku lub katalogu.

Problem wydaje się być związany z wersją Ubuntu. Chociaż ten samouczek jest przeznaczony dla systemu Ubuntu 14.04, wydaje się, że nie będzie on działał dla nowszych wersji, ponieważ w wersji 15 Ubuntu przełączył się z upstartdemona systemdinit na demona init .

Jak mogę użyć systemddo uruchomienia uWSGI, aby działał z Nginx i Django?

Vlad Schnakovszki
źródło

Odpowiedzi:

27

Pierwsza modyfikacja jest potrzebna do /etc/uwsgi/sites/firstsite.inipliku. Jedyną potrzebną zmianą jest zastąpienie uprawnień od 664do 666. Skrypt wyglądałby tak:

[uwsgi]
project = firstsite
base = /home/user

chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

Po drugie , ponieważ używamy systemdzamiast upstart, następujący plik nie jest potrzebny i można go usunąć:/etc/init/uwsgi.conf

Po trzecie , tworzymy następujący systemdskrypt w /etc/systemd/system/uwsgi.service:

[Unit]
Description=uWSGI Emperor service
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

Odśwież stan systemowego systemu inicjującego dzięki nowej usłudze uWSGI na pokładzie

sudo systemctl daemon-reload

Aby uruchomić skrypt, musisz uruchomić następujące czynności:

sudo systemctl start uwsgi

Aby rozpocząć uWSGIpo ponownym uruchomieniu, będziesz również potrzebować:

sudo systemctl enable uwsgi

Aby sprawdzić jego status, możesz użyć następujących poleceń:

systemctl status uwsgi

Niektóre dalsze szczegóły można znaleźć tutaj .

Vlad Schnakovszki
źródło
1
Jak zmusić systemd do używania wirtualnego Pythona? Kiedy biegnę systemctl status uwsgi, dostaję ImportError: No module named site.
tlng05
2
epickie ..... walczyłem z tym tak długo ... dziękuję za proste, proste rozwiązanie, które tu napisałeś. +1
Rakib
1
Użyłem go kilka razy, bardzo pomocna odpowiedź
jozi
0

Aby obejść ten błąd: należy załadować sudo systemctl daemon-reloadnowo utworzony plik uwsgi.service .

Aby uruchomić usługę na każdym restarcie: sudo systemctl enable uwsgi.

Alexandr Karbivnichiy
źródło