miércoles, 4 de diciembre de 2024

Instalar NGINX y MySQL Community Server en Debian 12

Instalar NGINX y MySQL Community Server en Debian 12
=============================================
Actualizar repositorios de Debian
sudo apt update
sudo apt upgrade

Configurar zona horaria de servidor
sudo timedatectl set-timezone America/Lima
timedatectl
-----------------------------------------------------------------------------------------------------------------------------
Instalar Mysql Community Server
Descargar e instalar el paquete de repositorios de MySQL:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb
sudo apt update

Instalar MySQL
sudo apt install mysql-server

Verificar la instalación:
mysql --version

Habilitar MySQL
sudo systemctl enable mysql
sudo systemctl status mysql

Habilitar firewall para MySQL
sudo ufw allow mysql
sudo ufw status

Acceder a MySQL como root:
sudo mysql -u root -p

Cambiar Contraseña de root y Crear nuevo usuario 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> CREATE USER 'usuario'@'ipPublicaHome' IDENTIFIED BY '654321';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'ipPublicaHome';
mysql> FLUSH PRIVILEGES;
mysql> exit

Asegurar la instalación de MySQL
sudo mysql_secure_installation

Enter password for user root: 123456
Validate Password: No
Change the password for root? [Y/n]  No
Do you wish to continue with the password provided? Y
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

Eliminar el archivo de instalación de MySQL
rm mysql-apt-config_0.8.33-1_all.deb
-----------------------------------------------------------------------------------------------------------------------------
Instalar Nginx
sudo apt install nginx -y

Habilitar el servicio Nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Agregar el usuario jperez al grupo www-data
sudo usermod -aG www-data jperez

Verificar si el usuario pertenece al grupo
groups jperez
exit
Volver a loguearse

Crear un Directorio para el dominio principal:
Crea el directorio donde estarán alojados los archivos del dominio:
sudo mkdir -p /var/www/dominio.dev

Configurar una página de prueba
Crear un archivo HTML de prueba en el directorio raíz de Nginx:
echo '<h1>¡Bienvenido a midominio.dev!</h1>' | sudo tee /var/www/dominio.dev/index.html

Configurar los permisos
sudo chown -R www-data:www-data /var/www/dominio.dev
sudo chmod -R 770 /var/www/dominio.dev
sudo ls -l /var/www/dominio.dev

Crear un archivo de configuración para el dominio principal
sudo vim /etc/nginx/sites-available/dominio.dev.conf
----------------------------------------------------------------------------------------
server {
        listen 80;
        listen [::]:80;

        root /var/www/dominio.dev;

        index index.html index.htm;

        server_name dominio.dev www.dominio.dev;

        location / {
                try_files $uri $uri/ =404;
        }
}
----------------------------------------------------------------------------------------
Crear un Enlace Simbólico para habilitar la configuración del dominio:
sudo ln -s /etc/nginx/sites-available/dominio.dev.conf /etc/nginx/sites-enabled/

Eliminar el archivo de configuración predeterminado de Nginx
sudo rm -r /etc/nginx/sites-enabled/default
sudo rm -r /var/www/html

Verificar la configuración de Nginx:
sudo nginx -t

Reiniciar Nginx
sudo systemctl reload nginx

Habilitar Firewall para Nginx
sudo ufw allow 'Nginx Full'

Verificar si el servidor responde correctamente con curl
curl -I http://dominio.dev

Instalar Certificado Digital de Let's Encrypt
===================================
Instalar Certbot y el Plugin de Nginx:
sudo apt install certbot python3-certbot-nginx

Generar el certificado para el dominio:
sudo certbot --nginx -d midominio.dev -d www.midominio.dev

Verificar la Renovación Automática:
sudo systemctl status certbot.timer

Acceder a la página de prueba
https://dominio.dev

Eliminar el Archivo de Prueba Después de Usarlo
sudo rm -r /var/www/dominio.dev/index.html
-----------------------------------------------------------------------------------------------------------------------------
Instalar PHP y los Módulos Necesarios
sudo apt install php-fpm php-cli php-mbstring php-xml php-curl php-mysql -y

Verificar la versión de php
php --version

Copiar los archivos del proyecto al servidor Web:
Ejecutar la terminal como Administrador:
scp -r $HOME/Desktop/Carpeta/* jperez@158.10.11.12:/var/www/dominio.dev

Configurar los permisos
sudo chown -R www-data:www-data /var/www/dominio.dev
sudo chmod -R 770 /var/www/dominio.dev
sudo ls -l /var/www/dominio.dev

Configurar Nginx para Procesar Archivos PHP
Abrir y editar el archivo:
sudo vim /etc/nginx/sites-available/dominio.dev.conf
------------------------------------------------------------------------------------------
server {
        root /var/www/dominio.dev;

        index index.php index.html index.htm;

        server_name dominio.dev www.dominio.dev;

        location / {
                try_files $uri $uri/ =404;
        }

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.X-fpm.sock;
}

location ~ /\.ht {
deny all;
}

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/dominio.dev/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/dominio.dev/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = www.dominio.dev) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = dominio.dev) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        listen [::]:80;

        server_name dominio.dev www.dominio.dev;
    return 404; # managed by Certbot
}
------------------------------------------------------------------------------------------
Verificar que la configuración de Nginx sea correcta:
sudo nginx -t

Reiniciar los Servicios
sudo systemctl reload nginx
sudo systemctl restart php8.X-fpm

Acceder a la Página de Prueba
https://dominio.dev/info.php

Eliminar el Archivo de Prueba Después de Usarlo
sudo rm -r /var/www/dominio.dev/*
-----------------------------------------------------------------------------------------------------------------------------
Configurar subdominios en Nginx
Configurar el DNS
En el servidor de DNS, crear un registro A para el subdominio y que apunte a la dirección IP pública de tu servidor.

Crear el Directorio de Raíz para el Subdominio:
Crea el directorio donde estarán los archivos del subdominio:
sudo mkdir -p /var/www/blog.dominio.dev

Copiar los archivos del proyecto al servidor Web en la carpeta blog
Ejecutar la terminal como Administrador
scp -r $HOME/Desktop/Carpeta/* jperez@158.10.11.12:/var/www/blog.dominio.dev

Configurar los permisos
sudo chown -R www-data:www-data /var/www/blog.dominio.dev
sudo chmod -R 770 /var/www/blog.dominio.dev
sudo ls -l /var/www/blog.dominio.dev

Crear el Archivo de Configuración para el Subdominio:
sudo vim /etc/nginx/sites-available/blog.dominio.dev.conf
-------------------------------------------------------------------------------------------
server {
        listen 80;
        listen [::]:80;

        root /var/www/blog.dominio.dev;

        index index.php index.html index.htm;

        server_name blog.dominio.dev;

        location / {
                try_files $uri $uri/ =404;
        }
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.X-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}
----------------------------------------------------------------------------------------
Crear un Enlace Simbólico para habilitar la configuración del subdominio:
sudo ln -s /etc/nginx/sites-available/blog.dominio.dev.conf /etc/nginx/sites-enabled/

Probar la Configuración de Nginx:
sudo nginx -t

Reiniciar los Servicios
sudo systemctl reload nginx
sudo systemctl restart php8.X-fpm

Agregar el Certificado para el Subdominio:
sudo certbot --nginx -d blog.dominio.dev

Verificar el Certificado SSL:
curl -I https://blog.dominio.dev

Acceder al Subdominio:
https://blog.dominio.dev
-----------------------------------------------------------------------------------------------------------------------------



No hay comentarios:

Publicar un comentario

Instalación y Configuración de un DNS Público en Debian 12

Configuración de un DNS Público en Debian 12 ===================================== Registrar un dominio público en Goddady, Namecheap  ó pun...