Uno de mis sitios web está experimentando un crecimiento fenomenal y después de la optimización de las consultas de base de datos y el uso de memcached, decidí que era hora de utilizar otro servidor web para servir a los medios de comunicación estática. He aquí cómo hacerlo.
Le recomiendo que eche un vistazo a un post anterior que escribí acerca de configurar cómo el servidor web para trabajar con Django, porque voy a estar manipulando a algunos archivos que he hablado allí. Si no está seguro acerca de las rutas correctas necesarias para su servidor, utilice el otro puesto como guía. He instalado Lighttpd y Apache configurado en mi Slicehost VPS, que es una empresa que le recomiendo. Si usted decide firmar con ellos, sería asombroso si utiliza mi correo electrónico (inerte@gmail.com) como referencia, y / o utilizar este enlace, que se encarga de establecer mí como su referencia.
Vamos a utilizar lighttpd en un puerto diferente a Apache para servir a los archivos de un directorio específico basado en el nombre de dominio, todo transparente a los usuarios navegar por su sitio web. No se realizaron cambios en mi código del sitio web, el servidor (Python) o cliente (HTML) secundarios.
Mi servidor corre Ubuntu así que sólo ejecutó el comando siguiente para instalar Lighttpd:
$ Apt-get install lighttpd Editar el archivo de configuración de Lighttpd:
$ Vi / etc / lighttpd / lighttpd.conf Server.port Elimine la línea (el mío era el 60):
server.port = 81 Habilitar el módulo mod_evhost. Esto nos ayudará a utilizar un directorio diferente en función del nombre de dominio. Simplemente elimine la línea 19 (dentro de server.modules).
Añadir el siguiente en alguna parte, que dice que las peticiones de yourdomain.com debe buscar los archivos en / var / www / yourdomain.com / web /. Lo hice en la línea 118, después de la evhost.path ejemplos de patrón.
$ HTTP [ "host"] = ~ "yourdomain \. Com" ( evhost.path patrón = "/ var / www / yourdomain.com / web /" )
Inicio lighttpd:
$ / Etc / init.d / lighttpd Apunte su navegador a su servidor para ver si está funcionando Lighttpd:
http://your.ip.address:81/
Tienes que ver algo como esto, haga clic en este (en la imagen para una versión más grande):
Si tiene los directorios en / var / www /, añadir sus nombres a la dirección URL para ver si lighttpd está cumpliendo correctamente (debería):
http://your.ip.address:81/yourdomain.com
Para servir de manera transparente archivos con lighttpd de Apache, necesita habilitar proxy de Apache:
$ Ln-s / etc/apache2/mods-available/proxy.load / etc/apache2/mods-enabled / $ Ln-s / etc/apache2/mods-available/proxy.conf / etc/apache2/mods-enabled / $ Ln-s / etc/apache2/mods-available/proxy_connect.load / etc/apache2/mods-enabled / $ Ln-s / etc/apache2/mods-available/proxy_http.load / etc/apache2/mods-enabled /
Proxies sin garantía son utilizados por los spammers para Apache viene protegido contra malas configuraciones. Es necesario editar este archivo:
$ Vi / etc/apache2/mods-available/proxy.conf Decir, cuando el proxy funciona y que tiene acceso a ella. Reemplace el * con 127.0.0.1, y elimine la línea Allow from. El resultado final es la siguiente:
<Proxy 127.0.0.1> AddDefaultCharset fuera Order deny, allow Deny from all Allow from 127.0.0.1 </ Proxy>
$ Vi / etc/apache2/sites-available/yourdomain.com Añadir este <VirtualHost> en algún lugar de:
ProxyRequests Off El ProxyPreserveHost ProxyPass / web http://127.0.0.1:81/ ProxyPassReverse / http://127.0.0.1:81/
Ha terminado con todas las configuraciones. Ahora, vuelva a cargar los módulos de Apache y reiniciar el servidor:
$ / Etc/init.d/apache2 reload Apache2ctl $ reinicie
Todo debe estar funcionando. Si obtiene un error, tratar de deshacer algunos pasos y después de cada cambio, volver a cargar y reiniciar Apache Apache y Lighttpd para ver cuando se rompió. Si navega a http://your.ip.address, debería ver todo el contenido de / web / se carga correctamente. ¿Cómo sabe usted que está siendo atendido por Lighttpd en lugar de Apache?
Esto debería decirle Apache es servir a la página:
curl-I http://your.ip.address/ Si bien esto debería decirle Lighttpd cumple el archivo:
curl-I http://your.ip.address/web/some.file Si usted tiene alguna duda o tiene problemas, por favor, un comentario y voy a tratar de ayudarle.