Apache Tutoriales 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 usar 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. Es compatible con una serie de características; muchas de ellas se compilan como módulos separados y amplían su funcionalidad principal, y puede 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 solo servidor Web Apache sirva a varios sitios web diferentes.
Cómo instalar Apache
Hay muchas maneras de instalar el paquete o aplicación. Se enumeran 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. para personalizar la ubicación de archivos 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 proveedores, siempre existe la opción de compilarlo e instalarlo desde el código fuente. La instalación de Apache desde el archivo fuente es independiente de la plataforma & 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 de objeto que pueden compartir varias aplicaciones mientras se ejecutan) que existe por separado del archivo apache principal. El enfoque de DSO es muy recomendable, hace que la tarea de agregar/eliminar/actualizar módulos de la configuración de los servidores sea muy simple.
Instale Apache: Linux Platform
En sistemas basados en Red Hat o rpm
Si está utilizando una distribución basada en Rpm (RedHat Package Manager es una utilidad para instalar aplicaciones en sistemas Linux), es decir, una distribución basada en Linux. Red Hat, Fedora, CentOS, Suse, puede instalar esta aplicación mediante el Administrador de paquetes específico del proveedor o directamente creando el archivo rpm a partir del archivo tarball 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.
# yum install httpd
El código fuente de apache se puede convertir en un archivo rpm utilizando el siguiente comando.
# rpmbuild -tb httpd-2.4.x.tar.bz2
Es obligatorio tener instalado el paquete-devel en su servidor para crearlo .archivo rpm del origen.
Una vez que convierta el archivo de origen en un instalador rpm, puede usar el siguiente comando para instalar Apache.
# 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.
# /usr/sbin/apachectl start# service httpd start# /etc/init.d/httpd start
Instalar Apache desde el origen
Instalar apache desde el origen requiere que el paquete-devel se instale en su servidor. .Puede encontrar la última versión disponible de Apache, puede descargarla aquí . Una vez descargado el archivo de origen, muévalo a la carpeta / usr / local / src.
cd /usr/local/src gzip -d httpd-2.2.26.tar.gz tar xvf httpd-2.2.26.tar httpd-2.2.26
Para ver todas las opciones de configuración disponibles para Apache, puede usar ./ configure-opción de ayuda. La opción de configuración más común es-prefix={nombre del directorio de instalación}.
./configure --help./configure –prefix=/usr/local/apache –enable-so make make install
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 a través del mecanismo DSO en lugar de requerir una recompilación.
Una vez finalizada 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 INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
Puede ver la pantalla de bienvenida predeterminada de Apache2 navegando por la dirección IP de su servidor.
¿Qué es el Host Virtual?
Un servidor web Apache puede alojar varios sitios web en el MISMO servidor. No necesita una máquina servidor separada y un software apache para cada sitio web. Esto se puede lograr utilizando el concepto de Host Virtual o VHost.
Cualquier dominio que desee alojar en su servidor web tendrá una entrada independiente en el archivo de configuración de apache.
Tipos de Host virtual Apache
- Host virtual basado en nombres
- Host virtual basado en direcciones o IP y.
Host virtual basado en nombres
El alojamiento virtual basado en nombres se utiliza para alojar varios sitios virtuales en una sola 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, httpd.conf / apache2.conf archivo.
Ejemplo de host virtual Apache:
NameVirtualHost *:80<VirtualHost 192.168.0.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example1.com ServerName www.example1.com</VirtualHost><VirtualHost 192.168.0.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example2.comServerName www.example2.com</VirtualHost>
Puede agregar tantos hosts virtuales, según sus requisitos. Puede verificar sus archivos de configuración web con:
#httpd –tSyntax OK
Si el archivo de configuración tiene una sintaxis incorrecta, lanzará un error
# httpd -tSyntax 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 el alojamiento virtual basado en IP, necesita más de una dirección IP configurada en su servidor. Por lo tanto, el número de apache vhost dependerá del número de direcciones IP configuradas en su servidor. Si su servidor tiene 10 direcciones IP, puede crear 10 HOST virtuales basados en IP.
En el diagrama anterior, dos sitios web example1.com y example2.com se les asignaron diferentes direcciones IP y están utilizando alojamiento virtual basado en IP.
Listen 192.168.0.100:80<VirtualHost 192.168.10.108:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example1.com ServerName www.example1.com</VirtualHost><VirtualHost 192.168.10.109:80>ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it.DocumentRoot /var/www/html/example2.comServerName www.example2.com</VirtualHost>
¿Qué Apache necesita para Ejecutar el Archivo Php?
Ejecutar archivos Php en Apache necesita que mod_php esté habilitado en su servidor. Permite a Apache interpretar .Archivos Php. Tiene manejadores 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 /etc/httpd / conf.d/ directorio. También puede 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 forme 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 Linux, por lo que habilitar/deshabilitar este módulo es muy fácil.
Si está utilizando FastCGI como su manejador de PHP, puede configurar varias versiones de PHP para que las usen diferentes cuentas en su servidor.
FastCGI es decir, mod_fastcgi es una extensión de mod_fcgid, donde as mod_fcgid es una alternativa de alto rendimiento de CGI es decir, mod_cgi . Inicia un número 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.
Ejecutar archivos ruby en Apache necesita que mod_ruby esté habilitado. Apache también puede manejar archivos ruby a través de FastCGI. Es posible usar varias versiones de ruby con la ayuda de mod_fcgid, es decir, FastCGI.
También puede instalar apache passenger y configurar Apache para que lo use para servir páginas ruby.
(Phusion Passenger también conocido como «passenger» 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-1makemake 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 agregue la siguiente línea.
Módulo de carga módulos de módulo de carga / mod_ruby.así que
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 deseada & 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 hacker puede usar esta información para lanzar un ataque utilizando las vulnerabilidades disponibles públicamente en la versión particular del servidor o del sistema operativo.
Para evitar que el servidor web Apache muestre esta información, tenemos que modificar la opción «firma del servidor» disponible en el archivo de configuración de apache. De forma predeterminada, está «activado», tenemos que activarlo»desactivado».
vim /etc/httpd/conf/httpd.conf
ServerSignature OffServerTokens Prod
También hemos establecido «ServerTokens Prod» que le dice al servidor web que devuelva solo apache y suprima la versión principal y menor 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 la lista 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 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.
<Directory /var/www/html> Options -Indexes</Directory>
3) desactivar innecesarios módulos
es una buena práctica para desactivar todos los módulos que no están en uso. Puede ver la lista de módulos habilitados disponibles en su archivo de configuración de apache –
#httpd –Mperl_module (shared)php5_module (shared)proxy_ajp_module (shared)python_module (shared)ssl_module (shared)
Muchos de los módulos listados se pueden deshabilitar, como mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex, ya que casi no 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 usted comentó el módulo, guarde el archivo.
Reinicie los servicios apache con el siguiente comando.
/etc/init.d/httpd restart
4) Restringir el acceso a archivos fuera del directorio raíz de la web
Si desea asegurarse de que los archivos que están fuera del directorio raíz de la web no sean accesibles, debe asegurarse de que el directorio esté restringido con las opciones «Permitir» y «Denegar» en el archivo de configuración del servidor web.
<Directory/>Options NoneAllowOverride NoneOrder deny,allowDeny from all</Directory>
Una vez que restrinja el acceso fuera de la directoy 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) Usando 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 cause tanto daño como lo haría si se deja que siga su curso. Se puede descargar aquí.
Descargue el archivo anterior
6) Usando 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 de ataques de fuerza bruta. El módulo mod_security se puede instalar con el gestor 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 pueda provocar 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 de 0 a 2 GB (es decir, 2147483647 bytes) según sus requisitos.
<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: Especificar un formato personalizado.
- CustomLog: Crear y formatear un archivo de registro.
La directiva TransferLog está disponible en el archivo de configuración de apache y gira los archivos de registro de host virtual según los parámetros establecidos.
<VirtualHost www.example.com> ServerAdmin This email address is being protected from spambots. You need JavaScript enabled to view it. 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 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.archivo conf (sistemas basados en rpm)
Formato de registro común
LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog logs/access_log common
Registro común generado por Apache
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\"" combinedCustomLog 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 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 que enlaza a esta URL.
- El agente de usuario es la cadena de identificación del navegador.
Registro combinado generado por Apache:
199.187.122.91 - - "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 del servidor. Debe especificarse en la sección 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 staticIP configurada en él.
3. Necesita tener todos los módulos necesarios para ejecutar páginas web. Si un servidor web procesa páginas PHP, necesita tener habilitado el módulo PHP.
- también necesita tener una buena aplicación Antivirus configurado y en ejecución para proteger el Servidor Web de Malware o ataques de Virus. También necesita un mecanismo para actualizar la aplicación antivirus/anti malware configurada de forma regular sin intervención manual para obtener el máximo beneficio de ellos.
- Si tiene cientos de dominios alojados en su servidor web, debe tener que implementar limitaciones en la cuota del sistema de archivos para cada dominio, el número de bases de datos que cada dominio puede crear, el número 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 menor privilegio de usuario para que no dañe archivos importantes & rompa todo el servidor. Apache no proporciona ninguna funcionalidad de este tipo y necesita diferentes aplicaciones de terceros, personalización del sistema operativo para lograr esto.
- Si está agregando un nuevo dominio a su servidor web, necesita editar cientos de archivos de configuración para habilitar todas las funciones para el dominio agregado.
- Si uno de los dominios alojados requiere una configuración PHP diferente que el resto de los dominios, implementar esto en el servidor web Apache central 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 alta carga en el servidor. Implementar reglas IPTABLES con la línea de comandos es muy complejo. Necesita experiencia en el entorno core 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 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 Linux/Unix básico requiere experiencia en las tecnologías respectivas.
Por lo tanto, 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 cumplir con el resultado deseado. Solucionar cualquier error de configuración será muy difícil para los principiantes.
La solución que utiliza 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 para la entrada en la administración de hosting y servidores web. Facilita la tarea compleja, 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, p. ej. 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 scripts.
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 alojamiento basado en Linux / Unix, como instalar SSLs, recompilar Apache con diferentes módulos PHP, actualizar la seguridad web, configurar reglas IPTABLES 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, es fácil de completar con cPanel.
Proporciona una gran cantidad de scripts que solucionan, instalan y solucionan problemas de tareas administrativas comunes.
Proporciona una funcionalidad de copia de seguridad y restauración que elimina la necesidad de copiar manualmente los archivos al almacenamiento de copia de seguridad. Si realiza una copia de seguridad de su dominio, cPanel creará un archivo tar que contendrá la carpeta raíz del documento, cuentas de correo electrónico 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 solución a sus problemas.
Por lo tanto, 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 principal.
Hay muchos productos competidores para cPanel como Plesk, ISPConfig, Ajenti,Kloxo, Open Panel, Zpanel, etc.