Cloud pentru organizații caritabile: Ghid de migrare

Cloud pentru organizații caritabile: Ghid de migrare

Nu cu mult timp în urmă, Mail.Ru Cloud Solutions (MCS) și serviciul Dobro Mail.Ru au lansat proiectul „Cloud pentru organizații de caritate”, datorită căruia organizațiile non-profit pot obține gratuit resursele platformei cloud MCS. Fundație caritabilă "Aritmetica bunătății» a participat la proiect și a implementat cu succes o parte din infrastructura sa bazată pe MCS.

După trecerea validării, un NPO poate primi capacitate virtuală de la MCS, dar configurarea ulterioară necesită anumite calificări. În acest material, dorim să împărtășim instrucțiuni specifice pentru configurarea unui server bazat pe Ubuntu Linux pentru a rula site-ul principal al fundației și o serie de subdomenii folosind certificate SSL gratuite. Pentru mulți, acesta va fi un ghid simplu, dar sperăm că experiența noastră va fi de folos altor organizații non-profit și nu numai.

FYI: Ce puteți obține de la MCS? 4 procesoare, 32 GB RAM, 1 TB HDD, Ubuntu Linux OS, 500 GB stocare obiecte.

Pasul 1: lansați serverul virtual

Să trecem direct la obiect și să creăm serverul nostru virtual (numit „instanță”) în contul tău personal MCS. În magazinul de aplicații, trebuie să selectați și să instalați o stivă LAMP gata făcută, care este un set de software de server (LAMP = Linux, Apache, MySQL, PHP) necesar pentru a rula majoritatea site-urilor web.

Cloud pentru organizații caritabile: Ghid de migrare
Cloud pentru organizații caritabile: Ghid de migrare
Cloud pentru organizații caritabile: Ghid de migrare
Selectați configurația corespunzătoare a serverului și creați o nouă cheie SSH. După ce faceți clic pe butonul „Instalare”, instalarea serverului și a stivei LAMP va începe, acest lucru va dura ceva timp. Sistemul va oferi, de asemenea, să descărcați o cheie privată pe computer pentru a gestiona mașina virtuală prin consolă, salvați-o.

După instalarea aplicației, să instalăm imediat firewall-ul, acest lucru se face și în contul personal: accesați secțiunea „Cloud computing -> Virtual machines” și selectați „Setting the firewall”:

Cloud pentru organizații caritabile: Ghid de migrare
Trebuie să adăugați permisiunea pentru traficul de intrare prin porturile 80 și 9997. Acest lucru este necesar în viitor pentru a instala certificate SSL și pentru a lucra cu phpMyAdmin. Ca rezultat, setul de reguli ar trebui să arate astfel:

Cloud pentru organizații caritabile: Ghid de migrare
Acum vă puteți conecta la server prin linia de comandă folosind protocolul SSH. Pentru a face acest lucru, tastați următoarea comandă, indicând cheia SSH de pe computer și adresa IP externă a serverului dvs. (o puteți găsi în secțiunea „Mașini virtuale”):

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

Când vă conectați la server pentru prima dată, se recomandă să instalați toate actualizările curente pe acesta și să îl reporniți. Pentru a face acest lucru, executați următoarele comenzi:

$ sudo apt-get update

Sistemul va primi o listă de actualizări, le va instala folosind această comandă și va urma instrucțiunile:

$ sudo apt-get upgrade

După instalarea actualizărilor, reporniți serverul:

$ sudo reboot

Pasul 2: Configurați gazde virtuale

Multe organizații nonprofit trebuie să mențină mai multe domenii sau subdomenii în același timp (de exemplu, un site web principal și mai multe pagini de destinație pentru campanii promoționale etc.). Toate acestea pot fi plasate convenabil pe un singur server prin crearea mai multor gazde virtuale.

Mai întâi trebuie să creăm o structură de directoare pentru site-urile care vor fi afișate vizitatorilor. Să creăm câteva directoare:

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

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

Și specificați proprietarul utilizatorului curent:

$ 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

variabil $USER conține numele de utilizator sub care sunteți conectat în prezent (în mod implicit acesta este utilizatorul ubuntu). Acum utilizatorul actual deține directoarele public_html unde vom stoca conținutul.

De asemenea, trebuie să edităm puțin permisiunile pentru a ne asigura că accesul la citire este permis la directorul web partajat și la toate fișierele și folderele pe care le conține. Acest lucru este necesar pentru ca paginile site-ului să se afișeze corect:

$ sudo chmod -R 755 /var/www

Serverul dvs. web ar trebui să aibă acum permisiunile de care are nevoie pentru a afișa conținutul. În plus, utilizatorul dvs. are acum capacitatea de a crea conținut în directoarele necesare.

Există deja un fișier index.php în directorul /var/www/html, să-l copiem în noile noastre directoare - acesta va fi conținutul nostru deocamdată:

$ 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

Acum trebuie să vă asigurați că utilizatorul poate accesa site-ul dvs. Pentru a face acest lucru, vom configura mai întâi fișierele gazdă virtuală, care determină modul în care serverul web Apache va răspunde solicitărilor către diferite domenii.

În mod implicit, Apache are un fișier gazdă virtuală 000-default.conf pe care îl putem folosi ca punct de plecare. Vom copia acest lucru pentru a crea fișiere gazdă virtuală pentru fiecare dintre domeniile noastre. Vom începe cu un domeniu, îl vom configura, îl vom copia pe alt domeniu și apoi vom face din nou modificările necesare.

Configurația implicită a Ubuntu necesită ca fiecare fișier gazdă virtuală să aibă o extensie *.conf.

Să începem prin a copia fișierul pentru primul domeniu:

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

Deschideți un fișier nou într-un editor cu drepturi root:

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

Editați datele după cum urmează, specificând portul 80, pentru datele dvs ServerAdmin, ServerName, ServerAlias, precum și calea către directorul rădăcină al site-ului dvs., salvați fișierul (Ctrl+X, apoi 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 setează domeniul primar, care trebuie să se potrivească cu numele gazdei virtuale. Acesta trebuie să fie numele dvs. de domeniu. Al doilea, ServerAlias, definește alte nume care ar trebui interpretate ca și cum ar fi domeniul principal. Acest lucru este convenabil pentru utilizarea numelor de domenii suplimentare, de exemplu folosind www.

Să copiem această configurație pentru o altă gazdă și, de asemenea, să o edităm în același mod:

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

Puteți crea oricâte directoare și gazde virtuale pentru site-urile dvs. web doriți! Acum că am creat fișierele noastre gazdă virtuală, trebuie să le activăm. Putem folosi utilitarul a2ensite pentru a activa fiecare dintre site-urile noastre astfel:

$ sudo a2ensite a-dobra.ru.conf

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

În mod implicit, portul 80 este închis în LAMP și vom avea nevoie de el mai târziu pentru a instala un certificat SSL. Deci, să edităm imediat fișierul ports.conf și apoi să repornim Apache:

$ sudo nano /etc/apache2/ports.conf

Adăugați o linie nouă și salvați fișierul astfel încât să arate astfel:

Listen 80
Listen 443
Listen 9997

După finalizarea setărilor, trebuie să reporniți Apache pentru ca toate modificările să aibă efect:

$ sudo systemctl reload apache2

Pasul 3: Configurați nume de domenii

Apoi, trebuie să adăugați înregistrări DNS care vor indica noul dvs. server. Pentru a gestiona domenii, Fundația noastră Arithmetic of Good folosește serviciul dns-master.ru, îl vom arăta cu un exemplu.

Configurarea unei înregistrări A pentru domeniul principal este de obicei indicată după cum urmează (semn @):

Cloud pentru organizații caritabile: Ghid de migrare
Înregistrarea A pentru subdomenii este de obicei specificată astfel:

Cloud pentru organizații caritabile: Ghid de migrare
Adresa IP este adresa serverului Linux pe care tocmai l-am creat. Puteți specifica TTL = 3600.

După ceva timp, va fi posibil să vă vizitați site-ul, dar deocamdată doar prin intermediul http://. În pasul următor vom adăuga suport https://.

Pasul 4: Configurați certificate SSL gratuite

Puteți obține certificate SSL gratuite Let's Encrypt pentru site-ul dvs. principal și pentru toate subdomeniile. De asemenea, puteți configura reînnoirea automată a acestora, ceea ce este foarte convenabil. Pentru a obține certificate SSL, instalați Certbot pe serverul dvs.:

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

Instalați pachetul Certbot pentru Apache folosind apt:

$ sudo apt install python-certbot-apache 

Acum Certbot este gata de utilizare, rulați comanda:

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

Această comandă rulează certbot, chei -d definiți numele domeniilor pentru care trebuie eliberat certificatul.

Dacă este prima dată când lansați certbot, vi se va cere să introduceți adresa de e-mail și să acceptați termenii de utilizare ai serviciului. certbot va contacta apoi serverul Let's Encrypt și apoi va verifica dacă controlați de fapt domeniul pentru care ați solicitat certificatul.

Dacă totul a mers bine, certbot vă va întreba cum doriți să configurați configurația 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):

Vă recomandăm să selectați opțiunea 2 și să apăsați ENTER. Configurația va fi actualizată și Apache va fi repornit pentru a aplica modificările.

Certificatele dumneavoastră sunt acum descărcate, instalate și funcționează. Încercați să vă reîncărcați site-ul cu https:// și veți vedea pictograma de securitate în browser. Dacă îți testezi serverul Test de server SSL Labs, va primi nota A.

Certificatele Let's Encrypt sunt valabile doar 90 de zile, dar pachetul certbot pe care tocmai l-am instalat va reînnoi automat certificatele. Pentru a testa procesul de actualizare, putem face o rulare uscată a certbot:

$ sudo certbot renew --dry-run 

Dacă nu vedeți nicio eroare ca urmare a rulării acestei comenzi, atunci totul funcționează!

Pasul 5: Accesați MySQL și phpMyAdmin

Multe site-uri web folosesc baze de date. Instrumentul phpMyAdmin pentru gestionarea bazei de date este deja instalat pe serverul nostru. Pentru a-l accesa, accesați browserul dvs. folosind un link precum:

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

Parola pentru accesul root poate fi obținută în contul personal MCS (https://mcs.mail.ru/app/services/marketplace/apps/). Nu uitați să vă schimbați parola de root la prima conectare!

Pasul 6: Configurați încărcarea fișierului prin SFTP

Dezvoltatorii vor găsi convenabil să încarce fișiere pentru site-ul dvs. prin SFTP. Pentru a face acest lucru, vom crea un nou utilizator, numiți-l webmaster:

$ sudo adduser webmaster

Sistemul vă va cere să setați o parolă și să introduceți alte date.

Schimbarea proprietarului directorului cu site-ul dvs.:

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

Acum să schimbăm configurația SSH, astfel încât noul utilizator să aibă acces doar la SFTP și nu la terminalul SSH:

$ sudo nano /etc/ssh/sshd_config

Derulați până la sfârșitul fișierului de configurare și adăugați următorul bloc:

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

Salvați fișierul și reporniți serviciul:

$ sudo systemctl restart sshd

Acum vă puteți conecta la server prin orice client SFTP, de exemplu, prin FileZilla.

Total

  1. Acum știți cum să creați directoare noi și să configurați gazde virtuale pentru site-urile dvs. web în cadrul aceluiași server.
  2. Puteți crea cu ușurință certificatele SSL necesare - este gratuit și vor fi actualizate automat.
  3. Puteți lucra convenabil cu baza de date MySQL prin familiarul phpMyAdmin.
  4. Crearea de noi conturi SFTP și configurarea drepturilor de acces nu necesită mult efort. Astfel de conturi pot fi transferate dezvoltatorilor web și administratorilor de site-uri terți.
  5. Nu uitați să actualizați periodic sistemul și vă recomandăm, de asemenea, să faceți copii de rezervă - în MCS puteți face „instantanee” ale întregului sistem cu un singur clic și apoi, dacă este necesar, să lansați imagini întregi.

Resurse folosite care pot fi utile:

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

Apropo, aici Puteți citi pe VC cum fundația noastră a implementat o platformă de educație online pentru orfani bazată pe cloud-ul MCS.

Sursa: www.habr.com

Adauga un comentariu