Cloud for Charities: Guía de migración

Cloud for Charities: Guía de migración

No hace mucho, Mail.Ru Cloud Solutions (MCS) y el servicio Dobro Mail.Ru lanzaron el proyecto “Nube para organizaciones benéficas”, gracias al cual las organizaciones sin fines de lucro pueden obtener los recursos de la plataforma en la nube MCS de forma gratuita. Fundación caritativa "Aritmética de la bondad» participó en el proyecto y desplegó con éxito parte de su infraestructura basada en MCS.

Después de pasar la validación, una OSFL puede recibir capacidad virtual de MCS, pero una configuración adicional requiere ciertas calificaciones. En este material, queremos compartir instrucciones específicas para configurar un servidor basado en Ubuntu Linux para ejecutar el sitio web principal y varios subdominios utilizando certificados SSL gratuitos. Para muchos, esta será una guía sencilla, pero esperamos que nuestra experiencia sea de utilidad para otras organizaciones sin fines de lucro, y no solo.

Para su información: ¿Qué puedes obtener de MCS? 4 CPU, 32 GB de RAM, 1 TB de disco duro, sistema operativo Ubuntu Linux, 500 GB de almacenamiento de objetos.

Paso 1: inicie el servidor virtual

Vayamos directo al grano y creemos nuestro servidor virtual (también conocido como "instancia") en su cuenta personal de MCS. En la tienda de aplicaciones, debe seleccionar e instalar una pila LAMP lista para usar, que es un conjunto de software de servidor (LAMP = Linux, Apache, MySQL, PHP) necesario para ejecutar la mayoría de los sitios web.

Cloud for Charities: Guía de migración
Cloud for Charities: Guía de migración
Cloud for Charities: Guía de migración
Seleccione la configuración del servidor adecuada y cree una nueva clave SSH. Después de hacer clic en el botón "Instalar", comenzará la instalación del servidor y la pila LAMP, esto llevará algún tiempo. El sistema también le ofrecerá descargar una clave privada a su computadora para administrar la máquina virtual a través de la consola y guardarla.

Después de instalar la aplicación, configuremos inmediatamente el firewall, esto también se hace en su cuenta personal: vaya a la sección "Computación en la nube -> Máquinas virtuales" y seleccione "Configurar el firewall":

Cloud for Charities: Guía de migración
Debe agregar permiso para el tráfico entrante a través de los puertos 80 y 9997. Esto será necesario en el futuro para instalar certificados SSL y trabajar con phpMyAdmin. Como resultado, el conjunto de reglas debería verse así:

Cloud for Charities: Guía de migración
Ahora puede conectarse a su servidor a través de la línea de comando usando el protocolo SSH. Para hacer esto, escriba el siguiente comando, apuntando a la clave SSH de su computadora y la dirección IP externa de su servidor (puede encontrarla en la sección “Máquinas virtuales”):

$ ssh -i /путь/к/ключу/key.pem ubuntu@<ip_сервера>

Al conectarse al servidor por primera vez, se recomienda instalar todas las actualizaciones actuales y reiniciarlo. Para hacer esto, ejecute los siguientes comandos:

$ sudo apt-get update

El sistema recibirá una lista de actualizaciones, instálelas usando este comando y siga las instrucciones:

$ sudo apt-get upgrade

Después de instalar las actualizaciones, reinicie el servidor:

$ sudo reboot

Paso 2: configurar hosts virtuales

Muchas organizaciones sin fines de lucro necesitan mantener varios dominios o subdominios al mismo tiempo (por ejemplo, un sitio web principal y varias páginas de destino para campañas promocionales, etc.). Todo esto se puede colocar cómodamente en un servidor creando varios hosts virtuales.

Primero necesitamos crear una estructura de directorios para los sitios que se mostrarán a los visitantes. Creemos algunos directorios:

$ sudo mkdir -p /var/www/a-dobra.ru/public_html

$ sudo mkdir -p /var/www/promo.a-dobra.ru/public_html

Y especifique el propietario del usuario actual:

$ sudo chown -R $USER:$USER /var/www/a-dobra.ru/public_html

$ sudo chown -R $USER:$USER /var/www/promo.a-dobra.ru/public_html

Variable $USER contiene el nombre de usuario con el que ha iniciado sesión actualmente (por defecto, este es el usuario ubuntu). Ahora el usuario actual posee los directorios public_html donde almacenaremos el contenido.

También necesitamos editar un poco los permisos para asegurarnos de que se permita el acceso de lectura al directorio web compartido y a todos los archivos y carpetas que contiene. Esto es necesario para que las páginas del sitio se muestren correctamente:

$ sudo chmod -R 755 /var/www

Su servidor web ahora debería tener los permisos que necesita para mostrar el contenido. Además, su usuario ahora tiene la capacidad de crear contenido en los directorios requeridos.

Ya existe un archivo index.php en el directorio /var/www/html, copiémoslo en nuestros nuevos directorios; este será nuestro contenido por ahora:

$ cp /var/www/html/index.php /var/www/a-dobra.ru/public_html/index.php

$ cp /var/www/html/index.php /var/www/promo.a-dobra.ru/public_html/index.php

Ahora debe asegurarse de que el usuario pueda acceder a su sitio. Para hacer esto, primero configuraremos los archivos del host virtual, que determinan cómo responderá el servidor web Apache a las solicitudes de diferentes dominios.

De forma predeterminada, Apache tiene un archivo de host virtual 000-default.conf que podemos usar como punto de partida. Copiaremos esto para crear archivos de host virtual para cada uno de nuestros dominios. Comenzaremos con un dominio, lo configuraremos, lo copiaremos a otro dominio y luego volveremos a realizar las ediciones necesarias.

La configuración predeterminada de Ubuntu requiere que cada archivo de host virtual tenga una extensión *.conf.

Comencemos copiando el archivo del primer dominio:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a-dobra.ru.conf

Abra un nuevo archivo en un editor con derechos de root:

$ sudo nano /etc/apache2/sites-available/a-dobra.ru.conf

Edite los datos de la siguiente manera, especificando el puerto 80, sus datos para ServerAdmin, ServerName, ServerAlias, así como la ruta al directorio raíz de su sitio, guarde el archivo (Ctrl+X, luego Y):

<VirtualHost *:80>
 
    ServerAdmin [email protected]
    ServerName a-dobra.ru
    ServerAlias www.a-dobra.ru
 
    DocumentRoot /var/www/a-dobra.ru/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    <Directory /var/www/a-dobra.ru/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
 
    <FilesMatch .php$>
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>
 
</VirtualHost>

ServerName establece el dominio principal, que debe coincidir con el nombre del host virtual. Este debe ser su nombre de dominio. Segundo, ServerAlias, define otros nombres que deben interpretarse como si fuera el dominio principal. Esto es conveniente para usar nombres de dominio adicionales, por ejemplo usando www.

Copiemos esta configuración para otro host y edítela también de la misma manera:

$ sudo cp /etc/apache2/sites-available/a-dobra.ru.conf /etc/apache2/sites-available/promo.a-dobra.ru.conf

¡Puedes crear tantos directorios y servidores virtuales para tus sitios web como quieras! Ahora que hemos creado nuestros archivos de host virtual, debemos habilitarlos. Podemos usar la utilidad a2ensite para habilitar cada uno de nuestros sitios de esta manera:

$ sudo a2ensite a-dobra.ru.conf

$ sudo a2ensite promo.a-dobra.ru.conf 

De forma predeterminada, el puerto 80 está cerrado en LAMP y lo necesitaremos más adelante para instalar un certificado SSL. Entonces, editemos inmediatamente el archivo ports.conf y luego reiniciemos Apache:

$ sudo nano /etc/apache2/ports.conf

Agregue una nueva línea y guarde el archivo para que se vea así:

Listen 80
Listen 443
Listen 9997

Después de completar la configuración, debe reiniciar Apache para que todos los cambios surtan efecto:

$ sudo systemctl reload apache2

Paso 3: configurar nombres de dominio

A continuación, debe agregar registros DNS que apuntarán a su nuevo servidor. Para gestionar dominios, nuestra Fundación Aritmética del Bien utiliza el servicio dns-master.ru, lo mostraremos con un ejemplo.

La configuración de un registro A para el dominio principal generalmente se indica de la siguiente manera (signo @):

Cloud for Charities: Guía de migración
El registro A para subdominios normalmente se especifica así:

Cloud for Charities: Guía de migración
La dirección IP es la dirección del servidor Linux que acabamos de crear. Puede especificar TTL = 3600.

Después de un tiempo, será posible visitar su sitio, pero por ahora sólo a través de http://. En el siguiente paso agregaremos soporte. https://.

Paso 4: configure certificados SSL gratuitos

Puede obtener certificados SSL Let's Encrypt gratuitos para su sitio principal y todos los subdominios. También puedes configurar su renovación automática, lo cual es muy conveniente. Para obtener certificados SSL, instale Certbot en su servidor:

$ sudo add-apt-repository ppa:certbot/certbot

Instale el paquete Certbot para Apache usando apt:

$ sudo apt install python-certbot-apache 

Ahora Certbot está listo para usar, ejecute el comando:

$ sudo certbot --apache -d a-dobra.ru -d www.a-dobra.ru -d promo.a-dobra.ru

Este comando ejecuta certbot, claves -d definir los nombres de los dominios para los cuales se debe emitir el certificado.

Si es la primera vez que inicia certbot, se le pedirá que ingrese su dirección de correo electrónico y acepte los términos de uso del servicio. certbot luego se comunicará con el servidor Let's Encrypt y luego verificará que usted realmente controle el dominio para el cual solicitó el certificado.

Si todo salió bien, certbot le preguntará cómo desea configurar la configuración HTTPS:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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):

Recomendamos seleccionar la opción 2 y presionar ENTER. La configuración se actualizará y se reiniciará Apache para aplicar los cambios.

Sus certificados ahora están descargados, instalados y funcionando. Intente recargar su sitio con https:// y verá el ícono de seguridad en su navegador. Si pruebas tu servidor Prueba del servidor de SSL Labs, recibirá una calificación A.

Los certificados de Let's Encrypt solo son válidos por 90 días, pero el paquete certbot que acabamos de instalar los renovará automáticamente. Para probar el proceso de actualización, podemos hacer un ensayo de certbot:

$ sudo certbot renew --dry-run 

Si no ve ningún error como resultado de ejecutar este comando, ¡entonces todo está funcionando!

Paso 5: acceda a MySQL y phpMyAdmin

Muchos sitios web utilizan bases de datos. La herramienta phpMyAdmin para la gestión de bases de datos ya está instalada en nuestro servidor. Para acceder a él, vaya a su navegador mediante un enlace como:

https://<ip-адрес сервера>:9997

La contraseña para el acceso root se puede obtener en su cuenta personal de MCS (https://mcs.mail.ru/app/services/marketplace/apps/). ¡No olvides cambiar tu contraseña de root la primera vez que inicies sesión!

Paso 6: configurar la carga de archivos a través de SFTP

A los desarrolladores les resultará conveniente cargar archivos para su sitio web a través de SFTP. Para ello crearemos un nuevo usuario, lo llamaremos webmaster:

$ sudo adduser webmaster

El sistema le pedirá que establezca una contraseña e ingrese algunos otros datos.

Cambiar el propietario del directorio con su sitio web:

$ sudo chown -R webmaster:webmaster /var/www/a-dobra.ru/public_html

Ahora cambiemos la configuración de SSH para que el nuevo usuario solo tenga acceso a SFTP y no al terminal SSH:

$ sudo nano /etc/ssh/sshd_config

Desplácese hasta el final del archivo de configuración y agregue el siguiente bloque:

Match User webmaster
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/www/a-dobra.ru
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Guarde el archivo y reinicie el servicio:

$ sudo systemctl restart sshd

Ahora puede conectarse al servidor a través de cualquier cliente SFTP, por ejemplo, a través de FileZilla.

Total

  1. Ahora ya sabe cómo crear nuevos directorios y configurar hosts virtuales para sus sitios web dentro del mismo servidor.
  2. Puede crear fácilmente los certificados SSL necesarios; es gratis y se actualizarán automáticamente.
  3. Puede trabajar cómodamente con la base de datos MySQL a través del conocido phpMyAdmin.
  4. Crear nuevas cuentas SFTP y configurar derechos de acceso no requiere mucho esfuerzo. Estas cuentas se pueden transferir a desarrolladores web y administradores de sitios externos.
  5. No olvide actualizar periódicamente el sistema y también le recomendamos realizar copias de seguridad: en MCS puede tomar "instantáneas" de todo el sistema con un solo clic y luego, si es necesario, ejecutar imágenes completas.

Recursos usados ​​que pueden ser útiles:

https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru
https://www.digitalocean.com/community/tutorials/apache-let-s-encrypt-ubuntu-18-04-ru
https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-18-04

Por cierto, aquí Puede leer en VC cómo nuestra fundación implementó una plataforma de educación en línea para huérfanos basada en la nube MCS.

Fuente: habr.com

Añadir un comentario