Saltar a contenido

Automatizar el despliegue de WordPress + LEMP

A continuación veremos un script en bash para desplegar un servidor LEMP con WordPress sobre Ubuntu 20.04, puedes personalizar estos script según tus necesidades.

#! bin/bash

# Actualización de repositorios
apt update && apt -y upgrade

# Instalación de complementos
apt -y install software-properties-common unzip wget

# Instalación de la base de datos MariDB
apt -y install mariadb-server mariadb-client

MariDB Setting
mysql -u root -e "SET PASSWORD FOR root@localhost = PASSWORD('mariadb2019')";
mysql -u root -pmariadb2019* -e "create database WpDemo2019;"
mysql -u root -pmariadb2019* WpDemo2019 -e "create user 'WpDbUser'@'localhost' identified by 'PassWpUser2019*';"
mysql -u root -pmariadb2019* WpDemo2019 -e "grant all privileges on WpDemo2019.* to 'WpDbUser'@'localhost';"

# Reiniciamos el servicio de Mysql
systemctl stop mysql.service
systemctl start mysql.service

# Instalación del servidor web Nginx
apt -y install nginx 

# Reinicamos el servicio de Nginx
systemctl stop nginx.service
systemctl enable nginx.service
systemctl start nginx.service

# Instalación de Php 
apt -y install php php-fpm php-common php-cli php-curl php-gd php-json php-mysql php-zip 

# Eliminamos el servidor Apache que instala php por defecto
apt -y purge apache2*
apt -y autoremove apache2

# Reiniciamos los servicios de Php-fpm
systemctl stop php-fpm.service
systemctl enable php-fpm.service
systemctl start php-fpm.service

# Eliminamos el directorio html por defecto
cd /var/www/
rm -R html

# Descargar y descomprimir la ultima versión de WordPress
wget https://es.wordpress.org/latest-es_ES.zip
unzip latest-es_ES.zip

# Creamos un directorio llamado html
mv wordpress html
rm -R latest-es_ES.zip

# Asignamos permisos recursivos al directorio html
chown -R www-data:www-data html/

Borramos la configuración por defecto del archivo /etc/nginx/sites-enabled/default de Nginx y pegamos la siguiente configuración.

server {
    server_name midominio.es;

    root /var/www/html;
    index index.php;

    # log files
    access_log /var/www/html/access.log;
    error_log /var/www/html/error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

    # Compresion Gzip
    gzip on;
    gzip_disable "msie6";

    gzip_comp_level 6;
    gzip_min_length 1100;
    gzip_proxied any;
    gzip_types
       text/plain
       text/css
       text/js
       text/xml
       text/javascript
       application/javascript
       application/x-javascript
       application/json
       application/xml
       application/xml+rss;
}

Vamos a hacer una copia del archivo wp-config-sample.php

cd /var/www/html
cp wp-config-sample.php wp-config.php

Ahora editamos el archivo de configuración de WordPress wp-config.php, cambiando las siguientes lineas

nano wp-config.php
define( 'DB_NAME', 'WpDemo2019' );
define( 'DB_USER', 'WpDbUser' );
define( 'DB_PASSWORD', 'PassWpUser2019*' );

Nota

Podemos añadir en el archivo wp-config.php estas lineas con el nombre de nuestro dominio o subdominio

define('WP_HOME','http://midominio.es');
define('WP_SITEURL','http://midominio.es');