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