No hace mucho, Mail.Ru Cloud Solutions (MCS) y el servicio Dobro Mail.Ru lanzaron el proyecto “
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.
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":
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í:
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 @
):
El registro A para subdominios normalmente se especifica así:
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
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 (
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
- Ahora ya sabe cómo crear nuevos directorios y configurar hosts virtuales para sus sitios web dentro del mismo servidor.
- Puede crear fácilmente los certificados SSL necesarios; es gratis y se actualizarán automáticamente.
- Puede trabajar cómodamente con la base de datos MySQL a través del conocido phpMyAdmin.
- 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.
- 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:
Por cierto,
Fuente: habr.com