Como instalar LAMP (CentOS 8 + Apache + MariaDB + PHP) en Digitalocean

CentOS-8-Server-Install-LAMP-Linux-Apache-MySQL

La primera vez que trabajé sobre un Droplet de Digitalocean fue un desastre, tuve que reinstalar muchas cosas a las que estaba acostumbrado a usar facilmente en servidores compartidos con Cpanel o entornos que ya tenían todos los servicios pre instalados.

Para que no tengan que sufrir -como yo-, les comparto los pasos que seguí para hacer una instalación exitosa de LAMP en un Droplet con CentOS 8.

Lo primero que se necesita, es tener acceso al servidor via SSH, por lo tanto, si ya tienes esa parte resuelta, puedes seguir los siguientes pasos desde la terminal:

/******INSTALAR APACHE******/

  • dnf update
  • dnf install httpd httpd-tools
  • systemctl start httpd
  • systemctl enable httpd
  • systemctl status httpd
  • httpd -v
  • yum install firewalld
  • systemctl enable firewalld
  • systemctl start firewalld
  • systemctl status firewalld
  • firewall-cmd –permanent –zone=public –add-service=http
  • firewall-cmd –permanent –zone=public –add-service=https
  • systemctl reload firewalld
  • chown apache:apache /var/www/html -R
  • sudo dnf install nano
  • sudo nano /etc/httpd/conf.d/servername.conf
  • Add to the file: ServerName localhost
  • sudo systemctl reload httpd
  • dnf install mariadb-server mariadb -y
  • systemctl start mariadb
  • systemctl enable mariadb
  • systemctl status mariadb
  • mysql_secure_installation
  • mysql -u root -p
  • exit;
  • dnf install php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring -y
  • systemctl start php-fpm
  • systemctl enable php-fpm
  • systemctl status php-fpm
  • systemctl restart httpd
  • setsebool -P httpd_execmem 1
  • nano /var/www/html/info.php
  • paste and save: <?php phpinfo(); ?>
  • sudo systemctl restart httpd php-fpm
  • sudo systemctl restart httpd
  • sudo mkdir -p /etc/systemd/system/httpd.service.d/
  • sudo nano /etc/systemd/system/httpd.service.d/restart.conf
  • paste and save:
    [Service]
    Restart=always
    RestartSec=5s
  • sudo systemctl daemon-reload
  • rm /var/www/html/info.php


/******PROTECT PHPMYADMIN******/


tudominio/db-admin          ***remplazar “tudominio” por el nombre de tu dominio.
User: tuusuario                      ***reemplazar “tuusuario” por tu nombre de usuario.
Password: tucontraseña     ***reemplazar “tucontraseña” por tu contraseña.


/******INSTALL PHPMYADMIN******/

Fuente: https://www.howtoforge.com/install-and-secure-phpmyadmin-on-centos-8/#comments

  • Install wget: sudo yum search wget
  • sudo yum install wget
  • wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip
  • sudo yum install unzip
  • unzip phpMyAdmin-4.9.2-all-languages.zip
  • mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin
  • cd /usr/share/phpmyadmin
  • mv config.sample.inc.php config.inc.php
  • Change the following line: $cfg[‘blowfish_secret’] = ‘your-secret-password’;
  • mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
  • 51- mkdir /usr/share/phpmyadmin/tmp
    chown -R apache:apache /usr/share/phpmyadmin
    chmod 777 /usr/share/phpmyadmin/tmp
  • nano /etc/httpd/conf.d/phpmyadmin.conf

  • Alias /phpmyadmin /usr/share/phpmyadmin
    <Directory /usr/share/phpmyadmin/>
    AddDefaultCharset UTF-8
    <IfModule mod_authz_core.c>
    # Apache 2.4
    <RequireAny>
    Require all granted
    </RequireAny>
    </IfModule>
    <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from All
    Allow from La dirección IP
    Allow from ::1
    </IfModule>
    </Directory>
    <Directory /usr/share/phpmyadmin/setup/>
    <IfModule mod_authz_core.c>
    # Apache 2.4
    <RequireAny>
    Require all granted
    </RequireAny>
    </IfModule>
    <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from All
    Allow from La dirección IP
    Allow from ::1
    </IfModule>
    </Directory>

  • systemctl restart httpd
  • systemctl status httpd
  • dnf install policycoreutils-python-utils
  • semanage fcontext -a -t httpd_sys_rw_content_t ‘/usr/share/phpmyadmin/’
  • semanage fcontext -a -t httpd_sys_rw_content_t ‘/usr/share/phpmyadmin/’
  • semanage fcontext -a -t httpd_sys_rw_content_t “/usr/share/phpmyadmin/tmp(/.*)?”
  • restorecon -Rv ‘/usr/share/phpmyadmin/’
  • firewall-cmd –permanent –add-service=http
  • firewall-cmd –reload
  • Modify php.ini /etc/php.ini
    upload_max_filesize = xM
    post_max_size = xM
  • sudo systemctl restart php-fpm


/******LET’S ENCRYPT SSL******/

Fuente: https://www.tecmint.com/secure-apache-with-lets-encrypt-ssl-certificate-on-centos-8/

  • 65- sudo dnf install mod_ssl openssl
  • sudo mv certbot-auto /usr/local/bin
  • sudo chmod 755 /usr/local/bin/certbot-auto
  • sudo nano /etc/httpd/conf.d/tudominio.com
  • pegar y guardar: /*También crear un virtual host para el puerto 80*/

    <VirtualHost *:443>
    ServerName tudominio.com
    ServerAlias www.tudominio.com
    DocumentRoot /var/www/tudominio.com/
    <Directory /var/www/tudominio.com/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    </Directory>
    ErrorLog /var/log/httpd/www.tudominio.com-error.log
    CustomLog /var/log/httpd/www.tudominio.com-access.log combined
    </VirtualHost>

  • sudo chown -R apache:apache /var/www/tudominio.com
  • sudo systemctl restart httpd
  • sudo /usr/local/bin/certbot-auto –apache

 

Es posible que hayan algunas diferencias desde la fecha en que use esta configuración y la que funcione correctamente al día de hoy, pero espero que de todas formas sea de utilidad.

Leave a Comment

Su dirección de correo no se hará público.