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.
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).
Se inicia el entorno gráfico y con él el ratón. Hacer clic en el botón Next.
Indicar el idioma a utilizar para el proceso de instalación. Para simplificarlo, seleccionar Spanish y hacer clic en Next.
El entorno cambia a Español. Hay que seleccionar el idioma del teclado, por defecto marcado Español. Hacer clic en Siguiente.
Configuración del almacenamiento, seleccionar Dispositivos de almacenamiento básicos y hacer clic en Siguiente.
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.
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.
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.
Asegurar que se inicia la interfaz al arrancar el sistema operativo. Marcar Conectar automáticamente.
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.
Configuración horaria. Seleccionar el que corresponda y a mi personalmente, desmarcar El reloj del sistema utiliza UTC. Hacer clic en Siguiente.
Contraseña para el administrador del sistema: root. Introducirla dos veces para confirmar y hacer clic en Siguiente.
Configuración de las particiones. Seleccionar Usar todo el espacio y Revisar y modificar el diseño de las particiones. Hacer clic en Siguiente.
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.
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.
Configuración del arranque del sistema operativo, dejar por defecto. Hacer clic en Siguiente.
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.
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.
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.
Al arrancar desde el disco duro aparece la barra de progreso de CentOS, hasta completarse y dejarnos con el login.
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.
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.
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.
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:
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:
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>
Probar también que el PHP funcione correctamente con una página de ejemplo: index.php
<?php phpinfo(); ?>
¡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:
Las nuevas carpetas y archivos tendrán la estructura de permisos que se han definido:
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:
- Microsoft SQL Server con SMB3
- Microsoft SQL Server amb SMB3
- Containers en Linux
- Containers amb Linux
- Migrar el servidor de archivos a Windows Server 2019
- Migrar el servidor de fitxers a Windows Server 2019
- Puerta enlace a Azure en el Windows Admin Center
- Porta enllaç a Azure en el Windows Admin Center
- Hola mundo! WordPress 5 y Gutenberg
- Hola món! WordPress 5 i Gutenberg