Wolk foar goede doelen: Migraasjegids

Wolk foar goede doelen: Migraasjegids

Net lang lyn lansearren Mail.Ru Cloud Solutions (MCS) en de Dobro Mail.Ru-tsjinst it projekt "Wolk foar goede doelen”, troch hokker non-profit organisaasjes de boarnen fan it MCS-wolkplatfoarm fergees kinne krije. Stichting Goede doel"Aritmetyk fan goedens» naam diel oan it projekt en hat mei súkses in diel fan har ynfrastruktuer basearre op MCS ynset.

Nei it trochjaan fan falidaasje kin in NPO firtuele kapasiteit ûntfange fan MCS, mar fierdere konfiguraasje fereasket bepaalde kwalifikaasjes. Yn dit materiaal wolle wy spesifike ynstruksjes diele foar it ynstellen fan in Ubuntu Linux-basearre server om de webside fan 'e haadstichting en in oantal subdomeinen út te fieren mei fergese SSL-sertifikaten. Foar in protte sil dit in ienfâldige gids wêze, mar wy hoopje dat ús ûnderfining nuttich sil wêze foar oare non-profit organisaasjes, en net allinich.

FYI: Wat kinne jo krije fan MCS? 4 CPU's, 32 GB RAM, 1 TB HDD, Ubuntu Linux OS, 500 GB foarwerp opslach.

Stap 1: start de firtuele tsjinner

Litte wy direkt nei it punt komme en ús firtuele server (aka "eksimplaar") oanmeitsje yn jo MCS-persoanlike akkount. Yn 'e app store moatte jo in klear makke LAMP-stapel selektearje en ynstallearje, dat is in set serversoftware (LAMP = Linux, Apache, MySQL, PHP) nedich om de measte websiden út te fieren.

Wolk foar goede doelen: Migraasjegids
Wolk foar goede doelen: Migraasjegids
Wolk foar goede doelen: Migraasjegids
Selektearje de passende serverkonfiguraasje en meitsje in nije SSH-kaai. Nei it klikken op de knop "Ynstallearje", sil de ynstallaasje fan 'e server en LAMP-stapel begjinne, dit sil wat tiid duorje. It systeem sil ek oanbiede om in privee kaai nei jo kompjûter te downloaden om de firtuele masine te behearjen fia de konsole, bewarje it.

Lit ús nei it ynstallearjen fan de applikaasje de firewall daliks ynstelle, dit wurdt ek dien yn jo persoanlike akkount: gean nei de seksje "Cloud Computing -> Firtuele masines" en selektearje "De firewall ynstelle":

Wolk foar goede doelen: Migraasjegids
Jo moatte tastimming tafoegje foar ynkommend ferkear fia haven 80 en 9997. Dit is yn 'e takomst nedich om SSL-sertifikaten te ynstallearjen en te wurkjen mei phpMyAdmin. As gefolch, de set fan regels moat der sa útsjen:

Wolk foar goede doelen: Migraasjegids
No kinne jo ferbine mei jo tsjinner fia de kommandorigel mei it SSH-protokol. Om dit te dwaan, typ it folgjende kommando, ferwizend nei de SSH-kaai op jo kompjûter en it eksterne IP-adres fan jo tsjinner (jo kinne it fine yn 'e seksje "Firtuele masines"):

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

By it ferbinen mei de tsjinner foar de earste kear, is it oan te rieden om alle aktuele updates derop te ynstallearjen en it opnij te starten. Om dit te dwaan, útfiere de folgjende kommando's:

$ sudo apt-get update

It systeem sil in list mei updates ûntfange, ynstallearje se mei dit kommando en folgje de ynstruksjes:

$ sudo apt-get upgrade

Nei it ynstallearjen fan de fernijings, start de server opnij:

$ sudo reboot

Stap 2: Stel firtuele hosts yn

In protte nonprofits moatte tagelyk ferskate domeinen of subdomeinen ûnderhâlde (bygelyks in haadwebside en ferskate lâningssiden foar promoasjekampanjes, ensfh.). Dit alles kin maklik op ien server pleatst wurde troch ferskate firtuele hosts te meitsjen.

Earst moatte wy in mapstruktuer meitsje foar de siden dy't sille wurde werjûn oan besikers. Litte wy wat mappen oanmeitsje:

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

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

En spesifisearje de eigner fan de hjoeddeistige brûker:

$ 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 befettet de brûkersnamme wêrunder jo op it stuit binne oanmeld (standert is dit de brûker ubuntu). No hat de hjoeddeistige brûker de public_html-mappen wêr't wy de ynhâld sille opslaan.

Wy moatte ek de tagongsrjochten in bytsje bewurkje om derfoar te soargjen dat lês tagong is tastien foar de dielde webmap en alle bestannen en mappen dy't it befettet. Dit is nedich foar de side-siden om goed wer te jaan:

$ sudo chmod -R 755 /var/www

Jo webserver moat no de tagongsrjochten hawwe dy't it nedich is om de ynhâld wer te jaan. Derneist hat jo brûker no de mooglikheid om ynhâld te meitsjen yn 'e fereaske mappen.

D'r is al in index.php-bestân yn 'e /var/www/html-map, litte wy it kopiearje nei ús nije mappen - dit sil ús ynhâld foar no wêze:

$ 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

No moatte jo derfoar soargje dat de brûker tagong kin ta jo side. Om dit te dwaan, sille wy earst de firtuele hostbestannen konfigurearje, dy't bepale hoe't de Apache-webserver reagearret op fersiken nei ferskate domeinen.

Standert hat Apache in firtuele hostbestân 000-default.conf dat wy as útgongspunt brûke kinne. Wy sille dit kopiearje om firtuele hostbestannen te meitsjen foar elk fan ús domeinen. Wy sille begjinne mei ien domein, konfigurearje it, kopiearje it nei in oar domein, en dan meitsje de nedige bewurkings wer.

De standertkonfiguraasje fan Ubuntu fereasket dat elk firtuele hostbestân in *.conf-útwreiding hat.

Litte wy begjinne mei it kopiearjen fan it bestân foar it earste domein:

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

Iepenje in nij bestân yn in bewurker mei rootrjochten:

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

Bewurkje de gegevens as folget, spesifisearje haven 80, jo gegevens foar ServerAdmin, ServerName, ServerAlias, en ek it paad nei de root-map fan jo side, bewarje it bestân (Ctrl+X, dan 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 it primêre domein yn, dat moat oerienkomme mei de firtuele hostnamme. Dit moat jo domeinnamme wêze. Twadde, ServerAlias, definiearret oare nammen dy't ynterpretearre wurde moatte as wie it it primêre domein. Dit is handich foar it brûken fan ekstra domeinnammen, bygelyks mei www.

Litte wy dizze konfiguraasje foar in oare host kopiearje en it ek op deselde manier bewurkje:

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

Jo kinne safolle mappen en firtuele hosts foar jo websiden meitsje as jo wolle! No't wy ús firtuele hostbestannen makke hawwe, moatte wy se ynskeakelje. Wy kinne it a2ensite-hulpprogramma brûke om elk fan ús siden sa yn te skeakeljen:

$ sudo a2ensite a-dobra.ru.conf

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

Standert is poarte 80 sluten yn LAMP, en wy sille it letter nedich wêze om in SSL-sertifikaat te ynstallearjen. Dus litte wy it ports.conf-bestân fuortendaliks bewurkje en Apache opnij starte:

$ sudo nano /etc/apache2/ports.conf

Foegje in nije rigel ta en bewarje it bestân sadat it der sa útsjocht:

Listen 80
Listen 443
Listen 9997

Nei it foltôgjen fan de ynstellings moatte jo Apache opnij starte foar alle wizigingen om effekt te nimmen:

$ sudo systemctl reload apache2

Stap 3: Stel domeinnammen yn

Folgjende moatte jo DNS-records tafoegje dy't sille ferwize nei jo nije tsjinner. Om domeinen te behearjen, brûkt ús Arithmetic of Good Foundation de tsjinst dns-master.ru, wy sille it sjen litte mei in foarbyld.

It ynstellen fan in A-record foar it haaddomein wurdt normaal as folget oanjûn (teken @):

Wolk foar goede doelen: Migraasjegids
It A-record foar subdomeinen wurdt normaal spesifisearre as dit:

Wolk foar goede doelen: Migraasjegids
It IP-adres is it adres fan de Linux-tsjinner dy't wy krekt makke hawwe. Jo kinne TTL = 3600 opjaan.

Nei in skoftke sil it mooglik wêze om jo side te besykjen, mar foar no allinich troch http://. Yn 'e folgjende stap sille wy stipe tafoegje https://.

Stap 4: Stel fergese SSL-sertifikaten yn

Jo kinne fergees Let's Encrypt SSL-sertifikaten krije foar jo haadside en alle subdomeinen. Jo kinne har automatyske fernijing ek ynstelle, wat heul handich is. Om SSL-sertifikaten te krijen, ynstallearje Certbot op jo tsjinner:

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

Ynstallearje it Certbot-pakket foar Apache mei apt:

$ sudo apt install python-certbot-apache 

No is Certbot klear om te brûken, fier it kommando út:

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

Dit kommando rint certbot, kaaien -d definiearje de nammen fan 'e domeinen wêrfoar it sertifikaat moat wurde útjûn.

As dit de earste kear is dat jo certbot starte, wurdt jo frege om jo e-postadres yn te fieren en akkoard te gean mei de gebrûksbetingsten fan 'e tsjinst. certbot sil dan kontakt opnimme mei de Let's Encrypt-tsjinner en ferifiearje dan dat jo it domein werklik kontrolearje wêrfoar jo it sertifikaat hawwe oanfrege.

As alles goed gie, sil certbot freegje hoe't jo de HTTPS-konfiguraasje wolle konfigurearje:

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

Wy riede oan om opsje 2 te selektearjen en op ENTER te drukken. De konfiguraasje sil bywurke wurde en Apache sil opnij starte om de wizigingen oan te passen.

Jo sertifikaten binne no ynladen, ynstalleare en wurkje. Besykje jo side opnij te laden mei https:// en jo sille it befeiligingspictogram yn jo blêder sjen. As jo ​​test jo tsjinner SSL Labs Server Test, hy krijt in A-graad.

Let's Encrypt-sertifikaten binne allinich jildich foar 90 dagen, mar it certbot-pakket dat wy krekt ynstalleare sille sertifikaten automatysk fernije. Om it fernijingsproses te testen, kinne wy ​​​​in droege run fan certbot dwaan:

$ sudo certbot renew --dry-run 

As jo ​​​​gjin flaters sjogge as gefolch fan it útfieren fan dit kommando, dan wurket alles!

Stap 5: Tagong ta MySQL en phpMyAdmin

In protte websiden brûke databases. It phpMyAdmin-ark foar databasebehear is al ynstalleare op ús server. Om tagong te krijen, gean nei jo browser mei in keppeling lykas:

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

It wachtwurd foar root tagong kin krigen wurde yn jo MCS persoanlike akkount (https://mcs.mail.ru/app/services/marketplace/apps/). Ferjit net om jo root-wachtwurd te feroarjen de earste kear dat jo ynlogge!

Stap 6: Stel bestân upload fia SFTP

Untwikkelders sille it handich fine om bestannen foar jo webside te uploaden fia SFTP. Om dit te dwaan, meitsje wy in nije brûker, neam him webmaster:

$ sudo adduser webmaster

It systeem sil jo freegje om in wachtwurd yn te stellen en wat oare gegevens yn te fieren.

De eigner fan 'e map feroarje mei jo webside:

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

Litte wy no de SSH-konfiguraasje feroarje, sadat de nije brûker allinich tagong hat ta SFTP en net it SSH-terminal:

$ sudo nano /etc/ssh/sshd_config

Rôlje nei it heule ein fan it konfiguraasjetriem en foegje it folgjende blok ta:

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

Bewarje it bestân en start de tsjinst opnij:

$ sudo systemctl restart sshd

No kinne jo ferbine mei de tsjinner fia elke SFTP-kliïnt, bygelyks fia FileZilla.

It resultaat

  1. No wite jo hoe't jo nije mappen kinne oanmeitsje en firtuele hosts foar jo websiden yn deselde server konfigurearje.
  2. Jo kinne maklik de nedige SSL-sertifikaten oanmeitsje - it is fergees, en se wurde automatysk bywurke.
  3. Jo kinne maklik wurkje mei de MySQL-database fia de bekende phpMyAdmin.
  4. It oanmeitsjen fan nije SFTP-akkounts en it ynstellen fan tagongsrjochten fereasket net folle muoite. Sokke akkounts kinne wurde oerdroegen oan webûntwikkelders en sidebehearders fan tredden.
  5. Ferjit net om it systeem periodyk te aktualisearjen, en wy riede ek oan om backups te meitsjen - yn MCS kinne jo "snapshots" nimme fan it heule systeem mei ien klik, en dan, as nedich, folsleine ôfbyldings starte.

Brûkte boarnen dy't nuttich kinne wêze:

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

By de manier, hjir Jo kinne op VC lêze hoe't ús stifting in platfoarm ynset foar online ûnderwiis foar weesbern basearre op de MCS-wolk.

Boarne: www.habr.com

Add a comment