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:

Installera vanliga misstänkta

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 .

Konfigurera Apache och mod_wsgi att ladda ditt projekt

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 os

sys.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.com

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>
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

Konfigurera lighttpd till proxy icke-statisk media förfrågningar till Apache

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

Så, vad som egentligen händer?

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 :)

    blogg kommentarer drivs av 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 rabatt på webbhotell Dreamhost!
    Använd "befordra koden" tröghet. LAMP med 20GB utrymme och 1TB av överlåtelse.

    Relaterade artiklar

    • Inga relaterade inlägg

    Kategorier