+ Apache + lighttpd mod_wsgi Django

Komentarze

Napisałem jak skonfigurować Apache, mod_python i Django i jak postawić lighttpd za Apache .

Ostatnio postanowiłem host mój najczęściej odwiedzanych na innej stronie dostawcy VPS [1], rozpoczęła śledztwo, aby zaktualizować swoją wiedzę na temat rozmieszczenia Django. I nie inaczej tym razem, przy użyciu mod_wsgi ( zalecany sposób rozmieszczenia Apache i Django ), konfiguracji Apache i lighttpd jest za dynamicznej zawartości (innymi słowy, lighttpd posłuży statyczne media).

Zrobiłem wszystko co poniżej w ciągu ostatnich kilku dni, i nie napisał tego, co robię, bo dotyczy ono wiele doświadczeń (prób i błędów) dla mnie. Takich, piszę ten artykuł oparty na mojej pamięci i sprawdzanie plików konfiguracyjnych. Jeśli pojawią się jakiekolwiek problemy, proszę zostawić komentarz, a ja wyjaśnić wszelkie pominięcia.

Oto jak to zrobić:

Zainstaluj Podejrzani

Mogę wybrać Ubuntu dystrybucji Linuksa, instalacji i wszystko jest bardzo proste na jej temat. sudo apt-get install package-name . Ta część jest dobrze pokryte całym internecie, więc nie będzie komentarza w szczegóły jak to się robi. Wystarczy powiedzieć, niektóre pakiety mam zainstalowane Czy apache2 , libapache2-mod-wsgi i lighttpd .

Apache i mod_wsgi, aby załadować projekt

Od aktu lighttpd Czy głównego serwera w mojej domenie, zdecydowałem się przenieść do Apache port 81:

sudo vi / etc/apache2/ports.conf

Zastępowanie istniejących ip: port linii z pracy:

NameVirtualHost 127.0.0.1:81
Słuchaj 81

Gdzie postawić własny modułów Pythona na nowszych instalacji Ubuntu zmienił się /usr/local/lib/python2.6/dist-packages/ . Dlatego Wysłałem Django, mój projekt i inne niezbędne moduły (które nie zostały zainstalowane przez apt-get ) do tego katalogu, zostawiając mnie ze strukturą następujących opcji:

/ Usr/local/lib/python2.6/dist-packages/django /
/ Usr/local/lib/python2.6/dist-packages/my_project_name /

Mod_wsgi dokumentacji doskonały artykuł na temat integracji Django , ale jest to dość długości. Powinieneś przeczytać ją tak, ponieważ istnieje wiele opcji, które można użyć. Oto ściągawki:

Tworzenie dokumentu głównego dla nazwy domeny:

sudo mkdir / var / www / example.com

Co utworzy plik jest ładowany przez mod_wsgi z konfiguracji projektu:

sudo mkdir / usr/local/lib/python2.6/dist-packages/project_name/apache /
sudo vi / usr/local/lib/python2.6/dist-packages/project_name/apache/django.wsgi

Tych treści:

import sys
import os

sys.path.append ('/ usr/local/lib/python2.6/dist-packages ")
os.environ ['] DJANGO_SETTINGS_MODULE "=" project_name.settings "

django.core.handlers.wsgi import

stosowania django.core.handlers.wsgi.WSGIHandler = ()

Utwórz plik konfiguracji domeny dla serwera Apache:

sudo vi / etc/apache2/sites-available/example.com

Tych treści:

<VirtualHost 127.0.0.1:81>
example.com ServerName
username@example.com ServerAdmin

DocumentRoot / var / www / example.com

Alias / media / / usr/local/lib/python2.6/dist-packages/django/contrib/admin/media /
<Directory /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media>
Opcje Indeksy-
Order deny, allow
Przyjmuj ze wszystkich
</ Directory>

Alias / project_media_dir / usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir /
<Directory /usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir>
Opcje Indeksy-
Order deny, allow
Przyjmuj ze wszystkich
</ Directory>

WSGIScriptAlias / usr/local/lib/python2.6/dist-packages/project_name/apache/django.wsgi
example.com WSGIDaemonProcess
example.com WSGIProcessGroup

<Directory /usr/local/lib/python2.6/dist-packages/project_name/apache>
Order deny, allow
Przyjmuj ze wszystkich
</ Directory>
</ VirtualHost>

Uaktywnić:

cd / etc/apache2/sites-enabled /
.. sudo ln-s / sites-available / example.com

Skonfigurować lighttpd do proxy non-static media wniosków o dopuszczenie do Apache

I Used MySQL Performance Blog jest "reverse proxy do Lighttpd" artykuł jako podstawa do własnej konfiguracji. W związku z tym będziemy mieć url http://example.com/server-status , które wymagają uwierzytelniania, pozwalając nam zobaczyć status serwera Apache.

Tworzenie katalogu na logi błędów:

sudo mkdir / var / log / lighttpd / example.com

Utwórz plik konfiguracji domeny lighttpd:

sudo vi / etc/lighttpd/conf-available/20-example.com.conf

Tych treści:

server.modules + = ("mod_auth"
"Mod_status"
"Mod_proxy"
)

$ HTTP ["host"] = ~ "(^ | \.) Przykład \. Com $" (
$ HTTP ["url"]! ~ "\. (Js | css | gif | jpg | png | ico | txt | swf | html htm |) $" (
proxy.server = ("" => (
("Host" => "127.0.0.1", "port" => 81)
))
)

server.document-root = "/ var / www / example.com /"
server.errorlog = "/ var / log / lighttpd / example.com / error.log"
powiedzieć listing.activate = "wyłączyć"

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/ var / www /. htpasswd"
auth.require = ("/" server-status => (
"Metoda" => "podstawowym",
"Åšwiat" => "status",
"Wymagania" => "valid-user"
)
)
)

Linie są warte wzmianki w powyższych konfiguracji:

$ HTTP ["host"] = ~ "(^ | \.) Przykład \. Com $" (

To wrap wewnątrz dyrektyw odnoszą się jedynie do wniosków o example.com.

$ HTTP ["url"]! ~ "\. (Js | css | gif | jpg | png | ico | txt | swf | html htm |) $" (
proxy.server = ("" => (
("Host" => "127.0.0.1", "port" => 81)
))
)

Te będą wysyłać wnioski o dokumenty, które nie kończy się w określonym rozszerzenia ip 127.0.0.1, port 81, Apache gdzie mieszka. Zasadniczo wszystko, co jest statyczny (a dokładnie, określonym przez | oddzielić wyrażenie regularne), będą obsługiwane przez lighttpd.

cd / etc / lighttpd / conf-aktywne /
sudo ln-s .. / conf-available / example.com.conf

Powiedz, gdzie system plików projektu i admina Django statyczny znajdują się:

sudo ln-s / usr/local/lib/python2.6/dist-packages/django/contrib/admin/media / var / www / example.com / media
sudo ln-s / usr/local/lib/python2.6/dist-packages/project_name/templates/project_media_dir / var / www / example.com / project_media_dir /

Wreszcie, należy ponownie uruchomić wszystko tak najnowszej konfiguracji mogą być stosowane

sudo / etc/init.d/apache2 restart
sudo / etc / init.d / lighttpd restart

Więc, co rzeczywiście dzieje się?

Kiedy użytkownik przechodzi do witryny (example.com), wniosek lighttpd trafi w pierwszej kolejności. Jeśli ścieżka dokument nie kończy się łańcuch na naszej liście rozszerzeń statycznych treści, zgłoszenie zostanie proxy do Apache na porcie 81, lighttpd Jeśli nie, to serwuje się.

I to, że pamięć jest prawidłowe. Czy brakuje mi czegoś? Komentarz do woli.

[1] linodivas, jeśli jesteś ciekaw. Głównie dlatego, że przepustowość jest tańsza. Jeśli szukasz linodivas przekazania linodivas kod linodivas ze zniżkami lub kod promocyjny, zarejestruj się za pomocą tego linka do kredytów mnie odwołania. Dzięki :)

    blog komentarze powered by Disqus

    Português flagItaliano flagCoreano flagChinês (simplificado) flagEnglish flagAlemâo flagFrancês flagEspanhol flag
    Japonês flagÁrabe flagRusso flagHolandês flagBúlgaro flagTcheco flagCroata flagDinamarquês flag
    Finlandês flagHindu flagPolonês flagRomeno flagSueco flagGrego flagNorueguês flag 
    By N2H
    Dolet 96 zniżki na hosting Dreamhost!
    Użyj "PROMO KOD" bezwładności. LAMP z 20GB miejsca i 1TB transferu.

    Import:

    • Brak pokrewnych postów

    Kategorii