TOP

Servidor Apache CentOS 6

Introducción.

El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.12 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que Behelendorf quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. En inglés, a patchy server (un servidor "parcheado") suena igual que Apache Server.

Instalación.


Tecleamos la siguiente orden en la terminal del sistema operativo:

yum -y install httpd

Si se desea que Apache incluya soporte para PHP/MySQL, Perl, Python y SSL/TLS, ejecutamos lo siguiente:

yum -y install php php-mysql mod_perl mod_wsgi mod_ssl mod_python

Una vez instalado, podemos poner el servicio HTTPD activo de forma permanente con la orden

chkconfig httpd on

Ni que decir tiene que tenemos que abrir el puerto 80 del cortafuegos.




Para iniciar el servicio por primera vez, ejecute lo siguiente:

service httpd start

Directorios Virtuales.

Si, por ejemplo, quisiéramos añadir el alias para un directorio localizado en /var/datos/fotos/ y el cual queremos visualizar como el directorio /fotos/ en Apache, lo primero será crear el directorio:

mkdir -p /var/datos/fotos/

Cambiamos los contextos de SELinux de este directorio, con la finalidad de que tenga rol de objeto (object_r), creado por usuario de sistema (system_u) y tipo httpd_sys_content_t:

chcon -u system_u /var/datos/fotos/
chcon -r object_r /var/datos/fotos/
chcon -t httpd_sys_content_t /var/datos/fotos/


Creamos el siguiente fichero de configuración

gedit /etc/httpd/conf.d/ejemplos.conf

Añadimos el siguiente contenido:

Alias /fotos /var/datos/fotos/
          <Directory "/var/datos/fotos/">
                    Options Indexes
          </Directory>


Guardamos el archivo, cambiamos el propietario y los permisos del directorio /var/datos/fotos/

chmod 777  /var/datos/fotos/
chown angel:angel /var/datos/fotos/

Recargamos el servicio

service httpd reload

Abrimos un navegador (127.0.0.1/fotos) y comprobamos que funciona, con el siguiente resultado:


Tenemos este resultado porque no hay una página index.html. En el caso de que la hubiera (para hacer un index.html a modo de prueba no hay más que escribir unas escuetas líneas en la terminal como echo Hola mundo > index.html y chmod 777 index.html dentro del directorio del sitio web) será la página principal del sitio, sustituyendo la página anteriormente impuesta.



Limitar el acceso por usuario y contraseña.

Primero creamos el directorio /var/www/privado/

mkdir -p /var/www/privado

Generamos el archivo /etc/httpd/conf.d/autenticar.conf.

gedit /etc/httpd/conf.d/autenticar.conf &

Añadimos el siguiente contenido.

Alias /privado /var/www/privado
<Directory "/var/www/privado">
           Options Indexes
           AllowOverride All
           Order allow,deny
           Allow from all
</Directory>


Recargamos el servicio httpd.

service httpd reload

Creamos el archivo /var/www/privado/.htaccess.
gedit /var/www/privado/.htaccess &

Añadimos las siguientes líneas al archivo.

AuthName "Sólo usuarios autorizados"
AuthType Basic
Require valid-user
AuthUserFile /var/www/claves

Generamos el archivo de claves dentro de /var/www/claves.

touch /var/www/claves

Cambiamos los permisos de claves y su propietario.

chmod 600 /var/www/claves
chown apache:apache /var/www/claves

Ahora, desde el terminal, escribimos el mandato htpasswd junto con la ruta de directorio y el usuario para crearle la clave.

htpasswd /var/www/claves angel
Entramos en el navegador en la dirección 127.0.0.1/privado y saldrá el cuadro de petición de usuario y contraseña.

Redirección de directorios.

Genere el archivo denominado /etc/httpd/conf.d/redireccion.conf  

gedit /etc/httpd/conf.d/ejemplo-redireccion.conf &

Añadimos la siguiente línea.

Redirect 301 /arandasri http://www.arandasri.blogspot.com/

Recargamos el servicio httpd

service httpd reload

Entramos al navegador a la dirección http://127.0.0.1/arandasri para comprobar que nos redirecciona a la página deseada.




Tipos de MIME.

Genere un archivo que denominado /etc/httpd/conf.d/mimes.conf

gedit /etc/httpd/conf.d/mimes.conf

Añadimos el siguiente contenido.

AddType application/ogg .ogg
AddDescription "Ogg Vorbis Audio" .ogg
AddIcon /icons/sound2.png .ogg

Recargue el servicio httpd

service httpd reload

Para comprobar un sonido desde la página, podemos copiar uno del propio sistema Ubuntu, y descargarlo dentro de una de las carpetas del sitio web.

cp /usr/share/sounds/ubuntu/stereo/phone-incoming-call.ogg /var/datos/fotos/sonar.ogg

Entramos a la dirección donde está ubicado el archivo .ogg desde el navegador y este es el resultado: http://127.0.0.1/fotos/sonar.ogg



Generando firma digital y certificado.

Como usuario root, entramos al siguiente directorio.

cd /etc/pki/tls

Escribimos la siguiente orden en el terminal y a continuación nos pedirá una parafrase.

openssl genrsa -des3 -out private/dominio.tld.key 2048

Para que no nos pida tener que poner la parafrase cada vez, introducimos la siguiente orden.

openssl rsa -in private/dominio.tld.key -out private/dominio.tld.pem

Escribimos la siguiente orden y nos pedirá una serie de datos.

openssl req -new -key private/dominio.tld.key -out certs/dominio.tld.csr

openssl x509 -req -days 730 -in certs/dominio.tld.csr -signkey private/dominio.tld.key -out certs/dominio.tld.crt

Accedemos al archivo /etc/httpd/conf.d/ssl.conf

gedit /etc/httpd/conf.d/ssl.conf

Buscamos y cambiamos estas líneas.

SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

Por estos otros.

SSLCertificateFile /etc/pki/tls/certs/dominio.tld.crt
SSLCertificateKeyFile /etc/pki/tls/private/dominio.tld.pem

Reiniciamos los servicios httpd

service httpd restart

Debemos tener en cuenta que debemos tener el HTTPS abierto en el cortafuegos (Puerto 443)


Abrimos nuestro navegador favorito e introducimos como dirección https://127.0.0.1/fotos y aparecerá lo siguiente.


También funciona con nuestro dominio.


Ahora tenemos nuestro propio certificado local.

Configuración de Apache para múltiples dominios.

El primer paso consiste en crear la estructura de directorios para el anfitrión virtual.

mkdir -p /var/www/red20b.local/{cgi-bin,html,logs,etc}

Creamos el archivo /etc/httpd/conf.d/dominio.conf:

gedit /etc/httpd/conf.d/dominio.conf

Y le aplicamos las siguientes líneas al archivo.

<VirtualHost *:80>
             ServerAdmin angel_aranda86@hotmail.com
             DocumentRoot /var/www/red20b.local/html
             ServerName www.red20b.local
             ServerAlias red20b.local
             Redirect 301 / https://www.red20b.local/
             CustomLog logs/red20b.local-access_log combined
             Errorlog logs/red20b.local-error_log
</VirtualHost>

Reiniciamos el servicio Apache.

service httpd restart

Y comprobamos que funciona en el navegador.


Para hacer hosting a un usuario, lo que tenemos que hacer es poner el DocumentRoot en /home/usuario/, que es donde tiene alojado su pagina web.

mkdir -p /home/usuario/{cgi-bin,html,logs,etc}

Y especificar el dominio dentro de dominio.conf

<VirtualHost *:80>
             ServerAdmin usuario@dominio.com
             DocumentRoot /home/usuario/html
             ServerName www.dominio.com
             ServerAlias
dominio.com 
             Redirect 301 / https://www.dominio.com/
             CustomLog logs/dominio.com-access_log combined
             Errorlog logs/dominio.com-error_log
</VirtualHost>


Soporte CGI.


Si queremos añadir que se reconociera la extensión *.cgi como un guión CGI (Common Gateway Interface), solo bastará añadir un fichero que denominaremos, arbitrariamente, /etc/httpd/conf.d/cgi.conf con el siguiente contenido:

AddHandler cgi-script .cgi
 
 
Creamos el fichero /var/www/cgi-bin/tiempo.cgi.

gedit /var/www/cgi-bin/tiempo.cgi &

Dentro de este fichero metemos el siguiente contenido.

#!/usr/bin/perl
print "content-type: text/htmlnn";
print scalar localtime;
print "n";

Deberemos de cambiar el permiso del archivo anterior

chmod  755 /var/www/cgi-bin/tiempo.cgi

Damos permisos SELinux para CGI:

setsebool –P httpd_enable_cgi 1

Abrimos el navegador y entramos en la dirección 127.0.0.1/cgi-bin/tiempo.cgi



 Sección Paginade


Creamos el fichero /etc/httpd/conf.d/aliases.conf

gedit  /etc/httpd/conf.d/aliases.conf &

Y escribimos las siguientes líneas.

Alias /paginade /home/
<Directory /home/>
Options Indexes Includes FollowSymLinks
AllowOverride all
Allow from all
</Directory>

Una vez guardado, escribimos en la terminal.

setsebool -P httpd_enable_homedirs 1

Cambiamos los permisos de los home

chmod 755 /home/* 

Reiniciamos el servicio

service httpd restart  

Entramos en un navegador y escribimos en la barra de dirección.

127.0.0.1/paginade

Y este es el resultado.

 

0 comentarios:

Publicar un comentario