Guía instalación LAMP en CentOS 7

Tema en 'Manuales' iniciado por JefeRex, 22 Jul 2014.

  1. JefeRex

    JefeRex Usuario Casual nvl. 2
    7/41

    Registrado:
    3 Ago 2012
    Mensajes:
    539
    Me Gusta recibidos:
    36
    [​IMG]
    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).
    [​IMG]

    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)

    [​IMG]

    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)

    [​IMG]


    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)

    [​IMG]


    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)

    [email protected] ~]# mysql_secure_installation
    /usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

    In order to log into MariaDB to secure it, we'll need the current
    password for the root user. If you've just installed MariaDB, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.

    Enter current password for root (enter for none): <--Presionar ENTER
    OK, successfully used password, moving on...

    Setting the root password ensures that nobody can log into the MariaDB
    root user without the proper authorisation.

    Set root password? [Y/n] <--Presionar Y
    New password: <--Contraseña para mariadb
    Re-enter new password: <--Contraseña para mariadb
    Password updated successfully!
    Reloading privilege tables..
    ... Success!


    By default, a MariaDB installation has an anonymous user, allowing anyone
    to log into MariaDB without having to have a user account created for
    them. This is intended only for testing, and to make the installation
    go a bit smoother. You should remove them before moving into a
    production environment.

    Remove anonymous users? [Y/n] <--Presionar ENTER
    ... Success!

    Normally, root should only be allowed to connect from 'localhost'. This
    ensures that someone cannot guess at the root password from the network.

    Disallow root login remotely? [Y/n] <--Presionar ENTER
    ... Success!

    By default, MariaDB comes with a database named 'test' that anyone can
    access. This is also intended only for testing, and should be removed
    before moving into a production environment.

    Remove test database and access to it? [Y/n] <--Presionar ENTER
    - Dropping test database...
    ... Success!
    - Removing privileges on test database...
    ... Success!

    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.

    Reload privilege tables now? [Y/n] <--Presionar ENTER
    ... Success!

    Cleaning up...

    All done! If you've completed all of the above steps, your MariaDB
    installation should now be secure.

    Thanks for using MariaDB!

    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)

    [​IMG]

    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:


    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

     
  2. janod21

    janod21 Usuario Habitual nvl.3 ★
    132/163

    Registrado:
    9 Ago 2007
    Mensajes:
    7.176
    Me Gusta recibidos:
    293
    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

    LAMP es el acrónimo usado para describir un sistema de infraestructura de internet que usa las siguientes herramientas:


    • Linux, el sistema operativo;
    • Apache, el servidor web;
    • MySQL/MariaDB, el gestor de bases de datos;
    • Perl, PHP, o Python, los lenguajes de programación.
    La combinación de estas tecnologías es usada principalmente para definir la infraestructura de un servidor web.
     
    #2 janod21, 5 Oct 2014
    Última edición: 5 Oct 2014
  3. JefeRex

    JefeRex Usuario Casual nvl. 2
    27/41

    Registrado:
    3 Ago 2012
    Mensajes:
    539
    Me Gusta recibidos:
    36
    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.
     
  4. kyo2009

    kyo2009 Usuario Nuevo nvl. 1
    7/41

    Registrado:
    1 Dic 2010
    Mensajes:
    36
    Me Gusta recibidos:
    2
    ************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!
     
    #4 kyo2009, 23 Mar 2015
    Última edición: 24 Mar 2015
  5. JefeRex

    JefeRex Usuario Casual nvl. 2
    27/41

    Registrado:
    3 Ago 2012
    Mensajes:
    539
    Me Gusta recibidos:
    36
    Hola kyo2009, te faltó anotar que hay que abrir el puerto 443 para las conexiones seguras, o no es necesario hacerlo?
     
  6. kyo2009

    kyo2009 Usuario Nuevo nvl. 1
    7/41

    Registrado:
    1 Dic 2010
    Mensajes:
    36
    Me Gusta recibidos:
    2
    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