ITCooky Recetas

Vamos a cocinar it cositas

¡Como hacer un nuevo sitio web en WordPress en VPS con nginx, MySQL, Letsencrypt!

дата septiembre 10, 2020

Primero, necesitas comprar un dominio (nombre.es – nombre dominio de segundo nivel en la zona es) de cualquier Registrador de Dominios, no un intermediario, ¡pero utilizando cuyos servicios usted será el administrador del dominio! Anteriormente, en los días de los ocupantes ilegales salvajes, los mejores nombres ya estaban ocupados y ellos extorsionaba dinero por ellos. Pero estos tiempos oscuros ya han terminado, los registradores de dominios están haciendo oficialmente lo mismo: todos los mejores nombres ya han sido capturados, y cuando intentas comprarlos, dicen que este es un dominio VIP o un dominio de subasta, lo que significa que se venderá solo cuando pague mucho dinero. El resto de nombres de dominio del segundo nivel tiene un precio de compra y renovación estable, diferente en diferentes zonas.

¡También necesitas comprar un VPS, es decir, un servidor en Linux donde también será el administrador del sistema! Cómo se configura VPS desde cero, ya escribí aquí Como mover un website en WordPress, con el foro phpBB, al nuevo server de RUVDS con todo y letsencrypt, http2!. En este artículo asumiré que el VPS ya está configurado (nginx (con http2), php-fpm, MySQL, Let’s Encrypt), ¡solo se necesita agregarle un nuevo sitio web!

Como configurar un nombre de dominio
Pues dominio fue comprado al Registrar. Todas las ofertas adicionales fueron rechazadas: estacionamiento, certificados SSL, protección contra el mal de ojo y lluvia de meteoritos. Lo único que necesita aceptar es el DNS del registrador de dominios. Hay que editar los registros MX en él. Esto se hace a través de la cuenta personal del administrador del dominio en el sitio web del registrador del dominio.

Hay que añadir A registros en los que indicamos la IP de su servidor VPS y su dominio – en mi caso artmundo.ru

artmundo.ru.	A				195.133.197.61

Este registro significa que si se le pide al DNS que dé artmundo.ru lo enviará a la IP de nuestro VPS.
Pero si preguntan por www.artmundo.ru no lo enviará a ningún lado, para ello es necesario agregar

www.artmundo.ru.	A				195.133.197.61

Todos los servidores DNS del planeta pueden tardar 24 horas en asumir esta información. ¡O tal vez solo una hora!

Configuración inicial del sitio en nginx
Conectamos al VPS vía SSH

En la carpeta donde tengo las configuraciones de nginx, hago un archivo
vi /etc/nginx/conf/conf.d/newsite.conf
con texto

server {
    listen       80;
    server_name artmundo.ru www.artmundo.ru;
    location / {
        root   /usr/local/www/artmundo.ru;
        index  index.php index.html index.htm;
    }
 
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/www/artmundo.ru;
    }
 
 
    location ~ \.php$ {
        root           /usr/local/www/artmundo.ru;
        fastcgi_pass   unix:/var/run/php.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
 
    location ~ /\.ht {
        deny  all;
    }
}

En esta línea escribimos a qué nombre responderá el sitio

server_name artmundo.ru www.artmundo.ru;

Y en todas partes se escribe la ruta a la carpeta con sus archivos.

Crea una carpeta
mkdir /usr/local/www/artmundo.ru
hay que poner el archivo de los ejemplos de nginx allí – index.html – en ella

Hay que hacer reiniciar nginx
service nginx restart
Aunque sería posible simplemente volver a leer la configuración, pero cuando reiniciap los errores se notan mejor
service nginx reload

Vamos a Chrome e intentamos abrir nuestro sitio. Puedes intentarlo en FireFox, pero tiene un almacenamiento en caché salvaje, incluso CTRL-F no ayuda a renovarlo de todo, por lo que no es para pruebas.

Si vemos eso todo esta bien

Todo está bien, pero el navegador web ha marcado el sitio como «No seguro» – ¡todos los que no tienen experiencia en IT están alarmados y los que lo tienen estrian simplemente asustados!

Instalación de certificados SSL Let’s Encrypt y https
Uno cosita muy util útil, todos los gigantes de IT ya han comenzado a discriminar a los sitios web por su ausencia, pero ninguno de los grandes lo ofreció como un servicio estándar gratuito. Muchas gracias a Let’s Encrypt por hacerlo!

Todo lo que necesitamos para Let’s Encrypt ya está instalado, así que ejecuto

Puedes indicarr el correo en el comando para que reciba advertencias de que es hora de renovar el certificado, agregando
--email meganus@itcooky.com
yo lo hago sin eso

/usr/local/src/certbot-auto certonly --webroot --agree-tos -w /usr/local/www/artmundo.ru -d www.artmundo.ru -d artmundo.ru
El comando contiene dos domenios, esto es importante
artmundo.ru www.artmundo.ru

Recibimos en respuesta

 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/artmundo.ru/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/artmundo.ru/privkey.pem
   Your cert will expire on 2020-12-06. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto 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

Todo está bien, buen trabajo ¡incluso los doné cuando tenía dinero!

Ahora necesitamos hacer nuevos configs para nginx. Los certificados SSL nos brindan acceso al sitio a través del protocolo seguro https

La primera configuración arroja a todos los que vinieron a través de http a https, también arroja a todos los que ingresaron al sitio sin www a www.
En la carpeta donde tengo las configuraciones de nginx, hago un archivo de este tipo
vi /etc/nginx/conf/conf.d/newsite.conf
con texto

server {
    listen 80;
    server_name artmundo.ru www.artmundo.ru;
    return 301 https://www.artmundo.ru$request_uri;
access_log  off;
}

La segunda configuración ya da https en el puerto 443 al que ahora se redirige todo
En la carpeta donde tengo las configuraciones de nginx, hago un archivo de este tipo
vi /etc/nginx/conf/conf.d/newsitehttps.conf
con texto

server {
listen       443 ssl http2;
    server_name www.artmundo.ru artmundo.ru;
    ssl_certificate /etc/letsencrypt/live/artmundo.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/artmundo.ru/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/artmundo.ru/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8;
    add_header Strict-Transport-Security "max-age=31536000";
    add_header Content-Security-Policy "img-src https: data:; upgrade-insecure-requests";

 
access_log  off;

root   /usr/local/www/artmundo.ru;


location / {
        index  index.php index.html index.htm;
}

error_page 404 /404.html;
error_page 500 /500.html;
error_page 502 /502.html;
error_page 503 /503.html;
error_page 504 /504.html;  

location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php.sock; 
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        include        fastcgi_params;
}

location ~ .(gif|png|jpeg|jpg|svg)$ {
     valid_referers none blocked ~.google. ~.bing. ~.yahoo. ~.yandex. artmundo.ru *.artmundo.ru;
     if ($invalid_referer) {
        return   403;
    }
}

location ~ /\.ht {
        deny  all;
    }
}

Volvemos a releer la configuración de nginx y miramos
service nginx reload

Hay un resultado, no hicimos nada en el sitio, el sitio no mejoró, pero Chrome ya confía en nosotros, ¡y todos los demás navegadores también!

Los certificados Let’s Encrypt son válidos por 90 días, renovables 30 días antes de su vencimiento. Este proceso debe automatizarse, solicitaremos una actualización un par de veces al mes.

agregar al
crontab -e
linea

37 18 4,13,22 * * /usr/local/src/certbot-auto renew -q&&/usr/sbin/service nginx reload

tres dias al mes 4,13,22 tratara de renovar lo certificados

Configuraciones utiles de nginx
Aquí puede especificar qué página mostrará nginx en diferentes errores. ¡Puede crear sus propias hermosas páginas de error!

error_page 404 /404.html;

Esto no permite enlaces directos a imágenes en nuestro sitio web. Útil para reducir el consumo de recursos.
Aquí debe enumerar qué sitios se pueden ber fotos, por ejemplo, google para que la búsqueda de imágenes funcione, bueno, también debe especificar su sitio, de lo contrario, ¡no se lo va a permitir!

location ~ .(gif|png|jpeg|jpg|svg)$ {
     valid_referers none blocked ~.google. ~.bing. ~.yahoo. ~.yandex. artmundo.ru *.artmundo.ru;
     if ($invalid_referer) {
        return   403;
    }
}

Prohíbe la emisión de archivos que comiencen con .ht por solicitudes externas(por ejemplo, htaccess, htpassword), tal vez desactualizados eso pero útil

location ~ /\.ht {
        deny  all;
    }

Algunos scripts php necesitan redirección de URL; esto se hace evidente cuando se genera un error 404 y el enlace parece ser normal.
Esto se puede corregir indicando específicamente a quién a dónde hacerlo

location /phpbb/app.php {
                try_files $uri $uri/ /phpbb/app.php?$query_string;
        }

Instalamos WordPress
Bajamos WordPress
wget https://wordpress.org/latest.tar.gz
desarchivamos
tar -xvf latest.tar.gz
y ponemos todo lo que habia en la carpeta de wordpress aquí /usr/local/www/artmundo.ru

Cambiar permisos en carpetas y archivos
chmod -R 755 /usr/local/www/artmundo.ru/wp-content
chown -R nginx:nginx /usr/local/www/artmundo.ru/

Vamos a MySQL
mysql -u root -p
Hacemos un usuario, una base, establecemos una contraseña. Un nombre para todo wpartmun
CREATE DATABASE wpartmun;
CREATE USER 'wpartmun'@'localhost' IDENTIFIED BY 'QWErty123!';
GRANT ALL PRIVILEGES ON wpartmun.* TO 'wpartmun'@'localhost';
ALTER USER 'wpartmun'@'localhost' IDENTIFIED WITH mysql_native_password BY 'QWErty123!@#';
exit

Ahora vamos al sitio

En la pimera pagina, aparece una ventana de instalación y allí debe ingresar el nombre de la base, usuario, contraseña. Emitirá un archivo con configuraciones, no podrá escribirlo él mismo, necesita crear un archivo
vi /usr/local/www/artmundo.ru/wp-config.pfp
con el texto de esta configuración.
Despues de eso hay que continuar con la nstalacion en la pagina web – pidera crar el nombre y la contraseña de administrador

Y ta esta listo

Puedes ingresar al panel de administración en
www.artmundo.ru/wp-admin/

Plugins útiles para WordPress
Classic Editor
El quinto WP tiene un editor de publicaciones increíble e innovador. Si aún no estás acostumbrado a el, y es imposible acostumbrarse, ¡puedes devolver todo como estaba antes con este plaguin!

Site Kit от Google
El complemento oficial de Google para ver todas las estadísticas de Google en su sitio, ¡todo en un mismo lugar!

reCaptcha by BestWebSoft
Protección contra los spammers: parece funcionar, ¡El numero de cpmmentarios spam disminuido en 99%!

Auto Post Thumbnail
Tomar una foto de publicación automáticamente desde la primera foto si no eы configurada manualmente

Yet Another Related Posts Plugin (YARPP)
Agregue una lista de publicaciones similares a una publicación, funciona bien, mejor que otras

Hay tres temas que vienen con WordPress, los nuevos se pueden encontrar de inmediato salir de panel de administración, al igual que con los palugins.

Bueno ya esta, ¡ahora el autor puede llenar su sitio con contenido!


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *