Hace un tiempo atrás hice un guía de instalación de un servidor LAMP (Linux, Apache, MariaDB y PHP) la cual me quedó bastante decente, pero el tema como lo presenté no me quedó tan bueno. Ahora lo que les traigo es algo muy similar pero en CentOS. Como sabrán CentOS es un clon de RHEL (RedHat Enterpise Linux) es cual tiene software de gran calidad y muy potente, además trae un gran cantidad de cambios y mejores en relación de su versión anterior CentOS 6.5, Algunas de ellas son: Kernel Linux v.3.10 MariaDB en reemplazo de MySQL XFS como sistema de archivos predeterminado Systemd Apache 2.4 Y muchas otras mejoras. Indice de contenido - Instalación del sistema operativo (CentOS 7) - Configuración inicial - Instalación y configuración de Apache (servidor web) - Instalación y configuración de MariaDB (base de datos) - Instalación de PHP5 - Instalación y configuración de phpMyAdmin - Instalación y configuración de webmin Instalación del sistema operativo CentOS 7 Lo primero que debemos hacer es descargar la iso de CentOS (solo está disponible X86_64) desde ftp://ftp.inf.utfsm.cl/pub/Linux/CentOS/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso Nota: Usamos un servidor réplica de acá de Chile por que siempre es mejor el ancho de banda nacional que el internacional. Teniendo ya descargada la iso la grabamos a un DVD y hacemos que nuestra máquina destinada a servir inicie desde ese DVD. Lo primero que hay que hacer es seleccionar nuestro idioma y dar clic en siguiente (ver imagen). Spoiler ¡Debes iniciar sesión para ver el Spoiler! Llegamos a una pantalla que se llama "Resumen de la instalación". No le daré demasiada importancia a los apartados ya que son muy similares a todas las otras distros, solo iré a fondo con selección de software. - Destino de la instalación = todo lo relacionado con disco duro y particiones. - Fecha & Hora = debería estar en zona horaria de Chile continental, si están en otro lugar pueden reconfigurar. - Teclado = Acá deberiamos tener la distribución Español Latinoamérica. - Red y nombre de Host = Deberia aparecer como no conectado, hacemos clic y hacemos clic en activar. - Selección de software = Aqui podemos seleccionar entre diferentes tipos de servidor, pero ahora solo seleccionaremos "instalación minima" y "herramientas de Desarrollo". No instalaremos nada mas, ya que todo el software lo instalaremos mas adelante uno por uno y lo iremos configurando. Nota muy importante: En el apartado de red y nombre de host está la IP que nos asignó nuestro servidor DHCP, es importante anotarla por que a futuro nos servirá de mucho. Entonces damos clic en iniciar instalación (ver imagen) Spoiler ¡Debes iniciar sesión para ver el Spoiler! Si todo ha ido bien, deberiamos llegar a una pantalla que se llama "Ajustes de usuario" Donde configuraremos solo dos cosas: - Contraseña de usuario raiz (root) - Crearemos un usario estándar del sistema y le asignaremos una contraseña. (ver imagen) Spoiler ¡Debes iniciar sesión para ver el Spoiler! Habiendo ingresado toda la información damos clic en finalizar y luego en reinicar. Hasta aqui llega la parte gráfica de todo ésto, ya que toda la instalción y configuración de software la haremos desde la terminal. Despué del reinico del nustro servidor solo tendremos una pantalla negra que nos pide un nombre de usuario y contraseña. Nota: Desde este punto ya no incluiré muchas imágenes solo cuando sea necesario ya que todo será por terminal y solo introduciremos comandos. Como usuario ponemos "root" Como contraseña la contraseña de root que elegimos cuando estabamos instalando. Configuración inicial Lo primero que haremos será verificar si hay actualizaciones disponibles para nuestro sistema. - (comando) yum -y update Con esto yum buscará todas las actualizaciones disponibles en los repositorios que tenemos configurados y las instalará de manera automática. En segundo lugar instalaremos el editor Nano y Wget. - (comando) yum -y install nano - (comando) yum -y install wget Tercero, deshabilitaremos SELinux. 1.- Con Nano editamos el archivos config que se encuentra en /etc/selinux - (comando) nano /etc/selinux/config 2.- Dentro del archivo buscamos la siguiente linea: SELINUX=enforcing Y la reemplazamos por esta: SELINUX=permissive Con CTRL+X cerramos y nos preguntará si deseamos guardar presionamos S y damos enter, con esto ya quedan los cambios guardados. Nota: Siempre que hagamos cambios con nano para guardarlos hacemos un CTRL+X y aceptamos con S. Desde ahora daré por asumido que siempre se hará esto. Instalación y configuración de Apache (servidor web) Como dije antes estaremos a la vanguardia por lo tanto Apache se instalará en su versión 2.4 (Debian wheezy trae Apache 2.2.22) Para instalar ejecutamos el siguiente comando: - (comando) yum -y install httpd Entonces tenemos nuestro Apache 2.4 instalado pero el servicio aun no se está ejecutando, para inciarlo ejecutamos el siguiente comando: - (comando)systemctl start httpd.service Ok, tenemos Apache instalado y el sevicio corriendo pero si reiniciamos el sistema el servicio no se auto inicará, para lograr un auto inicio ejecutamos el siguiente comando: - (comando) systemctl enable httpd.service Ahora toca abrir los puertos en nuestro firewall para que podamos tener acceso a nuestro servidor web, son dos puertos los que tenemos que abrir: 80 (http) y 443 (https), esto lo hacemos con los siguientes comandos: - (comando) firewall-cmd --permanent --zone=public --add-service=http - (comando) firewall-cmd --permanent --zone=public --add-service=https - (comando) firewall-cmd --reload Explicaré un poco que acabamos de hacer en nustro firewall: En CentOS 7 administramos el firewall por terminal con firewall-cmd, --permanent es para que la regla sea permanente, --zone es la zona en la cual habilitaremos la regla y con --add-service agregamos el servicio, tambien podemos agregar directamente el puerto con --add-port=80/tcp. Ahora toca ver si efectivamente está funcionando Apache, con la IP de nuestro servidor conectamos desde nuestro navegador, en mi caso la Ip del servidor es 192.168.1.43 Si todo va bien en nuetsro navegador deberiamos ver algo como esto (ver imagen) Spoiler ¡Debes iniciar sesión para ver el Spoiler! Nota: Los archivos html o php públicos se encuentran en /var/www/html por si queremos publicar algo tenemos que ponerlos ahí. Instalación y configuración de MariaDB (base de datos) MariaDB es un fork de MySQL el cual fue hecho por ex miembros del equipo MySQL y son comtabibles entre si. unas de las ventajas principales de MariaDB son: Motor de almacenamiento nuevo Aria en reemplazo de MyISAM (que reemplaza con ventajas) y otro motor llamado XtraDB en reemplazo de InnoDB, en los test con grandes cargas de trabajo MariaDB ha mostrado un mayor desempeño que MySQL. Instalamos MariaDB con el siguiente comando: - (comando) yum -y install mariadb-server mariadb Como pasó con Apache, MariaDB se instala pero el servico no se inicia y no queda con inicio automático, para solucionar esto ejecutamos: -(comando) systemctl start mariadb.service -(comando) systemctl enable mariadb.service Ya instalada MariaDB solos nos queda configurar el password para root. - (comando) mysql_secure_installation Con este comando nos preguntará una seriae de cosas que explico mas abajo (hacer clic en ver) Spoiler ¡Debes iniciar sesión para ver el Spoiler! Instalación de PHP5 Para instalar PHP5 ejecutamos lo siguiente: -(comando) yum -y install php Con eso dejamos instalado PHP5 en nuestro sistema, ahora solo queda hacer la prueba de que esté funcionando. Con Nano creamos en /var/www/html un archivo llamado info.php: -(comando) nano /var/www/html/info.php El contenido para este archivo será: <?php phpinfo(); ?> Ahora reiniciamos el servicio httpd con: - (comando) systemctl restart httpd.service Y por ultimo hacemos la prueba con nuestro navegador con la url http://ipdenuestroservidor/info.php Debería aparecer un página similar a la que se muestra en la siguiente imágen (ver imagen) Spoiler ¡Debes iniciar sesión para ver el Spoiler! Hasta ahora tenemos instalado y funcionando Apache, MariaDB y PHP5. Entonces seguimos con la instalación de phpMyAdmin Instalación y configuración de phpMyAdmin Cuando instalamos phpMyAdmin desde los repos que trae configurado CentOS nos instala una versión un tanto antigua, para tener una algo mas nueva debemos instalar un nuevo repositorio llamado EPEL (Extra Packages for Enterprise Linux) y luego instalar el paquete. - (comando) rpm -ivh http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm Con esto ya podemos instalar phpMyAdmin, cuando ejecutamos el comando mostrará una gran lista de paquetes que se van a instalar, estas son las dependecias necesarias para ejecutar correctamente phpMyAdmin: - (comando) yum -y install phpMyAdmin Ahora queda configurar el archivo que está en /etc/httpd/conf.d/ paraque podamos acceder a /phpMyAdmin desde nuestro navegador. - (comando) nano /etc/httpd/conf.d/phpMyAdmin.conf Dentro del archivos buscamos la primera linea que dice:Require ip 127.0.01 Y la reemplazamos por: Require all granted Ahora si accedemos desde nuestro navegador a la url http://laipdenuestroservidor/phpMyAdmin no deberiamos tener problemas para ingresar. Instalar Webmin Ya solo nos queda instalar webmin ara terminar con está mini guía de LAMP en CentOS 7. Webmin es una herramienta que se usa para administrar un sistema vía web, si no estamos muy acostumbrados a trabajar con la terminal de seguro administrar nuestro servidor con esta herramienta nos salvará de varios dolores de cabeza. Lo primero que debemos hacer es instalar el repo de webmin: - (comando) nano /etc/yum.repos.d/webmin.repo Dentro de ese archivo que creamos con Nano ponemos la siguiente: [Webmin] name=Wemin Distribution Neutral mirrorlist=http://download.webmin.com/download/yum/mirrorlist enabled=1 Despues descargamos la clave GPG del repo: wget http://www.webmin.com/jcameron-key.asc Y la importamos: rpm --import jcameron-key.asc Actualizamos los repos: yum check updates Instalamos webmin: yum -y install webmin Abrimos el puerto en nuestro Firewall por que cual conectaremos a Webmin (puerto 10000): firewall-cmd --permanent --zone=public --add-port=10000/tcp Recargamos la configuración del firewall para qe los cambios tengan efecto. firewall-cmd --reload Si todo ha ido bien, podemos tener acceso a nuestro servidor por Webmin, probamos a la url: http://laipdanuestroservidor:10000 Ingresamos con los mismos datos que ingresamos a la terminal como root. Eso seria todo, si quieren saber algo mas pueden preguntar, si tienen dudas lo mismo. Espero haber sido claro en todo lo que expliqué. Esta guía la hice exclusivamente para Portalnet. Hay algunas otras similares en internet pero no muchas están en Español y no cubren todos los temas que yo toqué aquí. Un gran apoyo lo conseguí de las páginas oficiales y documentación del software (gran parte en Inglés ya que aun hay poca documentación exclusiva de CentOS 7 en Español) y del un How To en inglés que se encuentra en el sitio: Spoiler ¡Debes iniciar sesión para ver el Spoiler! Ojalá les sea de ayuda. Sitios de interés: www.centos.org www.apache.org www.php.net www.webmin.com www.phpmyadmin.net Atte JefeRex
se agradece tremendo aportazo, apenas tenga tiempo retomare mi batalla con centos ( ya que la que he tenido eternamente con debian aun no logro ganarla) para quienes entran al tema y se asustan con los términos Spoiler ¡Debes iniciar sesión para ver el Spoiler!
A muchos como que les asusta "LAMP" y "CentOS" pero no es nada mas que una serie de programas con una configuración especial y CentOS es una dristro Linux. Primero (janod21)al parecer que se dio el pajeo de leer todo lo que redacté y se dio cuenta que es una gran guía, a tal vez no tan pulida pero se puede usar como base para algo mas grande.
************instalar servicio de DNS******************** instalar los paquetes necesarios yum -y install bind bind-chroot bind-utils Actualizar el archivo de cache con los servidores DNS raíz. wget -N http://www.internic.net/domain/named.root \ -O /var/named/named.ca Asignar el archivo a root y al grupo named. chown root:named /var/named/named.ca Establecer permisos de lectura y escritura para usuario, solo lectura para grupo y nada para otros (rw-r-----). chmod 640 /var/named/named.ca aplicar selinux x seguridad setsebool -P named_write_master_zones 1 iniciar el servicio systemctl start named.service configurarlo al inicio systemctl enable named.service reiniciar el servicio de red systemctl restart network.service configurar el archivo named.conf vi /etc/named.conf options { listen-on port 53 { 127.0.0.1; 192.168.x.x; }; #poner nuestra ip que servira de dns (server centos principal) listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; #poner any zone "example.com" IN { #nombre de dominio type master; #poner master para el server file "example.zonadirecta.com"; #nombre archivo de zona directa }; zone "1.168.192.in-addr.arpa"{ #nombre para zona inversa address va de atras hacia adelante (192.168.1.XX = 1.168.192) type master; #poner master para el server file "example.zonainversa.com"; #nombre archivo zona inversa }; configurar zona directa vi /var/named/nombrearchivozonadirecta (eje : snakecentos.zonadirecta.com) $ORIGIN example.com. $TTL 3D @ SOA dns.example.com. root.example.com. (12 4h 1h 1w 1h) #nombre de dominio "example.com" luego el nombre del administrador @ IN NS dns.example.com. #nombre del dns dns IN A 192.168.X.X #ip de la zona directa o sea el dns (server host) www IN A 192.168.X.X #referencia al dominio www. ip que contiene el index configurar zona inversa vi /var/named/nombrezonainversa $ORIGIN 1.168.192.in-addr.arpa. $TTL 3D @ SOA dns.example.com root.example.com. (12 4h 1h 1w 1h) #nombre de dns + nombre administrador del sitio @ IN NS dns.example.zonainversa. X IN PTR dns.example.com. #la X corresponde al ultimo digito de la ip del server dns 192.168.1."X" X IN PTR www.example.com. #la X es el ultimo de la ip del server que contiene el index 192.168.1."X" puede que tengamos problemas por usar ipv6 para solucionarlos editamos el archivo named.conf vi /etc/named.conf #listen-on-v6 port 53 { ::1; }; y comentamos esa linea. luego editamos el archivo named vi /etc/sysconfig/named y agregamos : OPTIONS=-4 reiniciamos el servicio systemctl restart named.service luego comprobamos el estado del servicio systemctl status named.service luego abrimos el puerto 53 firewall-cmd --permanent --zone=public --add-port=53/udp reiniciamos el servicio systemctl restart named configurar el dns en ambos servidores tanto el principal del servicio como el que contiene el index vi /etc/resolv.conf nameserver 192.168.x.x *************configurar dhcpd****************** instalar yum -y install dhcp configurar el archivo vi /etc/dhcp/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { #subred + mascara de red range 192.168.1.1 192.168.1.254; #rango de ip donde comienza y termina option domain-name-servers 192.168.1.X; #ip del servidor dhcp (host centos) option domain-name "testcentos.com"; #nombre de dominio (host centos) option routers 192.168.56.1; #puerta de enlace gateway option broadcast-address 192.168.1.255; #broadcast default-lease-time 600; max-lease-time 7200; } reiniciamos el servicio systemctl restart dhcpd.service y lo añadimos al inicio systemctl enable dhcpd.service (en caso de problemas abrir los puertos 67 y 68 udp) Testear en windows nos vamos a cmd liberamos la ip ipconfig/release luego la renovamos ipconfig/renew ************instalar el modulo ssl********** sudo yum install mod_ssl crear directorio para guardar las llaves mkdir /etc/httpd/ssl crear el certificado openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt a continuacion completar datos Country name cl. pe. bo . ar ,etc state, province, etc El punto importante es el FQDN <---- Nombre de Dominio o su IP (example.com) configurar el archivo ssl.conf vi /etc/httpd/conf.d/ssl.conf DocumentRoot "/var/www/" <----- ruta del index si esta en una carpeta cambiar /var/www/micarpeta/ ServerName www.midominio.com:443 <----establecer el nombre de dominio SSLCertificateFile /etc/httpd/ssl/apache.crt <----establecer ruta del .crt SSLCertificateKeyFile /etc/httpd/ssl/apache.key <----establecer ruta del .key añadir regla al firewall para el protocolo https port 443 firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload luego reiniciar el servicio de apache systemctl restart httpd.service Saludos!
Hola kyo2009, te faltó anotar que hay que abrir el puerto 443 para las conexiones seguras, o no es necesario hacerlo?
Exacto estimado gracias por la correccion me di cuenta al ver el "www.midominio.com:443" firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload