Cómo instalar WordPress con Nginx y Let’s Encrypt SSL en Ubuntu 22.04
WordPress es un sistema de gestión de contenidos gratuito y de código abierto que se utiliza principalmente para publicar blogs en Internet. Está diseñado para aquellos que no saben codificar. WordPress simplifica la creación y el mantenimiento de sitios web y blogs. Debido a su popularidad, más de un tercio de los sitios web actuales funcionan con WordPress. Está escrito en PHP y utiliza MariaDB y MySQL como base de datos.
En este tutorial, le mostraremos cómo instalar WordPress con Nginx y un certificado Let’s Encrypt SSL gratuito en Ubuntu 22.04.
Requisitos previos
- Un servidor con Ubuntu 22.04.
- Un nombre de dominio válido apuntado con la IP de su servidor.
- Una contraseña de root está configurada en el servidor.
Instale Nginx, MariaDB y PHP
Antes de comenzar, el servidor LEMP debe estar instalado en su servidor. Si no está instalado, puede instalarlo ejecutando el siguiente comando:
apt-get install nginx mariadb-server php php-fpm php-curl php-mysql php-gd php-mbstring php-xml php-imagick php-zip php-xmlrpc -y
Una vez instalado el servidor LEMP, verifique la versión de PHP usando el siguiente comando:
php -v
Obtendrá la versión de PHP en el siguiente resultado:
PHP 8.1.2 (cli) (built: Apr 7 2022 17:46:26) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
A continuación, edite el archivo de configuración de PHP y modifique algunas configuraciones predeterminadas:
nano /etc/php/8.1/fpm/php.ini
Cambia las siguientes líneas:
cgi.fix_pathinfo=0 upload_max_filesize = 128M post_max_size = 128M memory_limit = 512M max_execution_time = 120
Guarde y cierre el archivo cuando haya terminado.
Crear una base de datos para WordPress
WordPress utiliza una base de datos para almacenar su contenido. Por lo tanto, deberá crear una base de datos y un usuario para WordPress.
Primero, inicie sesión en el shell de MariaDB con el siguiente comando:
mysql
Una vez que haya iniciado sesión, cree una base de datos y un usuario con el siguiente comando:
MariaDB [(none)]> CREATE DATABASE wpdb; MariaDB [(none)]> CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'securepasssword';
Luego, otorga todos los privilegios a la base de datos de WordPress usando el siguiente comando:
MariaDB [(none)]> GRANT ALL ON wpdb.* TO 'wpuser'@'localhost';
A continuación, elimine los privilegios y salga de MariaDB con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> EXIT;
Una vez que haya terminado, puede continuar con el siguiente paso.
Instalar WordPress en Ubuntu 22.04
Primero, navegue al directorio raíz web de Nginx y descargue la última versión de WordPress usando el siguiente comando:
cd /var/www/html wget https://wordpress.org/latest.tar.gz
Una vez que se haya descargado WordPress, extraiga el archivo descargado con el siguiente comando:
tar -zxvf latest.tar.gz
A continuación, cambie el nombre del archivo de configuración de muestra de WordPress.
mv /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
A continuación, edite el archivo de configuración de WordPress y defina la configuración de su base de datos:
nano /var/www/html/wordpress/wp-config.php
Defina la configuración de su base de datos como se muestra a continuación:
define( 'DB_NAME', 'wpdb' ); /** Database username */ define( 'DB_USER', 'wpuser' ); /** Database password */ define( 'DB_PASSWORD', 'securepasssword' ); /** Database hostname */ define( 'DB_HOST', 'localhost' );
Por razones de seguridad, también deberá actualizar las claves de seguridad en su archivo wp-config. Primero ve aquí para generarlos. Luego, agréguelo como se muestra a continuación:
define('AUTH_KEY', 'Y$I,-gafVeR>Z-8qy&jQ62L}{R)e|lK/#RBh.Y#f+p-P*.8,,hP-iX[q3*tVP-fu'); define('SECURE_AUTH_KEY', 'D)k6o`D G%<()-zXP5{T{v2)Zgo-c+8T-Un=+R3%n/X2=MLDb5$O]UHA%gK| .WR'); define('LOGGED_IN_KEY', 'eL|5#`ul|;MrKm#q$KVl/ky(i}Jc;xrH(Eb|Hwzb/?-.RLSUSX2X[4HD:U:UOP:Y'); define('NONCE_KEY', ']azQ+9f^#~l*r>uPMH5H>ck:?az4o[)*Txo:+MGjE5f&0kag3O9m85g3~VJ6YVWE'); define('AUTH_SALT', 'fAM5&`m4X+{+wSsF.!}-/[email protected]~~u%>}la1bCC,@#+R*t]uYf?[hph/>!Bw>v#oaQ'); define('SECURE_AUTH_SALT', '}|Z&dj_tFV2T$7y(O#O|bwwQ$sH6t!-zdE.MlOHLZ>4WDqG:_Qzn#Allm-UO1#7P'); define('LOGGED_IN_SALT', 'b9Uf~**[email protected]{KWknsAL^9D7Ix3CO.+PpFF~btd)-pG~pXPQ,[c&WRE-NgLG9~)|'); define('NONCE_SALT', '}mTUi&.#i+YJT-TSrbIwqWO<]ut3K%CS~7g.} *NztVlgZDr`?>wxJ+_VW-D_zif');
Guarde y cierre el archivo cuando haya terminado. A continuación, establezca el permiso y la propiedad adecuados para el directorio de WordPress:
chown -R www-data:www-data /var/www/html/wordpress chmod -R 755 /var/www/html/wordpress
Crear un host virtual Nginx para WordPress
A continuación, deberá crear un archivo de configuración de host virtual Nginx para servir WordPress a través de Internet.
nano /etc/nginx/conf.d/wordpress.conf
Agregue la siguiente configuración:
server { listen 80; root /var/www/html/wordpress; index index.php index.html index.htm; server_name wordpress.example.com; client_max_body_size 500M; location / { try_files $uri $uri/ /index.php?$args; } location = /favicon.ico { log_not_found off; access_log off; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Guarde y cierre el archivo, luego verifique la configuración de Nginx usando el siguiente comando:
nginx -t
Obtendrá el siguiente resultado: Publicidad
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
A continuación, reinicie los servicios Nginx y PHP-FPM para aplicar los cambios.
systemctl restart nginx systemctl restart php8.1-fpm
También puede verificar el estado de Nginx usando el siguiente comando:
systemctl status nginx
Obtendrá el siguiente resultado:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-05-05 11:36:28 UTC; 10s ago Docs: man:nginx(8) Process: 16880 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 16882 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 16883 (nginx) Tasks: 3 (limit: 4630) Memory: 3.4M CPU: 49ms CGroup: /system.slice/nginx.service ??16883 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" ??16884 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ??16885 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" May 05 11:36:28 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server... May 05 11:36:28 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.
Instalación web completa de WordPress
Ahora, abra su navegador web y acceda al asistente de instalación de WordPress usando la URL http://wordpress.ejemplo.com. Será redirigido a la siguiente página:
Seleccione su idioma y haga clic en el Continuar botón. Debería ver la página de configuración del sitio de WordPress:
Proporcione el nombre de su sitio web, el nombre de usuario del administrador, la contraseña, el correo electrónico y haga clic en el Instalar WordPress botón. Una vez instalado WordPress, debería ver la siguiente página:
Haga clic en el Iniciar sesión botón. Debería ver la página de inicio de sesión de WordPress:
Proporcione su nombre de usuario y contraseña de administrador y haga clic en el Acceso botón. Debería ver el panel de control de WordPress en la siguiente página:
Habilitar HTTPS en WordPress
Para habilitar HTTPS en su sitio, deberá instalar el cliente Certbot Let’s Encrypt en su sistema. Puede instalarlo ejecutando el siguiente comando:
apt-get install python3-certbot-nginx -y
Una vez que el cliente de Certbot esté instalado, ejecute el siguiente comando para habilitar HTTPS en su sitio web:
certbot --nginx -d wordpress.example.com
Se le pedirá que proporcione una dirección de correo electrónico válida y acepte el término del servicio como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for wordpress.example.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/wordpress.conf
A continuación, elija si desea redirigir o no el tráfico HTTP a HTTPS como se muestra a continuación:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Escriba 2 y presione Entrar para finalizar la instalación. Debería ver el siguiente resultado:
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/wordpress.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://wordpress.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=wordpress.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/wordpress.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/wordpress.example.com/privkey.pem Your cert will expire on 2023-02-08. 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" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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 - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
Conclusión
¡Felicidades! Ha instalado correctamente WordPress con Nginx y Let’s Encrypt SSL en Ubuntu 22.04. Ahora puede instalar sus temas y complementos preferidos y comenzar a crear su propio sitio web.