¿Qué es Apache?
Apache es una pieza de software de aplicación notable. Es la aplicación de servidor web más utilizada en el mundo con más del 50% de participación en el mercado de servidores web comerciales. Apache es la aplicación de servidor web más utilizada en sistemas operativos similares a Unix, pero se puede utilizar en casi todas las plataformas, como Windows, OS X, OS / 2, etc. La palabra Apache se ha tomado del nombre del nativo. Tribu estadounidense 'Apache', famosa por sus habilidades en la guerra y la elaboración de estrategias.
Es una aplicación de servidor web modular basada en procesos que crea un nuevo hilo con cada conexión simultánea. Es compatible con una serie de funciones; muchos de ellos se compilan como módulos separados y amplían su funcionalidad principal, y pueden proporcionar todo, desde el soporte del lenguaje de programación del lado del servidor hasta el mecanismo de autenticación. El alojamiento virtual es una de esas características que permite que un único servidor web Apache sirva a varios sitios web diferentes.
Cómo instalar Apache
Existen numerosas formas de instalar el paquete o la aplicación. Hay alistados a continuación:
- Una de las características de esta aplicación web de código abierto es que cualquiera puede hacer un instalador según su propio entorno. Esto ha permitido a varios proveedores como Debian, Red Hat, FreeBSD, Suse, etc. personalizar la ubicación del archivo y la configuración de apache teniendo en cuenta otras aplicaciones instaladas y el sistema operativo base.
- Además de instalarlo desde un instalador basado en un proveedor, siempre existe la opción de construirlo e instalarlo desde el código fuente. La instalación de Apache desde el archivo de origen es una plataforma independiente y funciona para todos los sistemas operativos.
El servidor web apache es una aplicación modular donde el administrador puede elegir la funcionalidad requerida e instalar diferentes módulos según sus requerimientos.
Todos los módulos se pueden compilar como objetos compartidos dinámicos (DSO es un archivo de objeto que pueden compartir varias aplicaciones mientras se ejecutan) que existe por separado del archivo apache principal. El enfoque DSO es muy recomendable, hace que la tarea de agregar / eliminar / actualizar módulos de la configuración de los servidores sea muy simple.
Instalar Apache: plataforma Linux
En sistemas basados en Red Hat o rpm
Si está utilizando una distribución de Linux basada en rpm (RedHat Package Manager es una utilidad para instalar aplicaciones en sistemas Linux), es decir, Red Hat, Fedora, CentOs, Suse, puede instalar esta aplicación ya sea mediante el Administrador de paquetes específico del proveedor o creando directamente el archivo rpm del tarball fuente disponible.
Puede instalar Apache a través del Administrador de paquetes predeterminado disponible en todas las distribuciones basadas en Red Hat como CentOs, Red Hat y Fedora.
[root @ amsterdam ~] # yum install httpd
El archivo tar de origen de Apache se puede convertir en un archivo rpm usando el siguiente comando.
[root @ amsterdam ~] # rpmbuild -tb httpd-2.4.x.tar.bz2
Es obligatorio tener el paquete -devel instalado en su servidor para crear un archivo .rpm desde la fuente.
Una vez que convierta el archivo fuente en un instalador rpm, puede usar el siguiente comando para instalar Apache.
[root @ amsterdam ~] # rpm -ivh httpd-2.4.4-3.1.x86_64.rpm
Después de la instalación, el servidor no se inicia automáticamente, para iniciar el servicio, debe usar cualquiera de los siguientes comandos en Fedora, CentOs o Red Hat.
[root @ amsterdam ~] # / usr / sbin / apachectl start[root @ amsterdam ~] # servicio httpd start[root @ amsterdam ~] # /etc/init.d/httpd start
Instalar Apache desde la fuente
La instalación de Apache desde la fuente requiere que el paquete -devel esté instalado en su servidor ... Puede encontrar la última versión disponible de Apache, puede descargarla aquí. Una vez que descargue el archivo fuente, muévalo a la carpeta / usr / local / src.
[root @ amserversterdam ~] cd / usr / local / src[root @ amserversterdam ~] gzip -d httpd-2.2.26.tar.gz[root @ amserversterdam ~] tar xvf httpd-2.2.26.tar[root @ amserversterdam ~] httpd-2.2.26
Para ver todas las opciones de configuración disponibles para Apache, puede usar la opción ./configure -help. La opción de configuración más común es -prefix = {nombre del directorio de instalación}.
[root @ amserversterdam ~] ./ configure --help[root @ amserversterdam ~] ./ configure -prefix = / usr / local / apache -enable-so[root @ amserversterdam ~] hacer[root @ amserversterdam ~] hacer la instalación
El ejemplo anterior muestra la compilación de Apache dentro del directorio / usr / local / apache con la capacidad DSO. La opción -enable-so, puede cargar los módulos necesarios en Apache en tiempo de ejecución mediante el mecanismo DSO en lugar de requerir una recompilación.
Una vez que se completa la instalación, puede navegar por la página predeterminada de los servidores web con su navegador favorito. Si el firewall está habilitado en su servidor, debe hacer una excepción para el puerto 80 en el firewall de su sistema operativo. Puede usar el siguiente comando para abrir el puerto 80.
iptables -I ENTRADA -p tcp --dport 80 -j ACEPTAR
guardar iptables de servicio
Puede ver la pantalla de bienvenida predeterminada de Apache2 navegando por la dirección IP de su servidor.
¿Qué es Virtual Host?
Un servidor web Apache puede alojar varios sitios web en el MISMO servidor. No necesita una máquina servidor y un software apache separados para cada sitio web. Esto se puede lograr utilizando el concepto de Virtual Host o VHost.
Cualquier dominio que desee alojar en su servidor web tendrá una entrada separada en el archivo de configuración de Apache.
Tipos de Apache Virtualhost
- Host virtual basado en nombre
- Host virtual basado en direcciones o IP y.
Host virtual basado en nombre
El alojamiento virtual basado en nombres se utiliza para alojar varios sitios virtuales en una única dirección IP.
Para configurar el alojamiento virtual basado en nombres, debe establecer la dirección IP en la que recibirá las solicitudes de Apache para todos los sitios web deseados. Puede hacer esto mediante la directiva NameVirutalHost dentro de la configuración de apache, es decir, el archivo httpd.conf / apache2.conf.
Ejemplo de host virtual Apache:
NombreVirtualHost *: 80ServerAdmin Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.DocumentRoot /var/www/html/example1.comServerName www.example1.com ServerAdmin Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo. DocumentRoot /var/www/html/example2.com ServerName www.example2.com
Puede agregar tantos hosts virtuales como desee. Puede verificar sus archivos de configuración web con:
[root @ amsterdam ~] #httpd -tSintaxis correcta
Si el archivo de configuración tiene una sintaxis incorrecta, arrojará un error
[root @ 115 conf.d] # httpd -tError de sintaxis en la línea 978 de /etc/httpd/conf/httpd.conf:Comando no válido '*', quizás mal escrito o definido por un módulo no incluido en la configuración del servidor
Host virtual basado en IP
Para configurar un alojamiento virtual basado en IP, necesita más de una dirección IP configurada en su servidor. Por lo tanto, el número de vhost apache dependerá del número de direcciones IP configuradas en su servidor. Si su servidor tiene 10 direcciones IP, puede crear 10 hosts virtuales basados en IP.
En el diagrama anterior, a dos sitios web example1.com y example2.com se les asignaron diferentes direcciones IP y están utilizando alojamiento virtual basado en IP.
Escuchar 192.168.0.100:80ServerAdmin Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.DocumentRoot /var/www/html/example1.comServerName www.example1.com ServerAdmin Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo. DocumentRoot /var/www/html/example2.com ServerName www.example2.com
¿Qué necesita Apache para ejecutar un archivo PHP?
La ejecución de archivos Php en Apache necesita mod_php habilitado en su servidor. Permite a Apache interpretar archivos .Php. Tiene controladores Php que interpretan el código Php en apache y envían HTML a su servidor web.
Si mod_php está habilitado en su servidor, tendrá un archivo llamado php.conf en el directorio /etc/httpd/conf.d/. También puedes comprobarlo con:
httpd -M | grep "php5_module"
La salida será similar a:
Controladores php en Apache
- mod_php
- CGI
- FastCGI
- suPHP
mod_php es el controlador PHP más antiguo, hace que PHP sea parte de apache y no llama a ningún proceso PHP externo. Este módulo se instala de forma predeterminada en todos los repositorios de distribución de Linux, por lo que habilitar / deshabilitar este módulo es muy fácil.
Si está utilizando FastCGI como su controlador de PHP, puede configurar varias versiones de PHP para que las utilicen diferentes cuentas en su servidor.
FastCGI, es decir, mod_fastcgi es una extensión de mod_fcgid , mientras que mod_fcgid es una alternativa de alto rendimiento de CGI, es decir, mod_cgi. Inicia una cantidad suficiente de instancias de CGI para manejar solicitudes web concurrentes. También utiliza suexec para apoyar a diferentes usuarios con sus propias instancias de PHP y mejora la seguridad web.
La ejecución de archivos ruby en Apache necesita que mod_ruby esté habilitado. Apache también puede manejar archivos ruby a través de FastCGI. Es posible utilizar varias versiones de ruby con la ayuda de mod_fcgid, es decir, FastCGI.
También puede instalar apache pasajero y configurar Apache para usarlo para servir páginas ruby.
(Phusion Passenger, también conocido como " pasajero ", es un módulo de servidor web gratuito que está diseñado para integrarse con Apache y Nginx)
Pasos para instalar mod_ruby en su servidor -
cd / tmpwget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gztar zxvf mod_ruby-1.2.6.tar.gzcd mod_ruby-1.2.6 /./configure.rb --with-apr-includes = / usr / include / apr-1hacerhacer la instalación
Cómo ejecutar Ruby con Apache
Tenemos que agregar el módulo mod_ruby a la configuración de Apache, es decir, /etc/httpd/conf.d/ruby.conf y agregar la siguiente línea.
LoadModule módulos ruby_module / mod_ruby.so
Si desea habilitar o deshabilitar estos módulos, debe editar el archivo de configuración de Apache y comentar o descomentar estos módulos, si el servidor web ya está compilado con estos módulos.
Cómo proteger el servidor web Apache
Asegurar su servidor web es muy importante, significa permitir que otros vean solo la información deseada y proteger sus datos y restringir el acceso.
Estas son cosas comunes que mejoran la seguridad de sus servidores web Apache.
1) Ocultar la versión de Apache y la información del sistema operativo:
Apache muestra su versión y el nombre del sistema operativo en errores como se muestra en la siguiente captura de pantalla.
Un pirata informático puede usar esta información para lanzar un ataque utilizando las vulnerabilidades disponibles públicamente en la versión particular del servidor o sistema operativo.
Para evitar que el servidor web Apache muestre esta información, tenemos que modificar
Opción "firma del servidor" disponible en el archivo de configuración de Apache. De forma predeterminada, está "activado", debemos configurarlo como "desactivado".
vim /etc/httpd/conf/httpd.conf
ServerSignature OffServerTokens Prod
También hemos configurado "ServerTokens Prod" que le dice al servidor web que devuelva solo apache y suprima la versión principal y secundaria del sistema operativo.
Después de modificar el archivo de configuración, debe reiniciar / recargar su servidor web apache para que sea efectivo.
reinicio del servicio httpd
2) Deshabilitar la lista de directorios
Si su directorio raíz de documentos no tiene un archivo de índice, por defecto su servidor web apache mostrará todo el contenido del directorio raíz de documentos.
Esta función se puede desactivar para un directorio específico a través de la "directiva de opciones" disponible en el archivo de configuración de Apache.
Opciones -índices
3) Deshabilitar módulos innecesarios
Es una buena práctica deshabilitar todos los módulos innecesarios que no están en uso. Puede ver la lista de módulos habilitados disponibles en su archivo de configuración de apache -
[root @ amsterdam ~] #httpd -Mperl_module (compartido)php5_module (compartido)proxy_ajp_module (compartido)python_module (compartido)ssl_module (compartido)
Muchos de los módulos enumerados se pueden deshabilitar como mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, ya que apenas son utilizados por ningún servidor web de producción.
vi /etc/httpd/conf/httpd.conf#LoadModule auth_digest_module modules / mod_auth_digest.so
Una vez que haya comentado el módulo, guarde el archivo.
Reinicie los servicios de Apache con el siguiente comando.
/etc/init.d/httpd reiniciar
4) Restringir el acceso a archivos fuera del directorio raíz web
Si desea asegurarse de que los archivos que están fuera del directorio raíz web no sean accesibles, debe asegurarse de que el directorio esté restringido con "Permitir" y "Opción denegar" en el archivo de configuración de su servidor web.
Opciones NingunaAllowOverride NingunoOrden denegar, permitirNegar todo
Una vez que restrinja el acceso fuera del directorio raíz web, no podrá acceder a ningún archivo ubicado en ninguna otra carpeta de su servidor web, obtendrá el código de retorno 404.
5) Usar mod_evasive para refutar el ataque DoS
Si desea proteger su servidor web de DOS (es decir, denegación de servicio), debe habilitar el módulo mod_evasive. Es un módulo de terceros que detecta el ataque Dos y evita que el ataque haga tanto daño como lo haría si se dejara seguir su curso. Se puede descargar aquí.
Descargue el archivo anterior
6) Uso de mod_security para mejorar la seguridad de apache
Este módulo funciona como un firewall para Apache y le permite monitorear el tráfico en tiempo real. También evita que el servidor web sufra ataques de fuerza bruta. El módulo mod_security podría instalarse con el administrador de paquetes predeterminado de su distribución.
7) Limitar el tamaño de la solicitud
Apache no tiene ninguna restricción sobre el tamaño total de la solicitud http que podría conducir a un ataque DoS. Puede limitar el tamaño de la solicitud de una directiva de Apache "LimitRequestBody" con la etiqueta de directorio. El valor se puede establecer entre 0 y 2 GB (es decir, 2147483647 bytes) según sus requisitos.
LimitRequestBody 512000
Formato de registro de Apache
Los registros de Apache proporcionan información detallada que ayuda a detectar problemas comunes con el servidor.
Para crear registros de acceso, mod_log_configmodule debe estar habilitado.
Tres directivas disponibles en el archivo de configuración de apache, es decir
- TransferLog: creación de un archivo de registro.
- LogFormat: especificar un formato personalizado.
- CustomLog: creación y formato de un archivo de registro.
La directiva TransferLog está disponible en el archivo de configuración de apache y rota los archivos de registro del host virtual según los parámetros establecidos.
ServerAdmin Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.DocumentRoot / usr / www / example / httpd / htdocs /ServerName www.example.comServerAlias example.com www.exampleErrorLog / usr / www / example / httpd / logs / error_logTransferLog / usr / www / example / httpd / logs / accesslogCustomLog / usr / www / example / httpd / logs / accesslog combinado
Dos tipos de formato de registro de Apache
- Formato de registro común
- Formato de registro combinado.
Puede habilitarlos editando el archivo de configuración de apache, es decir, apache2.conf (Debian / ubuntu) o httpd.conf (sistemas basados en rpm).
Formato de registro común
LogFormat "% h% l% u% t \"% r \ "%> s% b" comúnRegistros de CustomLog / access_log común
Registro común generado por Apache
[Mié, 11 de octubre 14:32:52 2000] [error] [cliente 127.0.0.1] cliente denegado por la configuración del servidor: / export / home / live / ap / htdocs / test
Formato de registro combinado
LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-agent} i \ "" combinadoCustomLog log / access_log combinado
Aquí,
- % h es el host remoto
- % l es la identidad del usuario determinada por identd
- % u es el nombre de usuario determinado por la autenticación HTTP
- % t es la hora en que el servidor terminó de procesar la solicitud.
- % r es la línea de solicitud del cliente. ("GET / HTTP / 1.0")
- %> s es el código de estado enviado desde el servidor al cliente (500, 404, etc.)
- % b es el tamaño de la respuesta al cliente (en bytes)
- Referer es la página vinculada a esta URL.
- User-agent es la cadena de identificación del navegador.
Registro combinado generado por Apache:
199.187.122.91 - - [06 / Mar / 2014: 04: 22: 58 +0100] "GET /robots.txt HTTP / 1.1" 404 1228 "-" "Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1 ; .NET CLR 2.0.50727) "
El registro personalizado crea un archivo de registro independiente para cada host virtual en su servidor. Debe especificarse en la sección de host virtual del archivo de configuración.
Puede ver la configuración de host virtual mencionada a continuación, el registro generado será personalizado para ese host virtual y el formato se combinará.
Configure su primer servidor web de producción
1. Para tener un servidor web de producción en ejecución, necesita un nodo dedicado (instancia física / virtual o en la nube) que ejecute Linux / Unix, Windows, MacOS, etc.
2. El servidor web debe tener una conexión de red directa y una dirección IP estática configurada en él.
3. Debe tener todos los módulos necesarios para ejecutar páginas web. Si un servidor web procesa páginas PHP, debe tener habilitado el módulo PHP.
- También debe tener una buena aplicación antivirus configurada y en ejecución para proteger el servidor web de ataques de malware o virus. También necesita un mecanismo para actualizar la aplicación antivirus / antimalware configurada de forma regular sin ninguna intervención manual para obtener el máximo beneficio de ellos.
- Si tiene cientos de dominios para alojar en su servidor web, debe implementar limitaciones en la cuota del sistema de archivos para cada dominio, la cantidad de bases de datos que cada dominio puede crear, la cantidad de cuentas de correo electrónico por dominio, etc.
- Si su servidor web se ha configurado para servicios de alojamiento compartido, los usuarios de su servidor web deben estar restringidos . Un usuario de alojamiento compartido debe tener el menor privilegio de usuario para que no dañe archivos importantes y rompa todo el servidor. Apache no proporciona ninguna de estas funciones y necesita diferentes aplicaciones de terceros, personalización del sistema operativo para lograrlo.
- Si está agregando un nuevo dominio en su servidor web, necesita editar cientos de archivos de configuración para habilitar todas las funciones del dominio agregado.
- Si uno de los dominios alojados requiere una configuración de PHP diferente al resto de los dominios, implementar esto en el servidor web principal de Apache es muy complejo y necesita la personalización de su servidor web en gran medida.
- Un servidor web de producción necesita un firewall para bloquear el tráfico no deseado que podría causar una gran carga en su servidor. La implementación de reglas IPTABLE con línea de comando es muy compleja. Necesita experiencia en el entorno central de Linux / Unix para escribir reglas de firewall efectivas para bloquear el tráfico no deseado. IPTABLE se basa en el módulo netfilter; es un firewall de nivel de sistema operativo que permite a un administrador crear reglas para el tráfico entrante / saliente en el servidor.
- Un servidor web de producción requiere varias aplicaciones diferentes como correo electrónico , FTP para cargar archivos, sistema de nombres de dominio para dominios estacionados. La gestión de todas estas aplicaciones en un sistema central Linux / Unix requiere experiencia en las tecnologías respectivas.
Entonces, se puede decir que administrar un servidor web para múltiples dominios es una tarea muy compleja y requiere editar cientos de archivos de configuración, personalizando cada aplicación para lograr el resultado deseado. La resolución de problemas de cualquier configuración incorrecta será muy difícil para los principiantes.
La solución usando Cpanel o software similar
Cpanel proporciona una forma gráfica de administrar su servidor web . Está destinado a proporcionar servicios de alojamiento masivo que sean fáciles de usar y configurar. cPanel ha reducido las barreras técnicas de entrada en el alojamiento y la gestión del servidor web. Facilita las tareas complejas, proporciona muchas interfaces web útiles y fáciles de usar que realizan tareas comunes de administración del sistema necesarias para operar un servidor web.
cPanel compila su propia versión de software.
Si tiene que volver a compilar su servidor web, es decir, apache en una plataforma Linux normal, debe seleccionar / buscar manualmente el módulo que se requiere. cPanel proporciona la funcionalidad Easyapache que es un método de compilación de servidor web basado en script.
No solo le proporciona servicios web, sino también correo, DNS, FTP y muchos más servicios que se requieren para su aplicación web.
Una tarea que necesita experiencia en el alojamiento principal basado en Linux / Unix, como instalar SSL, recompilar Apache con diferentes módulos PHP, actualizar la seguridad web, configurar reglas IPTABLE efectivas, agregar usuarios de ftp, crear cuentas de correo para cada dominio, escanear la raíz de su documento con antivirus y la creación de bases de datos es fácil de completar con cPanel.
Proporciona una gran cantidad de scripts que corrigen, instalan y solucionan problemas de tareas administrativas comunes.
Proporciona una función de copia de seguridad y restauración que elimina la necesidad de copiar archivos manualmente al almacenamiento de copia de seguridad. Si está haciendo una copia de seguridad de su dominio, cPanel creará un archivo tar que contendrá la carpeta raíz del documento, cuentas y correos electrónicos, cuentas ftp, bases de datos, registros DNS y otras aplicaciones.
También proporciona una documentación sólida y tiene una gran comunidad de usuarios donde puede discutir y obtener una solución a sus problemas.
Entonces, se puede decir que cPanel es la mejor aplicación para administrar su servidor web con las características requeridas. Le proporciona una interfaz fácil de usar para administrar su dominio y un mecanismo para evitar la complejidad de administrar el servidor web central.
Hay muchos productos que compiten con cPanel como Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel, etc.