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 distintas [1], y comenzó la búsqueda para actualizar mis conocimientos acerca de la implementación de Django. Hice cosas de forma diferente esta vez, usando mod_wsgi (la manera recomendada de la implementación de Apache y Django ), la configuración de Apache y lighttpd está detrás de contenido dinámico (en otras palabras, lighttpd Servirá medios estáticos).
Hice todo lo que a continuación en el último par de dÃas, y no escribió las cosas que estaba haciendo, porque implicaba una gran cantidad de experimentación (ensayo y error) para mÃ. El tal, yo estoy escribiendo este artÃculo basado en la memoria y revisando mis archivos de configuración. Si tiene algún problema, por favor deje un comentario y me limitaré a aclarar cualquier omisión.
Aquà le indicamos cómo hacerlo:
Puedo elegir la distribución Linux Ubuntu, y la instalación de los hechos es una brisa en él. sudo apt-get install package-name . Esta parte está bien cubierta por la web, asi que no voy a comentar en detalle cómo se hace. Basta decir, algunos de los paquetes que he instalado Si apache2 , libapache2-mod-wsgi y lighttpd .
Dado que el acto lighttpd ¿El servidor principal de mi dominio, decidà mudarme Apache al puerto 81:
sudo vi / etc/apache2/ports.conf
Sobreescribir ip: puerto con lÃneas de Tesis:
NameVirtualHost 127.0.0.1:81
Listen 81
Cuando usted pone su propio módulo en 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 estructura de las siguientes acciones:
/ 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 que es bastante largo. Usted debe leer de todas formas, ya que hay muchas opciones que usted puede ser que desee utilizar. Aquà hay una Hoja de Trucos:
Crea la raÃz del documento para su nombre de dominio:
sudo mkdir / var / www / example.com
Que creará el archivo se cargue 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:
import sys
os de importaciónsys.path.append ('/ usr/local/lib/python2.6/dist-packages')
DJANGO_SETTINGS_MODULE 'os.environ ['] = 'project_name.settings'django.core.handlers.wsgi importación
django.core.handlers.wsgi.WSGIHandler aplicación = ()
Crear un archivo de configuración de dominio para Apache:
sudo vi / etc/apache2/sites-available/example.com
Con estos contenidos:
<VirtualHost 127.0.0.1:81>
ServerName 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>
Options-Indexes
Orden negar, permiten
Dejar de todas las
</> DirectorioAlias / 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
Orden negar, permiten
Dejar de todas las
</> DirectorioWSGIScriptAlias / 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>
Orden negar, permiten
Dejar de todas las
</> Directorio
</> VirtualHost
Activar es el siguiente:
cd / etc/apache2/sites-enabled /
.. Sudo ln-s / sitios disponibles / example.com
Usé el "proxy inverso MySQL blog de rendimiento para Lighttpd" artÃculo como base para la configuración de mi propia. Por lo tanto, tendremos una url http://example.com/server-status , lo que exigirá la autenticación, lo que nos permite ver el estado del servidor Apache.
Cree un directorio para los registros de errores:
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"
decirle listing.activate = "desactivar"auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/ var / www /. htpasswd"
auth.require = ("/" server-status => (
"Método" => "básico",
"Reino" => "status",
"Requerir" => "valid-user"
)
)
)
Hay lÃneas digno de mención en la configuración anterior:
$ HTTP ["host"] = ~ "(^ | \.) Ejemplo \. Com $" (
Este se ajustará 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á ninguna solicitud de documentos que no terminan en las extensiones especificadas a ip 127.0.0.1, puerto 81, Apache DONDE vidas. En esencia, todo lo que es contenido estático (o, más exactamente, a que el | expresión regular separados), serán atendidos por lighttpd.
cd / etc / lighttpd / conf habilitado /
.. Sudo ln-s / conf-disponible / example.com.conf
DÃgale al sistema de ficheros donde los proyectos y administración de Django contenido estático se encuentran:
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 /
Por último, reinicie todo para la nueva configuración se puede aplicar
sudo / etc/init.d/apache2 restart
sudo / etc / init.d / lighttpd reiniciar
Cuando un visitante entra a su website (example.com), la solicitud lighttpd Will primer golpe. Si la ruta de documento no termina con la cadena en nuestra lista de extensiones de contenido estático, la solicitud será proxy de Apache en el puerto 81, lighttpd de otro modo se sirve.
Y eso es todo, si mi memoria no es correcta. ¿Me perdà algo? Comentario a voluntad.
[1] linodivas, si usted es curioso. Principalmente porque el ancho de banda es más barato. Si usted está buscando un linodivas referencia, linodivas código de descuento o promoción linodivas código, regÃstrate través de este enlace que me la remisión de crédito. Gracias ![]()