CentOS

3 febrero 2015
Josep Ma Solanes 0

No todo se termina con el entorno Windows, hoy en día más que nunca, no es extraño encontrarse con otros sistemas operativos en la empresa realizando tareas concretas. Continuando las entradas de instalación de sistemas operativos le toca el turno a preparar un máquina con CentOS.

CentOS es una distribución Linux, gratuita, para la empresa basada en Red Hat (de pago). Es una de las pocas versiones que podemos decir está medio soportada por los fabricantes de hardware de servidores, al estarlo Red Hat. Al ser una distribución mantenida por la comunidad su descarga es libre. Se pueden descargar las ISO de instalación desde su web: www.centos.org.

La vida profesional me ha llevado a estar especializado en el mundo Windows, pero la inquietud, curiosidad, probar nuevas cosas, etc… también me ha hecho tener presente el mundo Linux.

Se habla mucho de servidores LAMP sobre todo para el entorno de Webs, pero ¿como se monta un servidor desde 0 para servir nuestras páginas Webs?

Instalación de CentOS

Para la entrada se utiliza una máquina virtual sobre Microsoft Hyper-V y los DVDs completos de la versión 6.5 de 64 bits.

Arrancando la máquina desde la ISO 1 se inicia el menú de arranque desde el DVD. Seleccionar la opción Install or upgrade an existing system.

nuvoletx-01

Al seleccionar instalar, se inicia el asistente de instalación. Lo primero que pide es comprobar que la ISO sea correcta. Si lo consideramos, podemos saltar este paso seleccionando Skip. (Nos movemos con el Tabulador y el Intro).

nuvoletx-02

Se inicia el entorno gráfico y con él el ratón. Hacer clic en el botón Next.

nuvoletx-03

Indicar el idioma a utilizar para el proceso de instalación. Para simplificarlo, seleccionar Spanish y hacer clic en Next.

nuvoletx-04

El entorno cambia a Español. Hay que seleccionar el idioma del teclado, por defecto marcado Español. Hacer clic en Siguiente.

nuvoletx-05

Configuración del almacenamiento, seleccionar Dispositivos de almacenamiento básicos y hacer clic en Siguiente.

nuvoletx-06

El sistema encuentra un disco duro local de 20 GB que es el que hemos presentado. Está limpio, por lo tanto, se debe borrar y crear las particiones correspondientes. Marcar el botón Si, descarte todos los datos.

nuvoletx-07

Indicar el nombre de la máquina y dominio DNS. Si no debe estar ligada a una red, el nombre de dominio se puede dejar localdomain. El nombre de la máquina el que se quiera, en el ejemplo, nuvoletx. No hacer clic en el botón Siguiente aún.

nuvoletx-09

Comprobar el estado de la tarjeta de red. Hacer clic en el botón Configure la red. Si ha encontrado los controladores de red adecuados, al menos tendría que salir para configurar una interfaz (eth0). Marcarla y hacer clic en el botón Editar.

nuvoletx-10

Asegurar que se inicia la interfaz al arrancar el sistema operativo. Marcar Conectar automáticamente.

nuvoletx-11

En la pestaña Ajustes de IPv4 y IPv6, nos permite especificar el direccionamiento IP correspondiente. En este caso, se deja la configuración por DHCP, pero si es un servidor y se dispone de los datos correctos de configuración, no está de más introducirlo ahora. Seleccionar la opción Manual y introducir los datos que se piden: dirección IP, puerta de enlace, servidores DNS, dominio de búsqueda DNS. Hacer clic en Aplicar cuando todo esté listo y cerrar el cuadro de diálogo que queda abierto para continuar la instalación.

nuvoletx-12

Configuración horaria. Seleccionar el que corresponda y a mi personalmente, desmarcar El reloj del sistema utiliza UTC. Hacer clic en Siguiente.

nuvoletx-13

Contraseña para el administrador del sistema: root. Introducirla dos veces para confirmar y hacer clic en Siguiente.

nuvoletx-14

Configuración de las particiones. Seleccionar Usar todo el espacio y Revisar y modificar el diseño de las particiones. Hacer clic en Siguiente.

nuvoletx-15

Un vistazo a la tabla de particiones que crea, con volúmenes LVM raíz (/) con la mayoría de espacio de disco y un volumen de memoria de paginación (swap) igual a la memoria disponible. Hacer clic en Siguiente.

nuvoletx-16

Se inicia el proceso de formato del disco, puede ser que aparezca alguna advertencia de borrar los datos y de aplicar los cambios en los discos. Aceptarlas para preparar los discos.

nuvoletx-17

Configuración del arranque del sistema operativo, dejar por defecto. Hacer clic en Siguiente.

nuvoletx-18

Escoger los paquetes a instalar con el sistema operativo. Se está desplegando un servidor, cuanto menos sea la superfície de ataque mejor. Seleccionar Minimal y Personalizar ahora. Hacer clic en el botón Siguiente.

nuvoletx-19

Al marcar Personalizar ahora antes, permite escoger los paquetes a instalar durante la instalación del sistema operativo.

  • Base de datos

Cliente de base de datos MySQL > Dejar los paquetes opcionales por defecto.

Servidor de base de datos MySQL > Dejar los paquetes opcionales por defecto.

  • Desarrollo

Herramientas de desarrollo > Dejar los paquetes opcionales por defecto.

  • Servidor de Web

Servidor Web > Dejar los paquetes opcionales por defecto.

Soporte para PHP > Dejar los paquetes opcionales por defecto.

  • Servidores

Servidor FTP > Dejar los paquetes opcionales por defecto.

Servidor CIFS > Dejar los paquetes opcionales por defecto.

Hacer clic en el botón Siguiente para continuar el proceso de instalación, esta vez copiando los binarios. Ponerse cómodos.

nuvoletx-20

Terminada la instalación, hay que reiniciar. Hacer clic en el botón correspondiente y sacar la ISO o DVD para poder iniciar el sistema operativo desde el disco duro.

nuvoletx-21

Al arrancar desde el disco duro aparece la barra de progreso de CentOS, hasta completarse y dejarnos con el login.

nuvoletx-22

nuvoletx-23

Introducir el nombre de usuario root y la contraseña que hemos definido en el proceso de instalación para acceder al intérprete de comandos.

nuvoletx-24

Primeros pasos con CentOS

Crear un usuario de trabajo para no utilizar el root, el operador:

adduser operador
passwd operador

Asignación del usuario operador al grupo de sistema wheel.

usermod -G wheel operador

Establecer privilegios en el usuario operador

visudo

En el archivo, sacar el comentario de la línea (insert para editar) y guardar el archivo (:wq)

%wheel ALL=(ALL) ALL

Configurar el cortafuegos (iptables) para poder acceder por shell remota (ssh). Editar el archivo

vi /etc/sysconfig/iptables

Comprobar que dispone de la línea, si no la tiene se crea. Salir (:q!) o salir y guardar (:wq)

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Si se ha cambiado la configuración del archivo de iptables, reiniciar el servicio:

service iptables restart

Comprobar la dirección IP de la máquina, con la instrucción siguiente localizar la inet addr.

ifconfig eth0

Ya se puede realizar la conexión desde una aplicación de telnet más cómoda como el PUTTY que nos permitirá registrar las operaciones o hacer copiar y pegar. Cerrar la consola

logout

Iniciar el PUTTY. En la opción Session > Logging,

  • Marcar All session output.
  • Log file name, indicar donde generar el archivo de log de la sesión. Por ejemplo escritorio con una preconfiguración del nombre del archivo para cada sesión (&H nombre del host; &Y año; &M mes; &D día; & Hora). Por ejemplo: putty_&H-&Y &M &D – &T.log
  • Si el archivo existe, añadir al final del archivo. Marcar Always append to the end of it.

En Session, indicar la dirección IP o el nombre del HOST del servidor CentOS por el puerto 22 (SSH). Se puede guardar para recuperar después la sesión, indicando un nombre y hacer clic en el botón Save.

nuvoletx-25

Hacer clic en el botón OPEN para abrir la sesión. La primera vez tendremos la advertencia de las claves SSL, hacer clic en el botón Si para almacenarlas para las próximas sesiones. Si todo está correcto se abrirá una ventana pidiendo el login. Iniciar con el usuario operador.

nuvoletx-26

Servidor Web Apache múltiples sites en CentOS

Habiendo seguido los pasos de la instalación, debemos tener los binarios del Apache, MySQL, PHP instalados, pero pendientes de configurar. Para no tener que estar escalando privilegios todo el rato, se puede pasar a modo administrador:

su -

En caso de no estar instalado se puede hacer con la instrucción:

yum -y install httpd php

Antes de empezar a tocar, hacemos una copia de seguridad del archivo de configuración del Apache:

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.original

Editar el archivo /etc/httpd/conf/httpd.conf para permitir disponer de múltiples sites (sitios web) con una misma IP. Descomentar el parámetro y guardar el archivo (:wq):

NameVirtualHost *:80

Crear el archivo de sitios virtuales en /etc/httpd/conf.d/vhost.conf:

vi /etc/httpd/conf.d/vhosts.conf

El contenido del archivo para crear dos sitios web ficticios: www.exemple1.localdomain y www.exemple2.localdomain, tiene que ser:

ServerName localhost
<VirtualHost *:80>
 ServerAdmin webmaster@localdomain
 ServerName localdomain
 ServerAlias localhost.localdomain
 DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:80>
 ServerAdmin webmaster@exemple1.localdomain
 ServerName exemple1.localdomain
 ServerAlias www.exemple1.localdomain
 DocumentRoot /srv/www/exemple1/public_html
 ErrorLog /srv/www/exemple1/logs/error.log
 CustomLog /srv/www/exemple1/logs/access.log combined
 <Directory /srv/www/exemple1/public_html>
  AllowOverride All
  Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>

<VirtualHost *:80>
 ServerAdmin webmaster@exemple2.localdomain
 ServerName exemple2.localdomain
 ServerAlias www.exemple2.localdomain
 DocumentRoot /srv/www/exemple2/public_html
 ErrorLog /srv/www/exemple2/logs/error.log
 CustomLog /srv/www/exemple2/logs/access.log combined
 <Directory /srv/www/exemple2/public_html>
  AllowOverride All
  Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>

Crear los directorios para alojar los dos sitios web:

mkdir -p /srv/www/exemple1/public_html
mkdir /srv/www/exemple1/logs

mkdir -p /srv/www/exemple2/public_html
mkdir /srv/www/exemple2/logs

Crear un grupo para webmasters que puedan acceder y modificar el contenido de las carpetas:

groupadd webmasters

Añadir el usuario operador al grupo de webmasters:

usermod -a -G webmasters operador

Modificar los permisos de grupo de las carpetas de los sitios web. En caso que cada sitio web lo tuviera que administrar una persona diferente, se asignarían permisos a grupos separados, en este caso, como que la administración es única, se asignan los mismos a partir de la carpeta www y subcarpetas:

chown root:webmasters /srv/www/ -R

Y asignación de permisos de escritura al grupo de webmasters:

chmod 775 /srv/www -R

¡No es demasiado recomendable que los otros usuarios tengan acceso de escritura!

Modificar el archivo de hosts para que pueda resolver los dos sitios web que hemos creado

vi /etc/hosts

Que quede parecido a:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 nuvoletx nuvoletx.localdomain
127.0.0.1 www.exemple1.localdomain
127.0.0.1 www.exemple2.localdomain

Comprobar la configuración de los archivos de Apache

httpd -S

No tendrían que aparecer errores ni advertencias, si no una cosa parecida a:

nuvoletx-27

Habilitar el inicio automático del servicio de Apache

/sbin/chkconfig --levels 235 httpd on

Iniciar o reiniciar el servicio:

service httpd restart

Configurar el cortafuegos para que permita el acceso por el puerto TCP 80, sino sólo podríamos acceder desde la propia máquina. Modificar archivo iptables

vi /etc/sysconfig/iptables

Añadir la línea:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Reiniciar el servicio de iptables:

service iptables restart

Si es necesario, modificar el archivo hosts local para poder resolver los nombres anteriores.

Intentar acceder al servidor web mediante un navegador, accediendo a nuvoletx tiene que acceder a la página por defecto del Apache:

nuvoletx-28

Pero si intentamos acceder a los otros sites virtuales, también sale la misma página de ejemplo. Es debido al SELinux que limita el acceso a los directorios. Una opción para comprobarlo es deshabilitarlo temporalmente:

echo 0 > /selinux/enforce

Para dejar aplicar el cambio permanentemente, hay que modificar el archivo /etc/selinux/config, cambiando el parámetro SELINUX a disabled.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

Crear una página web index.html de ejemplo en cada uno de los sitios Web, se puede ver como, al hacer la llamada, ya aparece cada sitio correctamente.

Ejemplo de página HTML sencilla:

<HTML>
   <HEAD>
      <TITLE>
         Lloc web exemple1
      </TITLE>
   </HEAD>
   <BODY>
      <H1>Lloc web EXEMPLE-1</H1>
   </BODY>
</HTML>

nuvoletx-29

nuvoletx-30

Probar también que el PHP funcione correctamente con una página de ejemplo: index.php

<?php
   phpinfo();
?>

nuvoletx-31

¡Ya tenemos el servicio web a grandes rasgos operativo!

Servidor MySQL en CentOS

Con el servidor web funcionando, ahora toca la base de datos: MySQL. Comprobamos que está instalado:

ls /etc/init.d/mysql

En caso de no estarlo se puede instalar con la instrucción:

yum -y install mysql-server mysql

Configuramos el servicio para que se inicie al arrancar el sistema operativo y lo encendemos manualmente:

/sbin/chkconfig --levels 235 mysqld on
service mysqld start

Iniciamos el asistente de configuración de la seguridad de MySQL:

/usr/bin/mysql_secure_installation

Seguir las instrucciones del asistente:

  • Introducir la actual contraseña del root. No tiene para tanto, tecla Intro.
  • Establecer la contraseña para root, contestar Y y introducir la nueva contraseña.
  • Eliminar el usuario anónimo, contestar Y.
  • Desactivar la conexión de root remota. En producción, mejor contestar Y, en desarrollo quizás interesa poder acceder remotamente con root al MySQL. Por lo tanto, dependerá de cada instalación.
  • Eliminar las bases de datos de test, contestar Y.
  • Recargar los privilegios ahora, contestar Y.

Habilitar el cortafuegos para que sea accesible el MySQL desde el exterior (es opcional).

vi /etc/sysconfig/iptables

Añadir la línea

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

Recordar al reiniciar el cortafuegos para aplicar los cambios: service iptables restart

Crear dos bases de datos de ejemplo

Acceder al MySQL y crear dos nuevas bases de datos (por exemple1 y exemple2).

mysql -h localhost -u root -p
create database exemple1DB;
create user 'exemple1DB_user'@'localhost' IDENTIFIED BY 'Contraseña1';
grant all on exemple1DB.* TO 'exemple1DB_user'@'localhost';
flush privileges;
create database exemple2DB;
create user 'exemple2DB_user'@'localhost' IDENTIFIED BY 'Contraseña2';
grant all on exemple2DB.* TO 'exemple2DB_user'@'localhost';
flush privileges;

Salir del entorno de base de datos con quit y probar que nos podemos conectar a cada base de datos con su usuario correspondiente:

mysql -h localhost -u exemple1DB_user -p exemple1DB

Indicar que nos enseñe las bases de datos, sólo debe aparecer la del esquema y la que tenemos permisos:

show databases;

 

Servidor CIFS – SAMBA en CentOS

Como que normalmente trabajaremos desde la red y se generarán archivos que se deben colocar en el servidor, será necesario un servicio de transferencia de archivos. Este servicio puede ser un simple FTP o bien habilitar el protocolo CIFS para tratarlo como una máquina más de la red Windows.

Si hemos seguido la instalación desde el principio, ya tendremos los binarios de SAMBA copiados, si no hay que instalarlos antes.

yum -y install samba

Configuramos el servicio para que se inicie al arrancar el sistema operativo:

/sbin/chkconfig --levels 235 smb on

Habilitar el cortafuegos para permitir la comunicación con los puertos de CIFS. Modificar el archivo:

vi /etc/sysconfig/iptables

con las líneas:

-A INPUT -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -p udp -m udp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT

Reiniciar el cortafuegos para aplicar los cambios:

service iptables restart

Hacer una copia de seguridad del archivo de configuración actual de SAMBA:

cp /etc/samba/smb.conf /etc/samba/smb.original

Modificar el archivo de configuración de SAMBA:

vi /etc/samba/smb.conf

Comentar con un punto y coma (;) delante, los apartados de [homes] y [printers] para que no los comparta.

;[homes]
; comment = Home Directories
; browseable = no
; writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S

;[printers]
; comment = All Printers
; path = /var/spool/samba
; browseable = no
; guest ok = no
; writable = no
; printable = yes

Añadir un nuevo apartado para los directorios del servidor web con permisos al grupo de Webmasters:

# Servidor Web
[webs]
 comment = Servidor Web
 path = /srv/www
 browseable = yes
 guest ok = no
 writable = yes
 admin users = operador
 valid users = +webmasters
 force user = root
 force group = webmasters
 create mask = 0774
 directory mode = 0774
 force create mode = 0774
 force directory mode = 0774

Cargar el módulo CIFS al sistema:

modprobe cifs

Iniciar el servicio de SAMBA

service smb start

Crear el archivo de contraseñas SAMBA para los usuarios, por ejemplo el operador:

smbpasswd -a operador

Desde el cliente Windows, podemos acceder al servidor vía UNC \\nombre_del_servidor_Linux, pide el usuario y contraseña (operador) y hacia dentro. Se puede recorrer la estructura de carpetas, crear nuevas carpetas y archivos:

nuvoletx-32

Las nuevas carpetas y archivos tendrán la estructura de permisos que se han definido:

nuvoletx-33

 

Llegados a este punto ya tenemos el servidor a punto para servir páginas web. ¿Instalamos WordPress, Joomla, por ejemplo? Pero será en otra entrada.

 

¿Te ha gustado el artículo? Lo puedes compartir en las redes sociales. También puedes dejar tu opinión, comentario o sugerencia. ¡Gracias!

Similar Posts by The Author:

 

Deixar un comentari

Recorda que no es contestaran preguntes personals, només d´interés comú que ens enriqueixin a tots.
La teva adreça de correu electrònic no serà publicada. Els camps obligatoris estan indicats.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.