He escrito de cómo configurar Apache, mod_python y Django, y cómo poner lighttpd detrás de Apache.

Recientemente he decidido organizar mi sitio web más visitado en un proveedor de VPS diferentes [1], y comenzó una búsqueda para actualizar mis conocimientos acerca de la implementación de Django. Hice cosas de manera diferente esta vez, usando mod_wsgi (el método recomendado para la implementación de Apache y Django), y la configuración de lighttpd detrás de Apache para el contenido dinámico (en otras palabras, lighttpd servirá medios de comunicación estática).

Hice todo lo que a continuación en el último par de días, y no escribió las cosas que estaba haciendo, porque se trataba de un montón de experimentación (ensayo y error) para mí. Como tal, estoy escribiendo este artículo sobre la base de la memoria y comprobar los archivos de configuración. Si usted encuentra algún problema, por favor deje un comentario y me limitaré a aclarar posibles omisiones.

He aquí cómo hacerlo:

Instalación de los sospechosos de siempre

Puedo elegir mi Ubuntu como distribución Linux, y la instalación de los hechos es una brisa en él. sudo apt-get install package-name Esta parte está bien cubierto alrededor de la web, de modo que no voy a comentar en detalle cómo se hace. , Basta con decir, algunos de los paquetes que se ha instalado apache2 libapache2-mod-wsgi y lighttpd

Configurar Apache y mod_wsgi para cargar su proyecto

Desde lighttpd actuará como el servidor principal de mi dominio, decidí mudarme de Apache en el puerto 81:

sudo vi / etc/apache2/ports.conf

Sobreescribir ip: puerto con estas líneas:

NameVirtualHost 127.0.0.1:81
Listen 81

Donde ponen sus propios módulos de Python en nuevas instalaciones de Ubuntu ha cambiado a /usr/local/lib/python2.6/dist-packages/ Por lo tanto, he subido Django, mi proyecto y otros módulos necesarios (que no fueron instalados por apt-get a este directorio, dejándome con la siguiente estructura:

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

La documentación mod_wsgi tiene un excelente artículo sobre la integración de Django, pero es bastante largo. Usted debe leer de todos modos, ya que hay muchas opciones que usted puede ser que desee utilizar. He aquí una de Trucos:

Crear un documento raíz para su nombre de dominio:

sudo mkdir / var / www / example.com

Cree el archivo que será cargado por mod_wsgi con la configuración de su proyecto:

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

Con estos contenidos:

sistema de importación de
import os

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

django.core.handlers.wsgi de importación

= aplicación django.core.handlers.wsgi.WSGIHandler ()

Crear un archivo de configuración de dominio de Apache:

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

Con estos contenidos:

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

/ Var DocumentRoot / 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>
Options-Indexes
Order deny, allow
Dejar de todas las
</ 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>
Options-Indexes
Order deny, allow
Dejar de todas las
</ 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
Dejar de todas las
</ Directory>
</ VirtualHost>

Activarlo:

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

Configurar lighttpd a no poder-los medios de comunicación estática peticiones a Apache

Usé "MySQL Performance blog de Lighttpd como proxy inverso" el artículo como base para la configuración de mi propia. Por lo tanto, tendremos una http://example.com/server-status que requieren autenticación, lo que nos permite ver el estado del servidor de Apache.

Cree un directorio para los registros de error:

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

Crear un archivo de configuración de dominio para lighttpd:

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

Con estos contenidos:

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

$ HTTP [ "host"] = ~ "(^ | \.) Ejemplo \. Com $" (
$ HTTP [ "url"] ~ "\. (Js | css | gif | | jpg png | ico | txt | SWF | html | htm) $" (
proxy.server = ( "=> (
( "Host" => "127.0.0.1", "puerto" => 81)
))
)

server.document-root = "/ var / www / example.com /"
server.errorlog = "/ var / log / lighttpd / example.com / error.log"
digo listing.activate = "desactivar"

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/ var / www /. htpasswd"
= auth.require ( "/ server-status" => (
"Método" => "base",
"Realm" => "estado",
"Requerir" => "valid-user"
)
)
)

Hay líneas digno de mención en la configuración anterior:

$ HTTP [ "host"] = ~ "(^ | \.) Ejemplo \. Com $" (

Esto envolver dentro de las directivas se aplican únicamente a las peticiones para example.com.

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

Estos enviará todas las solicitudes de documentos que no terminan en las extensiones especificadas a IP 127.0.0.1, puerto 81, donde Apache vidas. En esencia, el contenido de todo lo que es estático (o más exactamente, especificado por la expresión | regular separado), será atendido por lighttpd.

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

Dígale al sistema de archivos en su proyecto y el contenido estático de administración de Django se encuentran:

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

Por último, reinicie todo para la nueva configuración se puede aplicar

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

Entonces, ¿qué sucede realmente?

Cuando un usuario va a su sitio web (example.com), la solicitud llegará a lighttpd primero. Si el sendero no termina con la cadena en nuestra lista de extensiones de contenido estático, la solicitud será a través de proxy de Apache en el puerto 81, de lo contrario lighttpd servirá en sí.

Y eso es todo, si mi memoria es correcta. ¿Me perdí algo? Comentario a voluntad.

[1] Linode, si usted es curioso. Principalmente porque el ancho de banda es más barato. Si estás buscando una referencia Linode, Linode código de descuento Linode o código de promoción, regístrate través de este enlace al crédito me la remisión. Gracias :)

    blog alimentado por 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 de descuento en alojamiento DreamHost!
    Utilice el "Código Promocional" inercia. LAMP con 20GB de espacio y 1 TB de transferencia.

    Cobertura

    • No Related Posts

    Categorías