Instalar NGINX y MySQL Community Server en Debian 12
=============================================
Actualizar repositorios de Debiansudo 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
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
Instalar MySQL
sudo apt install mysql-server
Verificar la instalación:
mysql --version
Habilitar MySQL
sudo systemctl enable mysql
sudo systemctl enable mysql
sudo systemctl status mysql
Habilitar firewall para MySQL
sudo ufw allow 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
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
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