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. aqui . 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 una 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.

















