martes, 25 de marzo de 2014

Configuración de un servidor web Apache en CentOS

Está Escrito:
Si confesamos nuestros pecados, él es fiel y justo para perdonar nuestros pecados, y limpiarnos de toda maldad. (1 Juan 1:9)
Tomado de : Desarrolloweb
Cuando contratamos un servidor a nuestro proveedor de servicios, podemos elegir el sistema operativo, la distribución y la configuración inicial. En nuestro caso optaremos por un servidor Linux con una distribución de la última versión de CentOS, configuración mínima y 64 bits. 

Una vez que el servidor este disponible podremos acceder por SSH. Nada mas conectar podremos empezar con la siguiente configuración:

1) Cambiamos el nombre de nuestra máquina

Podemos hacerlo editando el fichero “/etc/hosts”. Al final de la línea que empiece por 127.0.0.1 añadimos el nombre que queramos, quedando de la siguiente manera:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 minombre

 
También habrá que hacerlo en el fichero “/etc/sysconfig/ network”, cambiando el valor de la variable “HOSTNAME”. En este caso el fichero queda de la siguiente manera:
NETWORKING=yes
HOSTNAME=minombre

2) Actualizamos el sistema con el siguiente comando


#yum update
Si queremos que al instalar los grupos, que veremos mas adelante, se instalen también los paquetes opcionales, añadiremos entonces en el fichero "/etc/yum.conf" la siguiente línea:
group_package_types=mandatory,default,optional

3) Instalamos las herramientas de desarrollo, como el paquete de compiladores GCC, make, las fuentes del kernel y Perl


#yum install gcc make kernel-devel perl
Esto instala los mínimos paquetes para desarrollo. Si queremos instalar todos ellos, podremos hacerlo ejecutando el siguiente comando:
#yum groupinstall “Development tools”.

 
Si antes de instalarlos queremos sólo ver los paquetes que contiene el grupo de desarrollo, ejecutamos la siguiente línea:
#yum groupinfo "Development tools"

4) Instalamos PHP

Con el siguiente comando instalamos todo lo necesario:
 
#yum groupinstall "PHP Support”

 
Puede que nos falte alguna cosa, así que podemos correr la siguiente línea para completar la instalación de PHP:
#yum install php-mbstring php-devel php-mcrypt zlib zlib-devel zlib-static

 
Seguidamente, podemos configurar la zona horaria predeterminada usada por las funciones "date" y "time", para ello en el fichero "/ etc/php.ini" añadimos la siguiente línea:
date.timezone = "Europe/Madrid"

5) Instalamos y configuramos el servidor Apache


#yum groupinstall “Web Server”.
Como hemos dicho, si antes de instalar queremos ver todos los paquetes que contiene este grupo, haríamos "groupinfo" en lugar de "groupinstall".
Podemos completar la instalación del servidor Apache instalando las librerías de desarrollo:
#yum install httpd-devel

 
Para ver la versión de Apache instalada, ejecutamos:
#httpd -v

 
El fichero principal de configuración se encuentra en "/etc/ httpd/conf/httpd.conf", y el resto de ficheros de configuración en "/etc/httpd/conf.d".
Hay que decir que cualquier fichero con extensión .conf que coloquemos en el directorio "/etc/httpd/conf.d" será procesado por el servidor Apache. Tener en cuenta que los procesa por orden alfabético. Si hacemos un cambio en alguno de estos ficheros o añadimos uno nuevo, hay que recargar para que el servidor recoja los cambios y para ello hacemos:
#service httpd reload
Ahora daremos un nombre al servidor. Aunque no es necesario hacer esto, sí es recomendable para que no aparezcan problemas en los arranques. Para esto nos aseguramos de que en el fichero de configuración httpd.conf tengamos la siguiente línea:
ServerName localhost
También es recomendable eliminar la página de prueba que nos instala el servidor. Para ello editamos el fichero /etc/httpd/ conf.d/welcome.conf y comentamos todas las líneas, quedando de la siguiente manera:
#<LocationMatch "^/+$">
#Options -Indexes
#ErrorDocument 403 /error/noindex.html
#</LocationMatch>
Si queremos utilizar servidores virtuales (virtual hosts) y tener los ficheros organizados, podemos crearnos un fichero llamado por ejemplo "vhosts.conf" que contenga nuestros virtual hosts y colocar el fichero en "/etc/httpd/conf.d". El fichero quedaría con un contenido parecido al siguiente:
NameVirtualHost [IP]:80
<VirtualHost [IP]:80>
ServerName www.midominio.com
ServerAlias www.midominio.com midominio.com
DocumentRoot /var/www/html/midominio.com/www
CustomLog /etc/httpd/logs/midominio.com.access_log combined
ErrorLog /etc/httpd/logs/midominio.com.error_log
</virtualhost>

 
Sustituir [IP] por tu IP pública y “midominio” por el dominio que quieras dar servicio.
Ahora podemos arrancar el servidor Apache de la siguiente manera:
#service httpd start

 
Si queremos que el servicio se inicie al arrancar nuestra máquina, podemos habilitarlo con:
#chkconfig httpd on

 
Si en los servidores DNS de "midominio" tenemos las entradas correspondientes apuntadas correctamente a nuestra IP, ya podríamos verlo a través de un navegador entrando en http:// www.midominio.com 

1) Instalación de MySQL

Tal y como hicimos con Apache, instalamos MySQL de manera similar, es decir:
#yum groupinstall “MySQL Database server”

  Esto instalará el paquete mysql-server necesario para ejecutar el servidor de base de datos. A continuación instalamos las herramientas del cliente MySQL con:
#yum groupinstall “MySQL Database client”

  A continuación editamos el fichero de configuración de MySQL que podemos localizar en “/etc/my.cnf”.
Por cierto, el editor que suelo utilizar en el terminal es “nano”. No es tan potente como Vim o Emacs pero para ediciones sencillas, como en estos casos, es más que suficiente y su uso es muy simple: al editar cualquier fichero podemos ver en las dos líneas de abajo la ayuda.
Por tanto, hacemos:
#nano /etc/my.cnf

  El contenido de my.cnf podría ser algo tan sencillo como esto:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

  Otros ficheros con configuraciones diferentes podemos encontrarlos en “/usr/share/doc/mysql-server-x.x.x” (sustituir x.x.x por nuestra versión de MySQL). Aquí podremos encontrar ejemplos de configuraciones para sistemas muy grandes (my-huge.cnf), pequeños (my-small.cnf), etc.
Lo siguiente que debemos hacer es ponerle la clave al usuario root de MySQL, así como eliminar la base de datos “test” y el usuario anónimo que se instalan por defecto. Para ello arrancamos el servicio con:
#service mysqld start

  A continuación ejecutamos la siguiente línea:
#/usr/bin/mysql_secure_installation

  Después de contestar a una serie de preguntas que nos hace, ya tendremos nuestro servidor MySQL instalado y ejecutándose. Es recomendable poner que se inicie al arrancar nuestra máquina Linux, para ello basta con hacer:
#chkconfig mysqld on

  Si queremos ver la información de los servicios del sistema y comprobar que los que hemos instalado hasta ahora se inician al arrancar la máquina, podemos hacerlo ejecutando:
#chkconfig --list

  En este punto podremos ver los servicios httpd y mysqld configurados en los niveles 2, 3, 4 y 5.

2) Instalamos el servidor FTP

Actualmente existen varios servidores de FTP que podemos instalar en nuestro sistema. En nuestro caso hemos optado por instalar ProFTPD, ya que es bastante estable y seguro.
Lo primero es asegurarnos de que no tenemos ya instalado otro servidor FTP, como pudiera ser vsftpd; en tal caso habría que eliminarlo con:
#yum remove vsftpd

  Si queremos instalar proftpd con yum debemos habilitar EPEL, que es un repositorio con paquetes adicionales. Lo habilitamos de la siguiente manera:
#rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

  A continuación basta con instalar proftpd:
#yum install proftpd

  Seguidamente lo configuramos editando el fichero “/etc/proftpd.conf”. Algunas líneas útiles que deberíamos agregar al fichero de configuración y que no vienen en la instalación por defecto son:
#Para que no muestre los directorios superiores
DefaultRoot ~
#Para ocultar . y ..
ListOptions "" strict
#Permite continuar descargas incompletas
AllowRetrieveRestart on
#Permite continuar subidas incompletas
AllowStoreRestart on
Arrancamos el servicio:
#service proftpd start

  Lo habilitamos para que se inicie al arrancar la máquina:
#chkconfig proftpd on

  En este punto ya tendríamos el servidor listo para empezar a funcionar, pero antes de nada lo recomendable es asegurarlo. Aquí hay algunas cosas que hacer, pero para no alargar demasiado el artículo comento un par de puntos importantes para hacer ya mismo:
  • Si contamos con un firewall lo ideal es utilizarlo y cerrar todos los puertos excepto los que vayamos a utilizar: 80(http), 443(https), 20, 21(ftp), 22(ssh),…
  • Si accedemos a nuestra máquina por ssh podemos añadir una regla a las iptables para restringir el acceso por IP, lo mismo para el ftp (sustituimos las Xs por nuestra IP):
#/sbin/iptables --flush
#/sbin/iptables -A INPUT -s XXX.XXX.XXX.XXX -p tcp --dport 20:21 -j ACCEPT
#/sbin/iptables -A INPUT -s XXX.XXX.XXX.XXX -p tcp --dport 22 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp --dport 20:21 -j DROP
#/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
#/etc/rc.d/init.d/iptables save

  Sé que se puede profundizar mucho mas en cada uno de estos puntos, pero el objetivo era hacer una guía breve y sencilla para poder comenzar a trabajar con el servidor.

No hay comentarios:

Publicar un comentario