Lo primero que tenemos que hacer cuando vamos a crear un nuevo blog de WordPress con NGINX y PHP-FPM, es instalar WordPress. Yo voy a crear una nueva página WEB en Linux CentOS 7.
Instalación de PHP y MariaDB en Linux
Como ya sabrán los lectores de este blog, utilizo Linux CentOs, así que lo que tenemos que hacer antes de instalar WordPress, es instalar PHP y MariaDB o MySQL.
Ejecutaremos el comando yum install PHP mariadb.
Los paquetes que tengo instalados son:
root@prt53ws1# rpm -qa |grep -i php
php72w-common-7.2.13-1.w7.x86_64
php72w-soap-7.2.13-1.w7.x86_64
php72w-xml-7.2.13-1.w7.x86_64
php72w-mysqlnd-7.2.13-1.w7.x86_64
php72w-mbstring-7.2.13-1.w7.x86_64
php72w-cli-7.2.13-1.w7.x86_64
php72w-gd-7.2.13-1.w7.x86_64
mod_php72w-7.2.12-1.w7.x86_64
php72w-fpm-7.2.13-1.w7.x86_64
php72w-pdo-7.2.13-1.w7.x86_64
root@prt53ws1#
root@prt53ws1# rpm -qa |grep -i mariadb
mariadb-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64
mariadb-server-5.5.60-1.el7_5.x86_64
root@prt53ws1#
Y arrancamos el servicio de base de datos:
systemctl enable mariadb
systemctl start mariadb
Descargar WordPress
Descargamos WordPress del sitio oficial con el comando wget en el directorio donde vamos a ubicar el DocumentRoot o directorio raíz de nuestra página WEB. En el caso para este ejemplo, va a ser /app/hervideros/html.
[root@prt53ws1 html]# wget https://es.wordpress.org/wordpress-5.0-es_ES.zip
--2018-12-09 17:46:06-- https://es.wordpress.org/wordpress-5.0-es_ES.zip
Resolving es.wordpress.org (es.wordpress.org)... 198.143.164.252
Connecting to es.wordpress.org (es.wordpress.org)|198.143.164.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11995990 (11M) [application/zip]
Saving to: ‘wordpress-5.0-es_ES.zip’
100%[===================================================================================================>] 11,995,990 8.14MB/s in 1.4s
2018-12-09 17:46:08 (8.14 MB/s) - ‘wordpress-5.0-es_ES.zip’ saved [11995990/11995990]
[root@prt53ws1 html]#
Una vez descargado el fichero ZIP, lo descomprimimos.
unzip wordpress-5.0-es_ES.zip
Crear una base de datos MySQL o MariaDB
WordPress necesita conectarse a una base de datos MySQL o MariaDB para guardar datos internos como los artículos que escribimos o tablas de configuración de plugins. Así que creamos una base de datos nueva en el servidor de MySQL. En mi caso MariaDB.
CREATE USER ‘usuario’@’localhost’ IDENTIFIED BY ‘Contraseña’;
CREATE DATABASE Nombre_base_de_datos;
GRANT ALL PRIVILEGES ON databasename.* TO «usuario»@»localhost»;
Configurar el servidor WEB NGINX
Instalación de NGINX en CentOS
Para instalar Nginx, en CentOS 7, he ejecutado los siguientes comandos:
yum install epel-release -y
yum install nginx
Más información sobre la configuración del repositorio EPEL en este enlace.
Configuración del servicio de Nginx
IP interna asignada al nuevo servicio:
[root@prt53ws1 ~]# grep hervideros /etc/hosts
10.0.1.133 hervideros.online
[root@prt53ws1 ~]#
Código que añadimos al fichero /etc/nginx/nginx.conf:
# hervideros.online
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name hervideros.online;
#root /usr/share/nginx/html;
root /app/hervideros/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /app/hervideros/html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
# Caching 30 days in browser - Expire headers
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~* \.php$ {
fastcgi_index index.php;
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_connect_timeout 300s;
fastcgi_read_timeout 300s;
fastcgi_send_timeout 300s;
}
}
# hervideros
Reiniciamos el servidor NGINX con el comando system restart nginx y ya tenemos el servicio escuchando:
[root@prt53ws1 nginx]# nmap -Pn -p80 10.0.1.133
Starting Nmap 6.40 ( http://nmap.org ) at 2018-12-09 18:31 CET
Nmap scan report for hervideros.online (10.0.1.133)
Host is up (0.000041s latency).
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
[root@prt53ws1 nginx]#
Seguramente que te interese revisar el artículo Configuración de WordPress con NGINX y PHP-FPM en Linux CentOS 7., en el que explico cómo configurar el servicio PHP-FPM. En el ejemplo anterior, el servicio está escuchando por la IP y puerto definidos en la directiva:
fastcgi_pass 127.0.0.1:9000;
Acceder a la WEB públicamente desde Internet
En el artículo Route53 – El servicio de DNS de Amazon AWS expliqué cómo comprar un dominio de Internet en Amazon AWS. Para este proyecto, he comprado hervidores.online.
Como podemos comprobar, ya tenemos acceso a la URL de configuración de WordPress desde donde indicamos, por primera vez, el acceso a la base de datos:
https://URL/wp-admin/setup-config.php
Si tienes varias páginas WEB en el mismo servidor, utilizando NGINX para todas ellas, necesitarás separar cada fichero de configuración de cada página para que esté todo más ordenadito. Puedes ver cómo lo tengo configurado en el artículo Configuración de Bloques en NGINX.
Por último, te recomiendo que visites el artículo Tutorial de WordPress
También deberás comprar un certificado SSL para acceder a tu página con HTTPS, ya que con HTTP aparece un mensaje de página no segura y eso te penalizará en el posicionamiento WEB.
Te puede interesar
- Instalar WordPress en alta disponibilidad con un cluster de Kubernetes
- Contrata un servidor VPS administrado
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,