Cloud pour les associations : guide de migration

Cloud pour les associations : guide de migration

Il n'y a pas si longtemps, Mail.Ru Cloud Solutions (MCS) et le service Dobro Mail.Ru ont lancé le projet "Cloud pour les associations caritatives», grâce à laquelle les organisations à but non lucratif peuvent obtenir gratuitement les ressources de la plateforme cloud MCS. Organisation caritative "Arithmétique de la bonté» a participé au projet et déployé avec succès une partie de son infrastructure basée sur MCS.

Après avoir réussi la validation, un OBNL peut recevoir de la capacité virtuelle de MCS, mais une configuration ultérieure nécessite certaines qualifications. Dans ce document, nous souhaitons partager des instructions spécifiques pour configurer un serveur basé sur Ubuntu Linux pour exécuter le site Web principal de la fondation et un certain nombre de sous-domaines à l'aide de certificats SSL gratuits. Pour beaucoup, ce sera un simple guide, mais nous espérons que notre expérience sera utile à d’autres organisations à but non lucratif, et pas seulement.

FYI: Que pouvez-vous obtenir de MCS ? 4 processeurs, 32 Go de RAM, 1 To de disque dur, système d'exploitation Ubuntu Linux, 500 Go de stockage objet.

Étape 1 : lancer le serveur virtuel

Allons droit au but et créons notre serveur virtuel (alias « instance ») dans votre compte personnel MCS. Dans l'App Store, vous devez sélectionner et installer une pile LAMP prête à l'emploi, qui est un ensemble de logiciels serveur (LAMP = Linux, Apache, MySQL, PHP) nécessaires au fonctionnement de la plupart des sites Web.

Cloud pour les associations : guide de migration
Cloud pour les associations : guide de migration
Cloud pour les associations : guide de migration
Sélectionnez la configuration de serveur appropriée et créez une nouvelle clé SSH. Après avoir cliqué sur le bouton « Installer », l'installation du serveur et de la pile LAMP commencera, cela prendra un certain temps. Le système vous proposera également de télécharger une clé privée sur votre ordinateur pour gérer la machine virtuelle via la console, enregistrez-la.

Après avoir installé l'application, configurons immédiatement le pare-feu, cela se fait également dans votre compte personnel : rendez-vous dans la rubrique « Cloud computing -> Machines virtuelles » et sélectionnez « Paramétrage du pare-feu » :

Cloud pour les associations : guide de migration
Vous devez ajouter une autorisation pour le trafic entrant via les ports 80 et 9997. Cela sera nécessaire à l'avenir pour installer des certificats SSL et travailler avec phpMyAdmin. En conséquence, l’ensemble de règles devrait ressembler à ceci :

Cloud pour les associations : guide de migration
Vous pouvez désormais vous connecter à votre serveur via la ligne de commande en utilisant le protocole SSH. Pour cela, tapez la commande suivante en pointant sur la clé SSH de votre ordinateur et l'adresse IP externe de votre serveur (vous la retrouverez dans la rubrique « Machines virtuelles ») :

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

Lors de la première connexion au serveur, il est recommandé d'y installer toutes les mises à jour actuelles et de le redémarrer. Pour ce faire, exécutez les commandes suivantes :

$ sudo apt-get update

Le système recevra une liste de mises à jour, les installera à l'aide de cette commande et suivra les instructions :

$ sudo apt-get upgrade

Après avoir installé les mises à jour, redémarrez le serveur :

$ sudo reboot

Étape 2 : Configurer des hôtes virtuels

De nombreuses organisations à but non lucratif doivent gérer plusieurs domaines ou sous-domaines en même temps (par exemple, un site Web principal et plusieurs pages de destination pour les campagnes promotionnelles, etc.). Tout cela peut être facilement placé sur un seul serveur en créant plusieurs hôtes virtuels.

Nous devons d’abord créer une structure de répertoires pour les sites qui seront affichés aux visiteurs. Créons quelques répertoires :

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

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

Et précisez le propriétaire de l'utilisateur actuel :

$ 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 contient le nom d'utilisateur sous lequel vous êtes actuellement connecté (par défaut, il s'agit du nom d'utilisateur ubuntu). L'utilisateur actuel possède désormais les répertoires public_html dans lesquels nous stockerons le contenu.

Nous devons également modifier légèrement les autorisations pour nous assurer que l'accès en lecture est autorisé au répertoire Web partagé et à tous les fichiers et dossiers qu'il contient. Ceci est nécessaire pour que les pages du site s'affichent correctement :

$ sudo chmod -R 755 /var/www

Votre serveur Web devrait maintenant disposer des autorisations dont il a besoin pour afficher le contenu. De plus, votre utilisateur a désormais la possibilité de créer du contenu dans les répertoires requis.

Il y a déjà un fichier index.php dans le répertoire /var/www/html, copions-le dans nos nouveaux répertoires - ce sera notre contenu pour l'instant :

$ 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

Vous devez maintenant vous assurer que l'utilisateur peut accéder à votre site. Pour ce faire, nous allons d'abord configurer les fichiers de l'hôte virtuel, qui déterminent la manière dont le serveur Web Apache répondra aux requêtes adressées aux différents domaines.

Par défaut, Apache dispose d'un fichier hôte virtuel 000-default.conf que nous pouvons utiliser comme point de départ. Nous allons copier ceci pour créer des fichiers d'hôte virtuel pour chacun de nos domaines. Nous allons commencer avec un domaine, le configurer, le copier dans un autre domaine, puis apporter à nouveau les modifications nécessaires.

La configuration par défaut d'Ubuntu nécessite que chaque fichier hôte virtuel ait une extension *.conf.

Commençons par copier le fichier du premier domaine :

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

Ouvrez un nouveau fichier dans un éditeur avec les droits root :

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

Modifiez les données comme suit, en spécifiant le port 80, vos données pour ServerAdmin, ServerName, ServerAlias, ainsi que le chemin d'accès au répertoire racine de votre site, enregistrez le fichier (Ctrl+X, puis 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 définit le domaine principal, qui doit correspondre au nom d'hôte virtuel. Ce doit être votre nom de domaine. Deuxième, ServerAlias, définit d'autres noms qui doivent être interprétés comme s'il s'agissait du domaine principal. Ceci est pratique pour utiliser des noms de domaine supplémentaires, par exemple en utilisant www.

Copions cette configuration pour un autre hôte et modifions-la également de la même manière :

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

Vous pouvez créer autant de répertoires et d’hôtes virtuels pour vos sites Web que vous le souhaitez ! Maintenant que nous avons créé nos fichiers d'hôte virtuel, nous devons les activer. Nous pouvons utiliser l'utilitaire a2ensite pour activer chacun de nos sites comme ceci :

$ sudo a2ensite a-dobra.ru.conf

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

Par défaut, le port 80 est fermé dans LAMP, et nous en aurons besoin plus tard pour installer un certificat SSL. Modifions donc immédiatement le fichier ports.conf puis redémarrons Apache :

$ sudo nano /etc/apache2/ports.conf

Ajoutez une nouvelle ligne et enregistrez le fichier pour qu'il ressemble à ceci :

Listen 80
Listen 443
Listen 9997

Après avoir terminé les réglages, vous devez redémarrer Apache pour que toutes les modifications prennent effet :

$ sudo systemctl reload apache2

Étape 3 : Configurer les noms de domaine

Ensuite, vous devez ajouter des enregistrements DNS qui pointeront vers votre nouveau serveur. Pour gérer les domaines, notre Arithmetic of Good Foundation utilise le service dns-master.ru, nous allons le montrer avec un exemple.

La création d'un enregistrement A pour le domaine principal est généralement indiquée comme suit (signe @):

Cloud pour les associations : guide de migration
L'enregistrement A pour les sous-domaines est généralement spécifié comme ceci :

Cloud pour les associations : guide de migration
L'adresse IP est l'adresse du serveur Linux que nous venons de créer. Vous pouvez spécifier TTL = 3600.

Après un certain temps, il sera possible de visiter votre site, mais pour l'instant uniquement via http://. Dans la prochaine étape, nous ajouterons le support https://.

Étape 4 : Configurer des certificats SSL gratuits

Vous pouvez obtenir gratuitement des certificats SSL Let's Encrypt pour votre site principal et tous les sous-domaines. Vous pouvez également configurer leur renouvellement automatique, ce qui est très pratique. Pour obtenir des certificats SSL, installez Certbot sur votre serveur :

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

Installez le package Certbot pour Apache à l'aide de apt:

$ sudo apt install python-certbot-apache 

Maintenant Certbot est prêt à être utilisé, exécutez la commande :

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

Cette commande exécute certbot, clés -d définir les noms des domaines pour lesquels le certificat doit être délivré.

Si c'est la première fois que vous lancez certbot, il vous sera demandé de saisir votre adresse e-mail et d'accepter les conditions d'utilisation du service. certbot contactera ensuite le serveur Let's Encrypt et vérifiera ensuite que vous contrôlez réellement le domaine pour lequel vous avez demandé le certificat.

Si tout s'est bien passé, certbot vous demandera comment vous souhaitez configurer la configuration 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):

Nous vous recommandons de sélectionner l'option 2 et d'appuyer sur ENTER. La configuration sera mise à jour et Apache sera redémarré pour appliquer les modifications.

Vos certificats sont maintenant téléchargés, installés et fonctionnels. Essayez de recharger votre site avec https:// et vous verrez l'icône de sécurité dans votre navigateur. Si vous testez votre serveur Test du serveur SSL Labs, il recevra la note A.

Les certificats Let's Encrypt ne sont valables que 90 jours, mais le package certbot que nous venons d'installer renouvellera automatiquement les certificats. Pour tester le processus de mise à jour, nous pouvons effectuer un essai à sec de certbot :

$ sudo certbot renew --dry-run 

Si vous ne voyez aucune erreur suite à l’exécution de cette commande, alors tout fonctionne !

Étape 5 : Accédez à MySQL et phpMyAdmin

De nombreux sites Web utilisent des bases de données. L'outil phpMyAdmin de gestion de base de données est déjà installé sur notre serveur. Pour y accéder, rendez-vous sur votre navigateur en utilisant un lien comme :

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

Le mot de passe pour l'accès root peut être obtenu dans votre compte personnel MCS (https://mcs.mail.ru/app/services/marketplace/apps/). N'oubliez pas de changer votre mot de passe root lors de votre première connexion !

Étape 6 : Configurer le téléchargement de fichiers via SFTP

Les développeurs trouveront pratique de télécharger des fichiers pour votre site Web via SFTP. Pour ce faire, nous allons créer un nouvel utilisateur, appelons-le webmaster :

$ sudo adduser webmaster

Le système vous demandera de définir un mot de passe et de saisir d'autres données.

Changer le propriétaire de l'annuaire avec votre site web :

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

Modifions maintenant la configuration SSH pour que le nouvel utilisateur n'ait accès qu'à SFTP et non au terminal SSH :

$ sudo nano /etc/ssh/sshd_config

Faites défiler jusqu'à la toute fin du fichier de configuration et ajoutez le bloc suivant :

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

Enregistrez le fichier et redémarrez le service :

$ sudo systemctl restart sshd

Vous pouvez désormais vous connecter au serveur via n'importe quel client SFTP, par exemple via FileZilla.

Total

  1. Vous savez maintenant comment créer de nouveaux répertoires et configurer des hôtes virtuels pour vos sites Web au sein du même serveur.
  2. Vous pouvez facilement créer les certificats SSL nécessaires – c'est gratuit et ils seront mis à jour automatiquement.
  3. Vous pouvez facilement travailler avec la base de données MySQL via le familier phpMyAdmin.
  4. La création de nouveaux comptes SFTP et la configuration des droits d'accès ne nécessitent pas beaucoup d'efforts. Ces comptes peuvent être transférés à des développeurs Web tiers et à des administrateurs de sites.
  5. N'oubliez pas de mettre à jour périodiquement le système et nous vous recommandons également de faire des sauvegardes - dans MCS, vous pouvez prendre des « instantanés » de l'ensemble du système en un seul clic, puis, si nécessaire, lancer des images entières.

Ressources utilisées qui peuvent être utiles :

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

Soit dit en passant, ici Vous pouvez lire sur VC comment notre fondation a déployé une plateforme d'éducation en ligne pour les orphelins basée sur le cloud MCS.

Source: habr.com

Ajouter un commentaire