Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.
Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.
Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.
David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …
Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.
Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.
V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.
Byla vydána verze 3.0 (@, 𝕏) svobodného softwaru HAProxy (The Reliable, High Performance TCP/HTTP Load Balancer; Wikipedie) řešícího vysokou dostupnost, vyvažování zátěže a reverzní proxy. Detailní přehled novinek v příspěvku na blogu společnosti HAProxy Technologies.
rád bych napsal webovou aplikaci s Django frameworkem, nicméně jsme narazil na problém při nasazení s apachem. Bohužel, podle standardních how-to se mi to nedaří spustit.
Django server (python3 manage.py runserver
) funguje v pořádku.
V /var/log/httpd/error_log
je při každém načtení webu:
End of script output before headers: wsgi.py
Struktura aplikace je vygenerovaná z: python3-django-admin startproject abc
, takže:
/ abc/ manage.py abc/ __init__.py wsgi.py settings.py urls.py test/ __init__.py models.py views.py ...
Do wsgi.py
jsem akorát přidal na první řádek shebang + chmod +x wsgi.py
, jinak dostávám
Exec format error: exec of '/home/michal/www/abc/abc/wsgi.py' failedA ještě jsem přidal
sys.path.append('/home/michal/www/abc') sys.path.append('/home/michal/www')čímž jsem se zbavil ImportError-u.
/etc/httpd/conf/httpd.conf
vypadá takto:
<VirtualHost *:80> ServerName abc.localhost DocumentRoot /home/michal/www/abc WSGIScriptAlias / /home/michal/www/abc/abc/wsgi.py <Directory /home/michal/www/abc> Require all granted Options Indexes FollowSymLinks </Directory> <Directory /home/michal/www/abc/abc> Require all granted Options Indexes FollowSymLinks ExecCGI <Files wsgi.py> Require all granted </Files> </Directory> LogLevel info </VirtualHost>A samotný
wsgi.py
vypadá takto:
#!/usr/bin/python3 import os import sys sys.path.append('/home/michal/www/abc') sys.path.append('/home/michal/www') from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "abc.settings") application = get_wsgi_application()
Možná je hloupost volba ExecCGI, když to má být WSGI (moc tomu pořád nerozumím), pak se zobrazí testovací stránka, že httpd funguje, a v logu je:
Options ExecCGI is off in this directory: /home/michal/www/abc/abc/wsgi.py
mod_wsgi jsem instaloval jako: dnf install python3-mod_wsgi
$ httpd -M | grep wsgi wsgi_module (shared)
Nevíte, co by mohlo být špatně? Případně, kde ještě hledat závady?
Řešení dotazu:
wsgi.py
nepotřebuje žádné úpravy, kromě přidání cest k aplikaci.
Žádné ExecCGI
v httpd.conf
nemá být.
V httpd.conf
mi chybělo:
<IfModule mime_module> ... AddHandler wsgi-script .py ... </IfModule> ... WSGISocketPrefix run/wsgiA ještě
/run/httpd
musí mít nastavenou skupinu, pod kterou běží httpd, tedy:
drwx--x--- 3 root <skupina> 120 Aug 22 15:23 /run/httpdkde skupina bude nejčastěji
www-data
nebo apache
Poté lze postupovat podle django dokumentace.
Tiskni Sdílej: