WordPress es el sistema de administración de contenido gratuito, de código abierto y más utilizado en el mundo. Es una plataforma de blogs muy potente que se puede utilizar para alojar blogs, sitios web de carteras y plataformas de comercio electrónico. WordPress utiliza Apache/Nginx como servidor web, MariaDB/MySQL como base de datos y procesamiento PHP. WordPress proporciona una gran cantidad de temas y complementos que se pueden usar para personalizar su funcionalidad.
En este tutorial, explicaremos cómo instalar WordPress con Nginx en el servidor CentOS 8 y luego protegeremos el servidor mediante el uso de un certificado SSL Let's Encrypt gratuito.
Requisitos
- Un servidor que ejecuta CentOS 8.
- Se ha configurado una contraseña raíz en su servidor.
- Un nombre de dominio válido apunta a la dirección IP de su servidor.
Cómo empezar
De forma predeterminada, SELinux está habilitado en el servidor CentOS 8. Por lo tanto, deberá deshabilitarlo primero.
Puede hacer esto editando el archivo /etc/selinux/config:
nano /etc/selinux/config
Realice los siguientes cambios:
SELINUX=disabled
Guarde y cierre el archivo. Luego, reinicie su servidor para aplicar los cambios.
Instalar servidor LEMP
Antes de comenzar, deberá instalar Nginx, MariaDB, PHP y otros paquetes necesarios en su servidor. Puede instalarlos todos ejecutando el siguiente comando:
yum install nginx php php-cli php-curl php-zip php-mbstring php-mysqlnd php-fpm curl unzip mariadb-server -y
Una vez que todos los paquetes estén instalados, inicie el servicio Nginx, PHP-FPM, MariaDB y habilítelos para que se inicien después de reiniciar el sistema:
systemctl start nginx
systemctl enable nginx
systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm
También puede verificar el estado del servicio PHP-FPM con el siguiente comando:
systemctl status php-fpm
Deberías obtener el siguiente resultado:
? php-fpm.service - The PHP FastCGI Process Manager Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-10-17 05:39:11 EDT; 4min 40s ago Main PID: 1475 (php-fpm) Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 6 (limit: 5060) Memory: 28.5M CGroup: /system.slice/php-fpm.service ??1475 php-fpm: master process (/etc/php-fpm.conf) ??1478 php-fpm: pool www ??1479 php-fpm: pool www ??1480 php-fpm: pool www ??1481 php-fpm: pool www ??1482 php-fpm: pool www Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager... Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.
Una vez que haya terminado, puede continuar con el siguiente paso.
Configurar base de datos de WordPress
De forma predeterminada, el servidor MariaDB no está protegido. Por lo tanto, deberá asegurarlo primero. Puede asegurarlo con el siguiente comando:
mysql_secure_installation
Responda todas las preguntas como se muestra a continuación:
Enter current password for root (enter for none): Set root password? [Y/n] n Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Una vez asegurado, debería obtener el siguiente resultado:
Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
A continuación, inicie sesión en el shell de MariaDB con el siguiente comando:
mysql -u root -p
Proporcione su contraseña raíz cuando se le solicite, luego cree una base de datos y un usuario para WordPress con los siguientes comandos:
MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on wpdb.* to 'wpuser'@'localhost' identified by 'password';
A continuación, elimine los privilegios y salga del shell de MariaDB con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Una vez que su base de datos esté configurada, puede continuar con el siguiente paso.
Descargar WordPress
Puede descargar la última versión de WordPress con el siguiente comando:
cd /var/www/html
wget https://wordpress.org/latest.tar.gz
Una vez descargado, extraiga el archivo descargado con el siguiente comando:
tar -xvzf latest.tar.gz
A continuación, cambie la propiedad del directorio de wordpress a nginx:
chown -R nginx: /var/www/html/wordpress/
A continuación, cambie el directorio a wordpress y cambie el nombre del archivo de configuración predeterminado de wordpress:
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php
A continuación, edite el archivo wp-config.php en su editor de texto favorito:
nano wp-config.php
Defina la información de su base de datos como se muestra a continuación:
/** The name of the database for WordPress */ define( 'DB_NAME', 'wpdb' ); /** MySQL database username */ define( 'DB_USER', 'wpuser' ); /** MySQL database password */ define( 'DB_PASSWORD', 'password' ); /** MySQL hostname */ define( 'DB_HOST', 'localhost' );
Guarde y cierre el archivo cuando haya terminado.
Configurar Nginx para WordPress
A continuación, deberá crear un archivo de configuración de host virtual Nginx para servir a WordPress. puedes crearlo con el siguiente comando:
nano /etc/nginx/conf.d/wordpress.conf
Agregue las siguientes líneas:
server { listen 80; server_name example.com; root /var/www/html/wordpress; index index.php; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires max; log_not_found off; } }
Guarde y cierre el archivo. Luego, verifique el nginx para ver si hay algún error de sintaxis con el siguiente comando:
nginx -t
Deberías obtener el siguiente resultado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Finalmente, reinicie el servicio Nginx para aplicar los cambios de configuración:
systemctl restart nginx
Acceder al Panel de WordPress
WordPress está instalado y configurado, ahora es el momento de acceder a la interfaz web.
Abra su navegador web y escriba la URL http://example.com . Será redirigido a la siguiente página:
Proporcione toda la información requerida, como el nombre del sitio, el nombre de usuario del administrador, la contraseña, el correo electrónico del administrador y haga clic en Instalar WordPress. botón. Una vez finalizada la instalación. Debería ver la siguiente página:
Haga clic en iniciar sesión botón. Será redirigido a la página de inicio de sesión de WordPress:
Proporcione su nombre de usuario y contraseña de administrador y haga clic en Iniciar sesión botón. Debería ver el panel de control de WordPress en la siguiente página:
Asegurar WordPress con Let's Encrypt
Para proteger su sitio de WordPress con SSL gratuito de Let's Encrypt, deberá instalar el cliente Certbot Let's Encrypt en su sistema. De forma predeterminada, Certbot no está disponible en el repositorio predeterminado de CentOS 8. Por lo tanto, deberá descargarlo del sitio web oficial de Certbot.
Puede descargar e instalar Certbot con los siguientes comandos:
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
Ahora, ejecute el siguiente comando para obtener e instalar un certificado SSL para su sitio web de WordPress.
certbot-auto --apache -d example.com
Se le pedirá que proporcione una dirección de correo electrónico y que acepte los términos del servicio. También deberá elegir si redirigir o no el tráfico HTTP a HTTPS. Seleccione la opción adecuada y presione Enter. Una vez que la instalación haya finalizado con éxito, debería obtener el siguiente resultado:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2019-08-14. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Configurar la renovación automática de Let's Encrypt
El certificado Let's Encrypt es válido por 90 días. Por lo que se recomienda renovar el certificado antes de que caduque. Puede configurar el trabajo Cron para renovar el certificado automáticamente.
Para hacerlo, crea el crontab con el siguiente comando:
crontab -e
Agregue la siguiente línea:
0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew
Guarde y cierre el archivo cuando haya terminado.
Conclusión
En el tutorial anterior, aprendimos cómo instalar y configurar WordPress con Nginx en el servidor CentOS. También hemos aprendido cómo proteger el sitio de WordPress con SSL gratuito de Let's Encrypt. Espero que ahora pueda alojar fácilmente su propio sitio web de WordPress.