Tutoriales de Apache para principiantes
¿Qué es Apache?
Apache es una pieza notable de software de aplicación. 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 tipo Unix, pero se puede utilizar en casi todas las plataformas, como Windows, OS X, OS/2, etc. La palabra Apache ha sido tomada del nombre de la tribu nativa americana 'Apache', famosa por sus habilidades en la guerra y la creació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. Admite una serie de funciones; muchas de ellas se compilan como módulos independientes y amplían su funcionalidad principal, y puede proporcionar todo, desde compatibilidad con lenguajes de programación del lado del servidor hasta mecanismos de autenticación. El alojamiento virtual es una de esas funciones que permite que un único servidor web Apache preste servicio a varios sitios web diferentes.
Cómo instalar Apache
Existen numerosas formas de instalar el paquete o la aplicación. Se alistan a continuación:
- Una de las características de este abierto. La aplicación web fuente es que cualquiera puede crear 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 de proveedor, siempre existe la opción de compilarlo e instalarlo desde el código fuente. La instalación de Apache desde el archivo fuente 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 necesidades.
Todos los módulos se pueden compilar como Objetos compartidos dinámicos (DSO es un archivo objeto que pueden compartir varias aplicaciones mientras se ejecutan) que existe por separado del archivo principal de Apache. El enfoque DSO es altamente recomendado, hace que la tarea de agregar/eliminar/actualizar módulos de la configuración del servidor 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 mediante el Administrador de paquetes específico del proveedor o creando directamente el archivo rpm. desde el archivo tar de origen 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 utilizando 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 el código 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 hay que utilizar cualquiera de los siguientes comandos en Fedora, CentOs o Red Hat.
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
Instalar Apache desde la fuente
La instalación de Apache desde el código fuente requiere que el paquete –devel esté instalado en su servidor. .Puedes encontrar la última versión disponible de Apache, puedes 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 ~] make [root@amserversterdam ~] make install
El ejemplo anterior muestra la compilación de Apache dentro del directorio /usr/local/apache con capacidad DSO. La opción –enable-so puede cargar los módulos necesarios en Apache en tiempo de ejecución a través del mecanismo DSO en lugar de requerir una recompilación.
Una vez que se complete la instalación, podrá navegar por la página predeterminada de los servidores web con su navegador favorito. Si el firewall está habilitado en su servidor, deberá 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 INPUT -p tcp --dport 80 -j ACCEPT
servicio iptables guardar
Puedes ver el valor predeterminado Pantalla de bienvenida de Apache2 navegando por la dirección IP de su servidor.
¿Qué es el servidor virtual?
Un servidor web Apache puede alojar varios sitios web en el MISMO servidor. No necesita una máquina servidor ni software Apache separados para cada sitio web. Esto se puede lograr utilizando el concepto de Anfitrión virtual or VHost.
Cualquier dominio que desee alojar en su servidor web tendrá una entrada separada en el archivo de configuración de Apache.
Tipos de servidor virtual Apache
- Host virtual basado en nombres
- Host virtual basado en dirección 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 configurar 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. archivo httpd.conf/apache2.conf.
Ejemplo de host virtual Apache:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
Puede agregar tantos hosts virtuales según sus necesidades. Puedes consultar tus archivos de configuración web con:
[root@amsterdam ~]#httpd –t Syntax OK
Si el archivo de configuración tiene alguna sintaxis incorrecta, arrojará un error
[root@115 conf.d]# httpd -t Syntax error on line 978 of /etc/httpd/conf/httpd.conf: Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
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. Entonces, la cantidad de vhost apache dependerá de la cantidad 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, ejemplo1.com y ejemplo2.com, se les asignaron direcciones IP diferentes y utilizan alojamiento virtual basado en IP.
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
¿Qué necesita Apache para ejecutar un archivo PHP?
Ejecutar 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 consultarlo con:
httpd -M | grep "php5_module"
La salida será similar a:
Manejadores de php en Apache
- mod_php
- CGI
- FastCGI
- PHP
mod_phpes el controlador PHP más antiguo, hace que PHP forme parte de Apache y no llama a ningún proceso PHP externo. Este módulo se instala de forma predeterminada en cada repositorio de distribución de Linux, por lo que habilitar/deshabilitar este módulo es muy fácil.
Si utilizas conexiones FastCGI Como 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 simultáneas. También utiliza suexec para admitir 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 Passenger y configurar Apache para usarlo para servir páginas Ruby.
(Phusion Pasajero también conocido como “pasajero"es un módulo de servidor web gratuito diseñado para integrarse con Apache y Nginx)
Pasos para instalar mod_ruby en su servidor –
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
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
Proteger su servidor web es muy importante, significa permitir que otros vean solo la información prevista 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 los errores como se muestra en la siguiente captura de pantalla.
Un pirata informático puede utilizar 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, debemos modificar
Opción “firma del servidor” disponible en el archivo de configuración de Apache. De forma predeterminada, está "activado", debemos desactivarlo.
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
También hemos configurado "ServerTokens Prod" que le indica 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.
service httpd restart
2) Deshabilitar el listado de directorios
Si el directorio raíz de su documento no tiene un archivo de índice, de forma predeterminada su servidor web Apache mostrará todo el contenido del directorio raíz del documento.
Esta característica 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.
<Directory /var/www/html> Options -Indexes </Directory>
3) Deshabilitar módulos innecesarios
Es una buena práctica desactivar 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 –M perl_module (shared) php5_module (shared) proxy_ajp_module (shared) python_module (shared) ssl_module (shared)
Muchos de los módulos enumerados se pueden desactivar 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 hayas comentado el módulo, guarda el archivo.
Reinicie los servicios de Apache con el siguiente comando.
/etc/init.d/httpd restart
4) Restringir el acceso a archivos fuera del directorio raíz web
Si desea asegurarse de que no se pueda acceder a los archivos que están fuera del directorio raíz web, debe asegurarse de que el directorio esté restringido con "Permitir" y "Denegar opción" en el archivo de configuración de su servidor web.
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
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 contra 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 cause tanto daño como si se dejara seguir su curso. Se puede descargar aquí.
6) Uso de mod_security para mejorar la seguridad de Apache
Este módulo funciona como 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 en el tamaño total de la solicitud http que pueda provocar un ataque DoS. Puede limitar el tamaño de la solicitud de una directiva de Apache "LimitRequestBody" con la etiqueta del directorio. El valor se puede establecer entre 0 y 2 GB (es decir, 2147483647 bytes) según sus necesidades.
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
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: especificación de 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.
<VirtualHost www.example.com> ServerAdmin webmaster@example.com DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog/usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost>
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, el archivo apache2.conf (Debian/ubuntu) o httpd.conf (sistemas basados en rpm).
Formato de registro común
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Registro común generado por Apache
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
Formato de registro combinado
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
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 a la que el servidor terminó de procesar la solicitud.
- %r es la línea de solicitud del cliente. (“OBTENER/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)
- El referente es la página que enlaza 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 separado 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 del 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 servidor dedicado nodo (instancia física/virtual o en la nube) ejecutando Linux/Unix, Windows, MacOS, etc.
2. El Servidor Web debe tener un conexión de red directa y Dirección IP estática configurado en él.
3. Necesita tener todos los módulos requerido para ejecutar páginas web. Si un servidor web procesa páginas PHP, debe tener habilitado el módulo PHP.
- También necesita tener un buen Antivirus Aplicación configurada y en ejecución para proteger el servidor web contra ataques de malware o virus. También necesitas un mecanismo para actualización la aplicación antivirus/antimalware configurada de forma regular sin ninguna intervención manual para obtener el máximo beneficio de ellas.
- Si tiene cientos de dominios para alojar en su servidor web, debe implementar limitaciones en la cuota del sistema de archivos para cada dominio, cantidad de bases de datos que cada dominio puede crear, cantidad de cuentas de correo electrónico por dominio, etc.
- Si su servidor web ha sido configurado para servicios de alojamiento compartido, los usuarios de su servidor web deben estar restringidos. Un usuario de alojamiento compartido debe tener el mínimo privilegio de usuario para no dañar archivos importantes ni dañar todo el servidor. Apache no proporciona dicha funcionalidad y necesita diferentes aplicaciones de terceros y personalización del sistema operativo para lograrlo.
- Si está agregando un nuevo dominio en su servidor web, es necesario editar cientos de archivos de configuración para habilitar todas las funciones para el dominio agregado.
- Si uno de los dominios alojados requiere configuración PHP diferente que en el resto de dominios, implementar esto en el servidor web Apache es muy complejo y requiere una personalización de su servidor web en gran medida.
- Un servidor web de producción necesita un cortafuegos para bloquear el tráfico no deseado que podría causar una gran carga en su servidor. Implementar IPTABLE Las reglas con línea de comandos son muy complejas. Se necesitan conocimientos del entorno 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 a nivel de SO 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. Administrar todas estas aplicaciones en un sistema central Linux/Unix requiere experiencia en las tecnologías respectivas.
Por lo tanto, se puede decir que administrar un servidor web para varios dominios es una tarea muy compleja y requiere editar cientos de archivos de configuración y personalizar cada aplicación para lograr el resultado deseado. Solucionar cualquier error de configuración 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 webEstá pensado para proporcionar servicios de alojamiento masivo que sean fáciles de usar y configurar. cPanel ha reducido las barreras técnicas de entrada al alojamiento y la gestión de servidores web. Facilita las tareas complejas y 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 recompilar su servidor web, es decir, Apache en una plataforma Linux normal, debe seleccionar/buscar manualmente el módulo requerido. cPanel proporciona la funcionalidad Easyapache, que es un método de compilación de servidor web basado en scripts.
No sólo le proporciona servicios web sino también Mail, DNS, FTP y muchos más servicios necesarios para su aplicación web.
Una tarea que requiere experiencia en alojamiento basado en Linux/Unix, como instalar SSL, recompilar Apache con diferentes módulos PHP, actualizar la seguridad web, configurar reglas IPTABLE efectivas, agregar usuarios FTP, crear cuentas de correo para cada dominio, escanear la raíz de su documento con antivirus y crear bases de datos son fáciles de completar con cPanel.
Proporciona una gran cantidad de scripts que reparan, 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 manualmente los archivos 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 de los documentos, las cuentas de correo electrónico y los correos, las cuentas FTP, las bases de datos, los registros DNS y otras aplicaciones.
También proporciona una documentación sólida y cuenta con una comunidad muy grande de usuarios donde podrá debatir y obtener soluciones a sus problemas.
Entonces, uno puede decir que cPanel es la mejor aplicación para administrar su servidor web con las funciones 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 principal.
Hay muchos productos que compiten con cPanel como Plesk, ISPConfig, Ajenti, Kloxo, Open Panel, Zpanel, etc.