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ć:
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 .
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 ossys.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 ServerAdminDocumentRoot / 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
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
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 ![]()