UWSGI'nin Ubuntu 16.04'te Django ve nginx ile çalışması için kablolama


14

Takip etmeye çalışıyorum bu öğretici kurulumu uWSGIile Djangove nginxüzerinde Ubuntu16.04.

Bu komutu yürütmeye çalıştığım son adıma kadar (ah ironi ...) iyi çalışıyor:

sudo service uwsgi start

Aşağıdaki hatayla başarısız olursa:

Uwsgi.service başlatılamadı: uwsgi.service birimi bulunamadı.

Diğerleri de benzer bir hata alıyor gibi görünüyor:

Uwsgi.service başlatılamadı: uwsgi.service birimi yüklenemedi: Böyle bir dosya veya dizin yok.

Sorun Ubuntu sürümüyle ilgili gibi görünüyor. Bu öğretici Ubuntu 14.04'ü hedeflese de, daha yeni sürümler için işe yaramayacak gibi görünüyor, çünkü 15 sürümünde Ubuntu upstartinit arka plan programından systemdinit arka plan programına geçti .

systemdUWSGI'yi nginx ve Django ile çalışacak şekilde başlatmak için nasıl kullanabilirim ?

Yanıtlar:


27

Gereken ilk değişiklik /etc/uwsgi/sites/firstsite.inidosyaya yapılır. Gereken tek değişiklik izinleri değiştiriyor 664için 666. Senaryo şöyle görünecektir:

[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

İkinci olarak , systemdyerine kullanmakta olduğumuz için upstart, aşağıdaki dosyaya gerek yoktur ve kaldırılabilir:/etc/init/uwsgi.conf

Üçüncü olarak , şu systemdkomut dosyasını oluştururuz /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

Bu yeni uWSGI servisiyle sistemd başlangıç ​​sisteminin durumunu yenileyin

sudo systemctl daemon-reload

Komut dosyasını başlatmak için aşağıdakileri çalıştırmanız gerekir:

sudo systemctl start uwsgi

uWSGIYeniden başlatmaya başlamak için şunlara da ihtiyacınız olacak:

sudo systemctl enable uwsgi

Durumunu kontrol etmek için aşağıdakileri kullanabilirsiniz:

systemctl status uwsgi

Daha fazla ayrıntıyı burada bulabilirsiniz .


1
Systemd'in bir python virtualenv kullanmasını nasıl sağlarsınız? Ben çalıştırdığınızda systemctl status uwsgialıyorum ImportError: No module named site.
tlng05

2
epik ..... ben bu kadar uzun süre mücadele oldu .... burada yazdığınız kolay ileri adım adım çözüm için teşekkür ederiz. +1
Rakib

1
Birkaç kez kullandım, çok yararlı bir cevap
jozi

0

Bu hatayı aşmaksudo systemctl daemon-reload için : yeni oluşturulan uwsgi.service dosyasının yüklenmesi.

Her yeniden başlatma hizmeti başlangıç yapmak için: sudo systemctl enable uwsgi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.