Cloud voor goede doelen: migratiegids

Cloud voor goede doelen: migratiegids

Nog niet zo lang geleden lanceerden Mail.Ru Cloud Solutions (MCS) en de Dobro Mail.Ru-service het project “Cloud voor goede doelen”, waardoor non-profitorganisaties gratis de middelen van het MCS-cloudplatform kunnen verkrijgen. Liefdadigheidsinstelling "Rekenkunde van goedheid» nam deel aan het project en implementeerde met succes een deel van zijn infrastructuur op basis van MCS.

Na het behalen van de validatie kan een NPO virtuele capaciteit ontvangen van MCS, maar verdere configuratie vereist bepaalde kwalificaties. In dit materiaal willen we specifieke instructies delen voor het opzetten van een Ubuntu Linux-gebaseerde server om de hoofdwebsite van de stichting en een aantal subdomeinen uit te voeren met behulp van gratis SSL-certificaten. Voor velen zal dit een eenvoudige handleiding zijn, maar we hopen dat onze ervaring nuttig zal zijn voor andere non-profitorganisaties, en niet alleen.

FYI: Wat kun je krijgen van MCS? 4 CPU's, 32 GB RAM, 1 TB HDD, Ubuntu Linux OS, 500 GB objectopslag.

Stap 1: start de virtuele server

Laten we meteen ter zake komen en onze virtuele server (ook wel “instance” genoemd) aanmaken in uw persoonlijke MCS-account. In de app store moet je een kant-en-klare LAMP-stack selecteren en installeren. Dit is een set serversoftware (LAMP = Linux, Apache, MySQL, PHP) die nodig is om de meeste websites te laten draaien.

Cloud voor goede doelen: migratiegids
Cloud voor goede doelen: migratiegids
Cloud voor goede doelen: migratiegids
Selecteer de juiste serverconfiguratie en maak een nieuwe SSH-sleutel. Nadat u op de knop “Installeren” hebt geklikt, begint de installatie van de server en de LAMP-stack, dit zal enige tijd duren. Het systeem biedt ook aan om een ​​privésleutel naar uw computer te downloaden om de virtuele machine via de console te beheren en op te slaan.

Laten we na het installeren van de applicatie meteen de firewall instellen, dit gebeurt ook in uw persoonlijke account: ga naar de sectie “Cloud computing -> Virtuele machines” en selecteer “Instellen van de firewall”:

Cloud voor goede doelen: migratiegids
U moet toestemming toevoegen voor inkomend verkeer via poort 80 en 9997. Dit is in de toekomst nodig om SSL-certificaten te installeren en met phpMyAdmin te werken. Als gevolg hiervan zou de set regels er als volgt uit moeten zien:

Cloud voor goede doelen: migratiegids
Nu kunt u via de opdrachtregel verbinding maken met uw server met behulp van het SSH-protocol. Om dit te doen typt u het volgende commando, wijzend naar de SSH-sleutel op uw computer en het externe IP-adres van uw server (u kunt dit vinden in de sectie “Virtuele machines”):

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

Wanneer u voor de eerste keer verbinding maakt met de server, wordt aanbevolen om alle huidige updates erop te installeren en deze opnieuw op te starten. Om dit te doen, voert u de volgende opdrachten uit:

$ sudo apt-get update

Het systeem ontvangt een lijst met updates, installeer deze met deze opdracht en volg de instructies:

$ sudo apt-get upgrade

Nadat u de updates hebt geïnstalleerd, start u de server opnieuw op:

$ sudo reboot

Stap 2: Stel virtuele hosts in

Veel non-profitorganisaties moeten meerdere domeinen of subdomeinen tegelijkertijd onderhouden (bijvoorbeeld een hoofdwebsite en verschillende landingspagina's voor promotiecampagnes, enz.). Dit alles kan gemakkelijk op één server worden geplaatst door meerdere virtuele hosts te creëren.

Eerst moeten we een directorystructuur maken voor de sites die aan bezoekers worden weergegeven. Laten we een aantal mappen maken:

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

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

En specificeer de eigenaar van de huidige gebruiker:

$ 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

Variabel $USER bevat de gebruikersnaam waarmee u momenteel bent ingelogd (standaard is dit de user ubuntu). Nu is de huidige gebruiker eigenaar van de public_html-mappen waar we de inhoud zullen opslaan.

We moeten ook de machtigingen een beetje aanpassen om ervoor te zorgen dat leestoegang is toegestaan ​​tot de gedeelde webmap en alle bestanden en mappen die deze bevat. Dit is nodig om de sitepagina's correct weer te geven:

$ sudo chmod -R 755 /var/www

Uw webserver zou nu de benodigde rechten moeten hebben om de inhoud weer te geven. Bovendien heeft uw gebruiker nu de mogelijkheid om inhoud in de vereiste mappen aan te maken.

Er is al een index.php-bestand in de map /var/www/html, laten we het naar onze nieuwe mappen kopiëren - dit zal voorlopig onze inhoud zijn:

$ 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

Nu moet u ervoor zorgen dat de gebruiker toegang heeft tot uw site. Om dit te doen, zullen we eerst de virtuele hostbestanden configureren, die bepalen hoe de Apache-webserver zal reageren op verzoeken aan verschillende domeinen.

Standaard heeft Apache een virtueel hostbestand 000-default.conf dat we als uitgangspunt kunnen gebruiken. We gaan dit kopiëren om virtuele hostbestanden te maken voor elk van onze domeinen. We beginnen met één domein, configureren het, kopiëren het naar een ander domein en voeren vervolgens opnieuw de nodige bewerkingen uit.

De standaardconfiguratie van Ubuntu vereist dat elk virtueel hostbestand de extensie *.conf heeft.

Laten we beginnen met het kopiëren van het bestand voor het eerste domein:

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

Open een nieuw bestand in een editor met rootrechten:

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

Bewerk de gegevens als volgt, waarbij u poort 80 specificeert, uw gegevens voor ServerAdmin, ServerName, ServerAlias, evenals het pad naar de hoofdmap van uw site, slaat u het bestand op (Ctrl+X en vervolgens 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 stelt het primaire domein in, dat moet overeenkomen met de virtuele hostnaam. Dit moet uw domeinnaam zijn. Seconde, ServerAlias, definieert andere namen die moeten worden geïnterpreteerd alsof dit het primaire domein is. Dit is handig als u extra domeinnamen wilt gebruiken, bijvoorbeeld via www.

Laten we deze configuratie voor een andere host kopiëren en deze ook op dezelfde manier bewerken:

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

U kunt zoveel mappen en virtuele hosts voor uw websites maken als u wilt! Nu we onze virtuele hostbestanden hebben gemaakt, moeten we ze inschakelen. We kunnen het hulpprogramma a2ensite gebruiken om al onze sites als volgt in te schakelen:

$ sudo a2ensite a-dobra.ru.conf

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

Poort 80 is standaard gesloten in LAMP en we hebben deze later nodig om een ​​SSL-certificaat te installeren. Laten we dus onmiddellijk het bestand ports.conf bewerken en vervolgens Apache opnieuw opstarten:

$ sudo nano /etc/apache2/ports.conf

Voeg een nieuwe regel toe en sla het bestand op, zodat het er als volgt uitziet:

Listen 80
Listen 443
Listen 9997

Nadat u de instellingen hebt voltooid, moet u Apache opnieuw opstarten om alle wijzigingen door te voeren:

$ sudo systemctl reload apache2

Stap 3: Domeinnamen instellen

Vervolgens moet u DNS-records toevoegen die naar uw nieuwe server verwijzen. Voor het beheer van domeinen maakt onze Arithmetic of Good Foundation gebruik van de service dns-master.ru, we zullen dit met een voorbeeld laten zien.

Het instellen van een A-record voor het hoofddomein wordt doorgaans als volgt aangegeven (sign @):

Cloud voor goede doelen: migratiegids
Het A-record voor subdomeinen wordt meestal als volgt gespecificeerd:

Cloud voor goede doelen: migratiegids
Het IP-adres is het adres van de Linux-server die we zojuist hebben gemaakt. U kunt TTL = 3600 opgeven.

Na enige tijd is het mogelijk om uw site te bezoeken, maar voorlopig alleen via http://. In de volgende stap zullen we ondersteuning toevoegen https://.

Stap 4: Stel gratis SSL-certificaten in

U kunt gratis Let's Encrypt SSL-certificaten krijgen voor uw hoofdsite en alle subdomeinen. Je kunt ook hun automatische verlenging configureren, wat erg handig is. Om SSL-certificaten te verkrijgen, installeert u Certbot op uw server:

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

Installeer het Certbot-pakket voor Apache met behulp van apt:

$ sudo apt install python-certbot-apache 

Nu Certbot klaar is voor gebruik, voert u de opdracht uit:

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

Met deze opdracht wordt certbot, sleutels uitgevoerd -d definieer de namen van de domeinen waarvoor het certificaat moet worden uitgegeven.

Als dit de eerste keer is dat u certbot start, wordt u gevraagd uw e-mailadres in te voeren en akkoord te gaan met de gebruiksvoorwaarden van de dienst. certbot zal dan contact opnemen met de Let's Encrypt-server en vervolgens verifiëren dat u daadwerkelijk het domein beheert waarvoor u het certificaat heeft aangevraagd.

Als alles goed is gegaan, zal certbot vragen hoe je de HTTPS-configuratie wilt configureren:

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):

Wij raden u aan optie 2 te selecteren en op ENTER te drukken. De configuratie wordt bijgewerkt en Apache wordt opnieuw opgestart om de wijzigingen toe te passen.

Uw certificaten zijn nu gedownload, geïnstalleerd en werken. Probeer uw site opnieuw te laden met https:// en u zult het beveiligingspictogram in uw browser zien. Als u uw server test SSL Labs-servertest, krijgt hij een A-cijfer.

Let's Encrypt-certificaten zijn slechts 90 dagen geldig, maar het certbot-pakket dat we zojuist hebben geïnstalleerd, zal de certificaten automatisch vernieuwen. Om het updateproces te testen, kunnen we een testrun van certbot uitvoeren:

$ sudo certbot renew --dry-run 

Als u geen fouten ziet als gevolg van het uitvoeren van deze opdracht, werkt alles!

Stap 5: Toegang tot MySQL en phpMyAdmin

Veel websites maken gebruik van databases. De phpMyAdmin-tool voor databasebeheer is al op onze server geïnstalleerd. Om toegang te krijgen, gaat u naar uw browser via een link zoals:

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

Het wachtwoord voor root-toegang kunt u verkrijgen in uw persoonlijke MCS-account (https://mcs.mail.ru/app/services/marketplace/apps/). Vergeet niet uw rootwachtwoord te wijzigen wanneer u voor de eerste keer inlogt!

Stap 6: Stel het uploaden van bestanden via SFTP in

Ontwikkelaars zullen het handig vinden om bestanden voor uw website te uploaden via SFTP. Om dit te doen, zullen we een nieuwe gebruiker aanmaken, hem webmaster noemen:

$ sudo adduser webmaster

Het systeem zal u vragen een wachtwoord in te stellen en enkele andere gegevens in te voeren.

De eigenaar van de map met uw website wijzigen:

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

Laten we nu de SSH-configuratie wijzigen zodat de nieuwe gebruiker alleen toegang heeft tot SFTP en niet tot de SSH-terminal:

$ sudo nano /etc/ssh/sshd_config

Blader naar het einde van het configuratiebestand en voeg het volgende blok toe:

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

Sla het bestand op en start de service opnieuw:

$ sudo systemctl restart sshd

Nu kunt u via elke SFTP-client verbinding maken met de server, bijvoorbeeld via FileZilla.

Totaal

  1. Nu weet u hoe u nieuwe mappen kunt maken en virtuele hosts voor uw websites binnen dezelfde server kunt configureren.
  2. U kunt eenvoudig de benodigde SSL-certificaten aanmaken. Het is gratis en ze worden automatisch bijgewerkt.
  3. Via het vertrouwde phpMyAdmin kunt u gemakkelijk met de MySQL database werken.
  4. Het aanmaken van nieuwe SFTP-accounts en het instellen van toegangsrechten kost niet veel moeite. Dergelijke accounts kunnen worden overgedragen aan externe webontwikkelaars en sitebeheerders.
  5. Vergeet niet om het systeem regelmatig bij te werken, en we raden ook aan om back-ups te maken - in MCS kunt u met één klik "snapshots" van het hele systeem maken en vervolgens, indien nodig, hele afbeeldingen starten.

Gebruikte bronnen die nuttig kunnen zijn:

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

Overigens hier Op VC leest u hoe onze stichting een platform voor online onderwijs voor weeskinderen heeft ingezet op basis van de MCS cloud.

Bron: www.habr.com

Voeg een reactie