Instalación y configuración de Apache2 en CentOS 6.4
Hola nuevamente,
Ahora que ya tenemos la instalación mínima de un servidor CentOS 6.4 ( ) vamos a instalar Apache2 para ir armando nuestro webserver.
Los pasos de este tutorial requieren que el usuario tenga privilegios de root
PASOS PARA LA INSTALACIÓN
1.Como root en la shell:
[root@CentOS~]# yum install -y httpd
2. Arrancamos el servicio.
[root@CentOS ~]# service httpd start
Configurar para que se inicie automáticamente en el arranque del sistema:
[root@CentOS ~]# chkconfig--level 235 httpd on
Abrimos en el firewall del sistema el puerto 80 que es el que utiliza este servicio para que podamos tener acceso al mismo desde afuera, para lo que necesitaremos abrir el fichero de configuración de IPTABLES
[root@CentOS ~]# nano /etc/sysconfig/iptables
Añadimos lo siguiente:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
Reiniciamos el servicio firewall de la siguiente forma:
[root@CentOS ~]# /etc/init.d/iptables restart
La configuración del servidor web la tenemos que realizar sobre dos ficheros:
[root@CentOS ~]# /etc/httpd/conf/httpd.conf
Ruta para configurar para dominios virtuales. (No existe el archivo,hay que crearlo). Lo voy a explicar más adelante cuando veamos la creación de archivos de configuración de dominios virtuales.
[root@CentOS~]# /etc/httpd/conf.d/
INICIAR EL SERVIDOR WEB DE APACHE
[root@CentOS ~]# /etc/init.d/httpdstart
También podemos utilizar las siguientes opciones:
· start: Inicia el servicio.
· stop: Detiene el servicio.
· restart: Reinicia el servicio.
· reload: Recarga el servicio.
· status: se ve el estado del servicio.
ALGUNAS DIRECTIVAS PARA MEJORAR LA SEGURIDAD Y EL RENDIMIENTO DEL SERVIDOR
Editar el archivo de configuración:
[root@CentOS~]# /etc/httpd/conf/httpd.conf
Esta directiva controla si el campo Server de las cabeceras de las respuestas que se envían de vuelta a los clientes incluye una descripción del sistema operativo genérico del servidor así como información sobre los módulos compilados en el servidor, donde Prod solo muestra la palabra apache.
ServerTokens Prod
Esta directiva niega o permite conexiones persistentes, si se dese activar se utiliza on;
KeepAlive Off
Esta directiva permitirá a Apache formar las URLs auto-referenciadas usando el nombre de host y puerto suministrados por el cliente, si desea activarla utilice on;
UseCanonicalName Off
Esta directiva hace que los ficheros .htaccess sean ignorados completamente.En ese caso, el servidor ni siquiera intentará leer los archivos .htaccess existentes;
AllowOverride None
Esta directiva esta desactivada por defecto porque puede confirmar la presencia de una cuenta de usuario en el sistema. Si desea activar la navegación del directorio del usuario en el servidor utilice la opción enabled;
UserDir disabled
Esta directiva desactiva la navegación del directorio del usuario root;
UserDir disabled root
Esta directiva permite la configuración de un pie de página que se añadirá a documentos generados por el sevidor (mensajes de error, listado de directorios generados por mod_proxy salida de mod_info, etc.);
ServerSignature Off
HostnameLookups registra los nombres o las direcciones IP de los clientes. Por defecto está en Off para evitar que para cada consulta se tenga que realizar una resolución DNS para averiguar el nombre y disminuya el rendimiento. Si estuviera activo, para cada consulta el servidor apache solicita una resolución DNS inversa para averiguar el nombre que corresponde con la dirección IP. Si realmente nos interesaran los nombres es aconsejable hacerlo a partir de los ficheros de"log" de forma independiente al servidor web como hacer ciertos programas de análisis de log como webalizer.
HostnameLookups Off
SELINUX Y APACHE (Documentación SELinux y Apache extraída dehttp://www.alcancelibre.org)
En CentOS, Fedora™ y Red Hat™ Enterprise Linux, de modo predeterminado SELinux viene activo en modo obligatorio (enforcing).
Éste añade seguridad y protección adicional a Apache. Sin embargo algunas opciones impedirán utilizar ciertas funciones en Apache, como directorios virtuales fuera del directorio /var/www,directorios ~/public_html, el envío de correo electrónico desde aplicaciones basadas sobre HTTP, etc.
Para permitir a Apache poder enviar correo electrónico desde alguna aplicación,ejecute:
[root@CentOS~]# setsebool -P httpd_can_sendmail 1
Parapermitir que Apache pueda leer contenidos localizados en los directorios deinicio de los usuarios locales, ejecute:
[root@CentOS~]# setsebool -P httpd_read_user_content1
Estas últimas dos políticas son indispensables para el funcionamiento de cualquier cliente de correo electrónico basados sobre HTTP (Webmails).
Para permitir a Apache poder ejecutar guiones CGI, ejecute:
[root@CentOS~]# setsebool -P httpd_enable_cgi 1
Para permitir las inclusiones del lado del servidor (SSI, Server Side Includes), ejecute:
[root@CentOS~]# setsebool -P httpd_ssi_exec 1
Para permitir que Apache se pueda conectar a una base de datos localizada en otro servidor, ejecute:
[root@CentOS~]# setsebool -Phttpd_can_network_connect_db 1
Para permitir a Apache realizar conexiones de red hacia otro servidor, ejecute:
[root@CentOS ~]# setsebool -Phttpd_can_network_connect 1
Para permitir que los usuarios locales puedan utilizar un directorio público (public_html), ejecute:
[root@CentOS ~]# setsebool -Phttpd_enable_homedirs 1
Esta última política es indispensable para el funcionamiento de anfitriones virtuales asignados a usuarios locales, pues permite utilizar los directorios ~/public_html.
Para permitir administrar a través de FTP o FTPS cualquier directorio gestionado por Apache o bien permitir a Apache funcionar como un servidor FTP escuchando peticiones a través del puerto de FTP, ejecute el siguiente mandato:
[root@CentOS ~]# setsebool -Phttpd_enable_ftp_server 1
Para desactivar la ejecución de PHP y otros lenguajes de programación para HTTP a través de Apache, ejecute el siguiente mandato:
[root@CentOS ~]# setsebool -Phttpd_builtin_scripting 0
Para consultar todas políticas disponibles que existen para Apache, ejecute:
[root@CentOS ~]# getsebool -a|grep httpd
Para consultar todas políticas disponibles que existen para Apache, junto con una breve descripción, ejecute:
[root@CentOS ~]# semanage boolean-l |grep httpd
Para definir que un directorio fuera de /var/www, como por ejemplo /sitios/dominio.tld/html,pueda ser utilizado por Apache, se le debe asignar el contexto httpd_sys_content_t.Éste puede asignarse a través del mandato chcon, como se muestra en el siguiente ejemplo:
[root@CentOS ~]# chcon -t httpd_sys_content_t/sitios/dominio.tld/html
Cualquier contenido que sea copiado o transferido dentro de /var/www automáticamente adquiere el contexto httpd_sys_content_t.
Para definir que se permite ejecutar un guión CGI en particular, como por ejemplo /sitios/dominio/cgi-bin/formulario.pl, se utiliza el siguiente mandato:
[root@CentOS ~]# chcon -t httpd_sys_script_exec_t/sitios/dominio/cgi-bin/formulario.pl
Cualquier contenido que sea copiado o transferido dentro de cualquier sub-directorio de /var/www que se denomine cgi-bin,automáticamente adquiere el contexto httpd_sys_script_exec_t.
Para definir que, por ejemplo, /var/www/dominio/public_html/leer.php pueda realizar procedimientos de sólo lectura de datos fuera del directorio /var/www,ejecute el siguiente mandato:
[root@CentOS ~]# chcon -t httpd_sys_script_ro_t /var/www/dominio/public_html/leer.php
Para definir que, por ejemplo, /var/www/dominio/public_html/escribir.php pueda realizar procedimientos de lectura y escritura de datos fuera del directorio /var/www, ejecute el siguiente mandato:
[root@CentOS ~]# chcon -t httpd_sys_script_rw_t /var/www/dominio/public_html/escribir.php
CREACIÓN DE DOMINIOS VIRTUALES
Debemos activar la directiva NameHostVirtual, en el archivo de configuración principal.
/etc/httpd/conf/httpd.conf
En dicho fichero debemos localizar la siguiente línea y descomentarla.
NameVirtualHost *:80
ESTRUCTURA DE DIRECTORIOS PARA DOMINIOS VIRTUALES
Vamos a crear los siguientes dominios virtuales.
www.pruebauno.com
www.pruebados.com
www.pruenatres.com
Por cada dominio debemos crear un directorio en la siguiente ruta, y quedará como se muestra a continuación. (Se aclara que va sin el www delante)
mkdir /var/www/pruebauno.com
mkdir /var/www/pruebados.com
mkdir /var/www/pruebatres.com
Lo siguiente será crear dentro de cada uno de estos directorios laestructura básica que debe llevar cada uno de estos dominios.
Estaestructura estará conformada por cuatro directorios:
§ html
§ cgi-bin
§ icons
§ error
Ejemplo de cómodebería quedar para el dominio pruebauno.com
§ mkdir /var/www/pruebauno.com/html
§ mkdir /var/www/pruebauno.com/cgi-bin
§ mkdir /var/www/pruebauno.com/icons
§ mkdir /var/www/pruebauno.com/ error
CREACIÓN Y MODIFICACIÓN DE LOS FICHEROS DECONFIGURACIÓN DE LOS DOMINIOS VIRTUALES.
Deberemos crear los ficheros deconfiguración, (httpd.conf)
vi /etc/httpd/conf.d/pruebauno.com.conf
Contenido del archivo, para pruebauno.com
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/pruebauno.com/html"
ServerName www.pruebauno.com
ServerAliaspruebauno.com
</VirtualHost>
(Si se realizan pruebas) Editar el archivo/etc/hosts, e incluir IP y dominios
vi /etc/hosts
Debería quedar de la siguiente manera.
192.168.1.40 pruebauno.com
Reiniciamosel daemon httpd
/etc/init.d/httpd restart oservice httpd restart
Esto estodo por hoy…