Charity Cloud: Guide de migration



Il n'y a pas si longtemps, Mail.Ru Cloud Solutions (MCS) et le service Welcome Mail.Ru ont lancé le projet Cloud for Charity Foundations , grâce auquel les organisations à but non lucratif peuvent obtenir gratuitement les ressources de la plateforme cloud MCS. La fondation de bienfaisance Arithmetic of Good a participé au projet et déployé avec succès une partie de son infrastructure basée sur MCS.

Après validation, un NPO peut recevoir une alimentation virtuelle de MCS, mais un réglage ultérieur nécessite certaines qualifications. Dans cet article, nous voulons partager des instructions spécifiques pour la configuration d'un serveur basé sur Ubuntu Linux pour le site Web du fonds principal et un certain nombre de sous-domaines utilisant des certificats SSL gratuits. Pour beaucoup, ce sera un guide simple, mais nous espérons que notre expérience sera utile pour d'autres organisations à but non lucratif, et pas seulement.

FYI : que puis-je obtenir de MCS? 4 CPU, 32 Go de RAM, 1 To HDD, Ubuntu Linux OS, 500 Go de stockage d'objets.

Étape 1: démarrez le serveur virtuel


Commençons immédiatement et créons notre serveur virtuel (alias «instance») dans votre compte MCS personnel. Dans le magasin d'applications, vous devez sélectionner et installer une pile LAMP prête à l'emploi, qui est un complexe de logiciels serveur (LAMP = Linux, Apache, MySQL, PHP), qui est nécessaire pour lancer la plupart des sites Web.




Choisissez la configuration appropriée pour le serveur et créez une nouvelle clé SSH. Après avoir cliqué sur le bouton "Installer", le serveur et la pile LAMP commenceront à s'installer, cela prendra un certain temps. Le système proposera également de télécharger une clé privée sur l'ordinateur pour contrôler la machine virtuelle via la console, la sauvegarder.

Après avoir installé l'application, configurons immédiatement le pare-feu, cela se fait également dans votre compte personnel: allez dans la section "Cloud Computing -> Machines Virtuelles" et sélectionnez l'élément "Configurer le pare-feu":


Vous devez ajouter une autorisation pour le trafic entrant via les ports 80 et 9997. Cela est nécessaire à l'avenir pour installer des certificats SSL et pour travailler avec phpMyAdmin. Au final, l'ensemble de règles devrait ressembler à ceci:


Vous pouvez maintenant vous connecter à votre serveur via la ligne de commande en utilisant le protocole SSH. Pour ce faire, tapez la commande suivante, pointant vers la clé SSH sur votre ordinateur et l'adresse IP externe de votre serveur (vous pouvez la trouver dans la section "Machines virtuelles"):

$ ssh -i ////key.pem ubuntu@<ip_> 

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

 $ sudo apt-get update 

Le système recevra une liste des mises à jour, installez-les à l'aide de cette commande et suivez les instructions:

 $ sudo apt-get upgrade 

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

 $ sudo reboot 

Étape 2: configurer les hôtes virtuels


De nombreux OSBL doivent contenir plusieurs domaines ou sous-domaines en même temps (par exemple, le site principal et plusieurs pages de destination pour les campagnes promotionnelles, etc.). Tout cela peut être commodément hébergé sur un seul serveur en créant plusieurs hôtes virtuels.

Tout d'abord, nous devons 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 indiquez 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 

La variable $USER contient le nom de l'utilisateur avec lequel vous êtes actuellement connecté (par défaut, c'est l'utilisateur ubuntu ). L'utilisateur actuel possède maintenant les répertoires public_html dans lesquels nous stockons le contenu.

Nous devons également modifier un peu les autorisations pour nous assurer que l'accès en lecture est autorisé au répertoire Web partagé, à 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 doit maintenant disposer des autorisations nécessaires pour afficher le contenu. De plus, votre utilisateur a désormais la possibilité de créer du contenu dans les répertoires nécessaires.

Il existe 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, tout d'abord, nous allons configurer les fichiers hôtes virtuels, qui déterminent exactement comment le serveur Web Apache répondra aux demandes de différents domaines.

Par défaut, Apache a un fichier d'hôte virtuel 000-default.conf, que nous pouvons utiliser comme point de départ. Nous allons le copier pour créer des fichiers hôtes virtuels pour chacun de nos domaines. Nous allons commencer à partir d'un domaine, le configurer, le copier dans un autre domaine, puis effectuer à 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 l'éditeur avec les privilèges root:

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

Modifiez les données comme suit, en indiquant 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 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 définit le domaine principal, qui doit correspondre au nom de l'hôte virtuel. Ce doit être votre nom de domaine. Le second, 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.

Nous copions cette configuration pour un autre hôte et la modifions également par analogie:

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

Vous pouvez créer un nombre illimité de répertoires et d'hôtes virtuels pour vos sites Web! Maintenant que nous avons créé nos fichiers hôtes virtuels, nous devons les inclure. Nous pouvons utiliser l'utilitaire a2ensite pour activer chacun de nos sites comme suit:

 $ 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 à l'avenir pour installer un certificat SSL. Par conséquent, modifions immédiatement le fichier ports.conf, puis redémarrez 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 paramètres, vous devez redémarrer Apache pour que toutes les modifications prennent effet:

 $ sudo systemctl reload apache2 

Étape 3: configurer des noms de domaine


Ensuite, vous devez ajouter des enregistrements DNS qui pointeront vers votre nouveau serveur. Pour la gestion de domaine, notre Arithmetic of Good Foundation utilise le service dns-master.ru, montrons-le par exemple.

Le paramètre d'enregistrement A pour le domaine principal est généralement indiqué comme suit (signe @ ):


L'enregistrement A pour les sous-domaines est généralement indiqué comme suit:


L'adresse IP est l'adresse du serveur Linux que nous venons de créer. TTL peut spécifier = 3600.

Après un certain temps, il sera déjà possible d'accéder à votre site, mais jusqu'à présent uniquement via http:// . Dans l'étape suivante, nous ajouterons https:// support.

Étape 4: configurer des certificats SSL gratuits


Vous pouvez obtenir des certificats SSL gratuits 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 en utilisant apt :

 $ sudo apt install python-certbot-apache 

Certbot est maintenant prêt à l'emploi, nous exécutons la commande:

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

Cette commande exécute certbot, les commutateurs -d spécifient les noms de domaine pour lesquels le certificat doit être émis.

Si c'est la première fois que vous exécutez certbot, il vous sera demandé de saisir une adresse e-mail et d'accepter les conditions d'utilisation. Après cela, certbot contactera le serveur Let's Encrypt puis vérifiera que vous contrôlez vraiment 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 ENTRÉE. La configuration sera mise à jour et Apache redémarré pour appliquer les modifications.

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

Les certificats Let's Encrypt ne sont valables que pendant 90 jours, mais le package certbot que nous venons d'installer renouvellera automatiquement les certificats. Pour tester le processus de mise Ă  niveau, nous pouvons faire un certbot de dry run:

 $ sudo certbot renew --dry-run 

Si vous ne voyez aucune erreur résultant de cette commande, alors tout fonctionne!

Étape 5: accès à MySQL et phpMyAdmin


De nombreux sites Web utilisent des bases de données. L'outil phpMyAdmin pour la gestion des bases de données est déjà installé sur notre serveur. Pour y accéder, cliquez sur le lien de votre navigateur comme:

 https://<ip- >:9997 

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

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


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

 $ sudo adduser webmaster 

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

Changez 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 le fichier de configuration jusqu'à la fin 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 rechargez le service:

 $ sudo systemctl restart sshd 

Vous pouvez maintenant vous connecter au serveur via n'importe quel client pour SFTP, par exemple via FileZilla.

Résumé


  1. Vous savez maintenant comment créer de nouveaux répertoires et configurer des hôtes virtuels pour vos sites Web sur le 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 phpMyAdmin habituel.
  4. La création de nouveaux comptes SFTP et la définition des droits d'accès ne nécessiteront pas beaucoup d'efforts. Ces comptes peuvent être transférés à des développeurs Web tiers et à des administrateurs de site.
  5. N'oubliez pas de mettre à jour périodiquement le système, et nous vous recommandons également d'effectuer 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 pouvant ê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, vous pouvez lire sur VC comment notre fondation a lancé une plate-forme pour l'éducation en ligne des orphelins basée sur le cloud MCS.

Source: https://habr.com/ru/post/fr461155/


All Articles