Puncte:2

De ce Apache2 nu găsește aplicația mea WSGI?

drapel ru

În întrebarea mea anterioară, am întrebat cum să fac ca mod_wsgi să utilizeze o anumită versiune Python. În urma răspunsului de la acea întrebare, am creat un mediu virtual Python 3.9 și am făcut ca WSGI să-l folosească. Cu toate acestea, acum aplicația mea Flask nu rulează deloc - doar am configurat pagina 404 pentru restul site-ului meu. Nu primesc erori când repornesc Apache2 și jurnalul de erori Apache este gol când vizitez site-ul. Cred că eroarea trebuie să se datoreze mediului meu virtual, deoarece am creat aplicații Flask de testare anterioare înainte de a folosi același stil de configurare.

Mediul meu virtual se află în cale/la/me/aplicația/venv/.

cale/la/my/app/runner.wsgi:

import sys

# Faceți să apară ceva în jurnalul de erori dacă WSGI este rulat
ridicați ValueError()

PROJECT_DIR = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, PROJECT_DIR)

din my_app import aplicația ca aplicație

O parte din /etc/apache2/sites-available/000-default-le-ssl.conf:

WSGIDaemonProcess myapp user=www-data group=www-data threads=4 python-home=/path/to/my/app/venv/
WSGIScriptAlias ​​/my-app/ path/to/my/app/runner.wsgi

/etc/apache2/mods-available/wsgi.load

LoadModule wsgi_module „/path/to/my/app/venv/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so”
WSGIPythonHome „cale/la/my/app/venv”

OS: Ubuntu 18.04.5 LTS

Puncte:1
drapel ru

Ok, am gasit problema. A fost cu adevărat stupid. Practic, scriam /var/www/my_app în loc de /var/www/my-app în /etc/apache2/sites-available/000-default-le-ssl.conf. Am reparat căile, am dezactivat site-ul, am activat site-ul, am reîncărcat Apache și acum funcționează. Sunt curios de ce Apache nu dă măcar un avertisment dacă nu poate accesa fișierul WSGI.

Puncte:0
drapel my
  • Ce utilizator rulează Apache?

  • Poate acel utilizator să acceseze aplicația dvs. WSGI? Verificați acest lucru rulând ls -la pe cale și toate componentele sale, sau prin utilizarea namei (nume /cale/....)

  • SELinux este în modul de aplicare? Dacă da, verificați jurnalele de audit. audit2de ce poate fi util (poate fi necesar să instalați unele pachete).

ThatCoolCoder avatar
drapel ru
Apache este rulat de `root` (1 instanță) și `www-data` (instanțe multiple). Cred că pot accesa directorul (care este în `var/www`), deoarece am încercat câteva teste pe care le-am găsit online și tot directorul are oricum permisiunile `0777`. Nu cred că folosesc SELinux, deoarece toate comenzile SELinux nu sunt găsite.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.