Jag har skrivit hur man konfigurerar Apache, mod_python och Django och hur man sätter lighttpd bakom Apache .
Nyligen bestämde jag mig för att vara värd min mest besökta webbplats om en annan VPS leverantör [1], och började jakten på att uppdatera min kunskap om Django distribution. Jag gjorde saker annorlunda den här gången, med hjälp mod_wsgi (det rekommenderade sättet att driftsätta Apache och Django ), konfigurera Apache och lighttpd är bakom dynamiskt innehåll (med andra ord, lighttpd kommer att tjäna statiska medier).
Jag gjorde allt under de senaste par dagar, och inte skrev det jag gjorde det eftersom det innebar mycket experimenterande (trial and error) för mig. Den så skriver jag den här artikeln bygger på minnet och kontrollera mina konfigurationsfiler. Om du stöter på problem, lämna en kommentar och jag kommer att klargöra eventuella försummelser.
Så här gör du:
Jag väljer mina Ubuntu Linux distrahera, och installation av något är en vind på den. sudo apt-get install package-name . Denna del är väl täckta runt på nätet, så jag ska inte kommentera i detalj hur man gör. Tillräckligt att säga, några av de paket jag har installerat Vore apache2 , libapache2-mod-wsgi och lighttpd .
Sedan lagen lighttpd Kommer den primära servern för min domän, bestämde jag mig för att flytta Apache på port 81:
sudo vi / etc/apache2/ports.conf
Skriv över befintliga ip: port rader med Avhandling:
NameVirtualHost 127.0.0.1:81
Lyssna 81
Om du sätter dina egna Python-moduler på nyare Ubuntu installationer har ändrats till /usr/local/lib/python2.6/dist-packages/ . Därför har jag lagt upp Django, mitt projekt och andra nödvändiga moduler (som inte installerats av apt-get ) till denna katalog, lämnar mig med struktur av följande:
/ Usr/local/lib/python2.6/dist-packages/django /
/ Usr/local/lib/python2.6/dist-packages/my_project_name /
Den mod_wsgi dokumentation har en utmärkt artikel om Django integration , men det är ganska lång. Du borde läsa den ändå, eftersom det finns massor av alternativ som du kanske vill använda. Här är en lathund:
Skapa dokument roten för ditt domännamn:
sudo mkdir / var / www / example.com
Som kommer att skapa filen läsas in av mod_wsgi med ditt projekt konfiguration:
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
Med dessa innehåll:
import sys
import ossys.path.append ('/ usr/local/lib/python2.6/dist-packages)
os.environ ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings'import django.core.handlers.wsgi
django.core.handlers.wsgi.WSGIHandler ansökan = ()
Skapa en domän konfigurationsfilen för Apache:
sudo vi / etc/apache2/sites-available/example.com
Med dessa innehåll:
<VirtualHost 127.0.0.1:81>
Servernamn example.com
Serveradmin username@example.comDocumentRoot / 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>
Alternativ-index
Beställ förneka, att
Låt från alla
</ 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>
Alternativ-index
Beställ förneka, att
Låt från alla
</ Directory>WSGIScriptAlias / usr/local/lib/python2.6/dist-packages/project_name/apache/django.wsgi
WSGIDaemonProcess example.com
WSGIProcessGroup example.com<directory /usr/local/lib/python2.6/dist-packages/project_name/apache>
Beställ förneka, att
Låt från alla
</ Directory>
</ VirtualHost>
Aktivera den:
cd / etc/apache2/sites-enabled /
sudo ln-s .. / webbplatser tillgänglig / example.com
Jag använde MySQL Performance bloggs "omvänd proxy med lighttpd" artikel som grund för min egen konfiguration. Därför tar vi en url http://example.com/server-status , vilket kommer att kräva autentisering, gör att vi kan se Apache server status.
Skapa en katalog för felloggar:
sudo mkdir / var / log / lighttpd / example.com
Skapa en domän konfigurationsfilen för lighttpd:
sudo vi / etc/lighttpd/conf-available/20-example.com.conf
Med dessa innehåll:
server.modules + = ("mod_auth",
"Mod_status",
"Mod_proxy",
)$ HTTP ["host"] = ~ "(^ | \.) Exempel \. 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"
berätta listing.activate = "Inaktivera"auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/ var / www /. htpasswd"
auth.require = ("/ server-status" => (
"Metod" => "grundläggande",
"Realm" => "status",
"Kräv" => "valid-user"
)
)
)
Det är linjer värda att nämna i ovanstående konfiguration:
$ HTTP ["host"] = ~ "(^ | \.) Exempel \. Com $" (
Detta kommer att avsluta inne i direktiven tillämpas endast på ansökningar om example.com.
$ HTTP ["url"]! ~ "\. (Js | css | gif | jpg | png | ico | txt | swf | html | htm) $" (
proxy.server = ("" => (
("Host" => "127.0.0.1", "port" => 81)
))
)
Dessa kommer att skicka någon begäran om handlingar som inte slutar i den angivna tillägg till ip 127.0.0.1, port 81, bor Apache VAR. I huvudsak allt som är statiskt innehåll (eller mer exakt, anges av | separerade reguljära uttryck), kommer att betjänas av lighttpd.
cd / etc / lighttpd / conf-aktiverade /
sudo ln-s .. / conf-tillgängligt / example.com.conf
Tala om filsystemet där du projektet och Django's admin statiskt innehåll finns:
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 /
Slutligen, starta allt så att de nyaste konfigurationen kan tillämpas
sudo / etc/init.d/apache2 restart
sudo / etc / init.d / lighttpd starta
När en besökare går till din webbplats (example.com), begäran lighttpd kommer att träffa först. Om dokumentet vägen inte slutar med strängen i vår lista över statiskt innehåll förlängningar, kommer meddelandet att proxyservern till Apache på port 81, lighttpd annars serverar sig själv.
Och det är det, om jag minns rätt. Har jag missat något? Kommentar efter behag.
[1] linodivas, om du är nyfiken. Främst eftersom bandbredden är billigare. Om du letar efter en remiss linodivas, linodivas linodivas rabatt kod eller kampanjkod, registrera dig via denna länk till krediter mig remiss. Tack ![]()