
No hace mucho tiempo, Mail.Ru Cloud Solutions (MCS) y el servicio Welcome Mail.Ru lanzaron el proyecto
Cloud for Charity Foundations , gracias al cual las organizaciones sin fines de lucro pueden obtener recursos de la plataforma en la nube MCS de forma gratuita. La fundación de caridad
Arithmetic of Good participó en el proyecto y desplegó con éxito parte de su infraestructura basada en MCS.
Después de la validación, un NPO puede recibir energía virtual de MCS, pero un ajuste adicional requiere ciertas calificaciones. En este artículo, queremos compartir instrucciones específicas para configurar un servidor basado en Ubuntu Linux para el funcionamiento del sitio web del fondo principal y una serie de subdominios que utilizan certificados SSL gratuitos. Para muchos, esta será una guía simple, pero esperamos que nuestra experiencia sea útil para otras organizaciones sin fines de lucro, y no solo.
FYI : ¿qué puedo obtener de MCS? 4 CPU, 32 GB de RAM, 1 TB HDD, Ubuntu Linux OS, 500 GB de almacenamiento de objetos.
Paso 1: inicie el servidor virtual
Pasemos a los negocios de inmediato 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 preparada, que es un conjunto de software de servidor (LAMP = Linux, Apache, MySQL, PHP), que es necesario para iniciar la mayoría de los sitios web.
Elija la configuración adecuada para el servidor y cree una nueva clave SSH. Después de hacer clic en el botón "Instalar", el servidor y la pila LAMP comenzarán a instalarse, tomará algún tiempo. El sistema también ofrecerá descargar una clave privada a la computadora para controlar la máquina virtual a través de la consola, 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 "Cloud Computing -> Virtual Machines" y seleccione el elemento "Configure firewall":
Debe agregar permiso para el tráfico entrante a través del puerto 80 y 9997. Esto es necesario en el futuro para instalar certificados SSL y trabajar con phpMyAdmin. Al final, el conjunto de reglas debería verse así:
Ahora puede conectarse a su servidor a través de la línea de comando utilizando el protocolo SSH. Para hacerlo, escriba el siguiente comando, señalando la clave SSH en 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_>
Durante la primera conexión al servidor, 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 con 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 OSFL deben contener varios dominios o subdominios al mismo tiempo (por ejemplo, el sitio principal y varias páginas de destino para campañas promocionales, etc.). Todo esto se puede alojar convenientemente en un solo servidor creando múltiples hosts virtuales.
Primero, necesitamos crear una estructura de directorios para los sitios que se mostrarán a los visitantes. Vamos a crear algunos directorios:
$ sudo mkdir -p /var/www/a-dobra.ru/public_html
$ sudo mkdir -p /var/www/promo.a-dobra.ru/public_html
E indique 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
La variable
$USER
contiene el nombre del usuario con el que está conectado actualmente (de manera predeterminada, este es el usuario de
ubuntu
). Ahora el usuario actual posee los directorios public_html en los que 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, 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 debe tener los permisos necesarios para mostrar el contenido. Además, ahora su usuario tiene la capacidad de crear contenido en los directorios necesarios.
Ya hay un archivo index.php en el directorio / var / www / html, copiemoslo a 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 ingresar a su sitio. Para hacer esto, en primer lugar, configuraremos los archivos de host virtuales, que determinan cómo responderá exactamente el servidor web Apache a las solicitudes a diferentes dominios.
De forma predeterminada, Apache tiene un archivo de host virtual 000-default.conf, que podemos usar como punto de partida. Vamos a copiarlo para crear archivos de host virtuales para cada uno de nuestros dominios. Comenzaremos desde 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 para el primer dominio:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a-dobra.ru.conf
Abra un nuevo archivo en el editor con privilegios de root:
$ sudo nano /etc/apache2/sites-available/a-dobra.ru.conf
Edite los datos de la siguiente manera, indicando 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 e.valuisky@a-dobra.ru 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 tu nombre de dominio. El 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.
Copiamos esta configuración para otro host y también la editamos por analogía:
$ sudo cp /etc/apache2/sites-available/a-dobra.ru.conf /etc/apache2/sites-available/promo.a-dobra.ru.conf
¡Puede crear cualquier cantidad de directorios y hosts virtuales para sus sitios web! Ahora que hemos creado nuestros archivos de host virtuales, debemos incluirlos. Podemos usar la utilidad a2ensite para habilitar cada uno de nuestros sitios de la siguiente manera:
$ sudo a2ensite a-dobra.ru.conf
$ sudo a2ensite promo.a-dobra.ru.conf
Por defecto, el puerto 80 está cerrado en LAMP, y lo necesitaremos en el futuro para instalar un certificado SSL. Por lo tanto, 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 apunten a su nuevo servidor. Para la gestión de dominios, nuestra Fundación Aritmética del Bien utiliza el servicio dns-master.ru, demostrémoslo con el ejemplo.
La configuración de registro A para el dominio principal generalmente se indica así (signo
@
):
El registro A para subdominios generalmente se indica de la siguiente manera:
La dirección IP es la dirección del servidor Linux que acabamos de crear. TTL puede especificar = 3600.
Después de un tiempo, ya será posible acceder a su sitio, pero hasta ahora solo a través de
http://
. En el siguiente paso, agregaremos
https://
soporte.
Paso 4: configurar certificados SSL gratuitos
Puede obtener certificados SSL gratuitos de Let's Encrypt para su sitio principal y todos los subdominios. También puede 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
Certbot ya está listo para usar, ejecutamos el comando:
$ sudo certbot --apache -d a-dobra.ru -d www.a-dobra.ru -d promo.a-dobra.ru
Este comando ejecuta certbot, los modificadores
-d
especifican los nombres de dominio para los que se emitirá el certificado.
Si es la primera vez que ejecuta certbot, se le pedirá que ingrese una dirección de correo electrónico y acepte los términos del servicio. Después de eso, certbot se pondrá en contacto con el servidor Let's Encrypt y luego verificará que realmente tiene el control del dominio para el que 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 que seleccione la opción 2 y presione ENTRAR. La configuración se actualizará y Apache se reiniciará para aplicar los cambios.
Ahora sus certificados están cargados, instalados y funcionando. Intente recargar su sitio usando https: // y verá el icono de seguridad en el navegador. Si prueba su servidor con una prueba de servidor de
SSL Labs , recibirá una calificación de A.
Cifremos los certificados solo son válidos por 90 días, pero el paquete certbot que acabamos de instalar renovará los certificados automáticamente. Para probar el proceso de actualización, podemos hacer un certbot de ejecución en seco:
$ sudo certbot renew --dry-run
Si no ve ningún error resultante de este comando, ¡entonces todo funciona!
Paso 5: acceso a MySQL y phpMyAdmin
Muchos sitios web usan bases de datos. La herramienta phpMyAdmin para la gestión de bases de datos ya está instalada en nuestro servidor. Para acceder, haga clic en el enlace de su navegador como:
https://<ip- >:9997
La contraseña para el acceso raíz puede obtenerse en su cuenta personal de MCS (
https://mcs.mail.ru/app/services/marketplace/apps/ ). ¡No olvide cambiar la contraseña de root la primera vez que inicie sesión!
Paso 6: configure la carga de archivos a través de SFTP
Será conveniente para los desarrolladores cargar archivos para su sitio web a través de SFTP. Para hacer esto, crearemos un nuevo usuario, llámelo webmaster:
$ sudo adduser webmaster
El sistema le pedirá que establezca una contraseña e ingrese algunos otros datos.
Cambie 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 SSH para que el nuevo usuario tenga acceso solo a SFTP, y no al terminal SSH:
$ sudo nano /etc/ssh/sshd_config
Desplace el archivo de configuración hasta el final 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 vuelva a cargar el servicio:
$ sudo systemctl restart sshd
Ahora puede conectarse al servidor a través de cualquier cliente para SFTP, por ejemplo, a través de FileZilla.
Resumen
- Ahora ya sabe cómo crear nuevos directorios y configurar hosts virtuales para sus sitios web en el mismo servidor.
- Puede crear fácilmente los certificados SSL necesarios: es gratis y se actualizarán automáticamente.
- Puede trabajar convenientemente con la base de datos MySQL a través del phpMyAdmin habitual.
- Crear nuevas cuentas SFTP y establecer derechos de acceso no requerirá mucho esfuerzo. Dichas cuentas pueden transferirse a terceros desarrolladores web y administradores del sitio.
- No olvide actualizar periódicamente el sistema, y también recomendamos realizar copias de seguridad: en MCS, puede tomar "instantáneas" de todo el sistema con un solo clic y luego, si es necesario, iniciar imágenes completas.
Recursos utilizados que pueden ser útiles:
https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ruhttps://www.digitalocean.com/community/tutorials/apache-let-s-encrypt-ubuntu-18-04-ruhttps://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-ubuntu-18-04Por cierto,
aquí puede leer en VC cómo nuestra fundación ha lanzado una plataforma para la educación en línea de huérfanos basada en la nube MCS.