Cloud for Charities: guida alla migrazione

Cloud for Charities: guida alla migrazione

Non molto tempo fa, Mail.Ru Cloud Solutions (MCS) e il servizio Dobro Mail.Ru hanno lanciato il progetto “Cloud per beneficenza”, grazie alla quale le organizzazioni no-profit possono ottenere gratuitamente le risorse della piattaforma cloud MCS. Fondazione caritatevole "Aritmetica della bontà» ha preso parte al progetto e ha implementato con successo parte della sua infrastruttura basata su MCS.

Dopo aver superato la convalida, un NPO può ricevere capacità virtuale da MCS, ma un'ulteriore configurazione richiede determinate qualifiche. In questo materiale, desideriamo condividere istruzioni specifiche per configurare un server basato su Ubuntu Linux per eseguire il sito Web principale della fondazione e una serie di sottodomini utilizzando certificati SSL gratuiti. Per molti questa sarà una semplice guida, ma speriamo che la nostra esperienza possa essere utile anche ad altre organizzazioni no-profit, e non solo.

FYI: Cosa puoi ottenere da MCS? 4 CPU, 32 GB di RAM, HDD da 1 TB, sistema operativo Ubuntu Linux, spazio di archiviazione oggetti da 500 GB.

Passaggio 1: avvia il server virtuale

Andiamo dritti al punto e creiamo il nostro server virtuale (noto anche come "istanza") nel tuo account personale MCS. Nell'App Store è necessario selezionare e installare uno stack LAMP già pronto, ovvero un insieme di software server (LAMP = Linux, Apache, MySQL, PHP) necessario per eseguire la maggior parte dei siti Web.

Cloud for Charities: guida alla migrazione
Cloud for Charities: guida alla migrazione
Cloud for Charities: guida alla migrazione
Seleziona la configurazione del server appropriata e crea una nuova chiave SSH. Dopo aver cliccato sul pulsante “Installa”, inizierà l'installazione del server e dello stack LAMP, questa operazione richiederà del tempo. Il sistema offrirà anche di scaricare una chiave privata sul tuo computer per gestire la macchina virtuale tramite la console, salvarla.

Dopo aver installato l'applicazione, impostiamo subito il firewall, anche questo si effettua nel nostro account personale: andiamo nella sezione “Cloud computing -> Macchine virtuali” e selezioniamo “Impostazione del firewall”:

Cloud for Charities: guida alla migrazione
È necessario aggiungere l'autorizzazione per il traffico in entrata attraverso le porte 80 e 9997. Ciò sarà necessario in futuro per installare i certificati SSL e per lavorare con phpMyAdmin. Di conseguenza, l’insieme delle regole dovrebbe assomigliare a questo:

Cloud for Charities: guida alla migrazione
Ora puoi connetterti al tuo server tramite la riga di comando utilizzando il protocollo SSH. Per fare ciò, digita il seguente comando, puntando alla chiave SSH del tuo computer e all'indirizzo IP esterno del tuo server (lo trovi nella sezione “Macchine virtuali”):

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

Quando ci si connette al server per la prima volta, si consiglia di installare su di esso tutti gli aggiornamenti correnti e di riavviarlo. Per fare ciò, esegui i seguenti comandi:

$ sudo apt-get update

Il sistema riceverà un elenco di aggiornamenti, li installerà utilizzando questo comando e seguirà le istruzioni:

$ sudo apt-get upgrade

Dopo aver installato gli aggiornamenti, riavviare il server:

$ sudo reboot

Passaggio 2: configura gli host virtuali

Molte organizzazioni no-profit hanno la necessità di mantenere più domini o sottodomini contemporaneamente (ad esempio, un sito web principale e diverse pagine di destinazione per campagne promozionali, ecc.). Tutto questo può essere comodamente posizionato su un server creando diversi host virtuali.

Per prima cosa dobbiamo creare una struttura di directory per i siti che verranno visualizzati ai visitatori. Creiamo alcune directory:

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

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

E specifica il proprietario dell'utente corrente:

$ 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

Переменная $USER contiene il nome utente con cui hai effettuato l'accesso (per impostazione predefinita si tratta dell'utente ubuntu). Ora l'utente corrente possiede le directory public_html in cui memorizzeremo il contenuto.

Dobbiamo anche modificare leggermente le autorizzazioni per assicurarci che sia consentito l'accesso in lettura alla directory web condivisa e a tutti i file e le cartelle in essa contenuti. Ciò è necessario affinché le pagine del sito vengano visualizzate correttamente:

$ sudo chmod -R 755 /var/www

Il tuo server web ora dovrebbe avere le autorizzazioni necessarie per visualizzare il contenuto. Inoltre, il tuo utente ora ha la possibilità di creare contenuti nelle directory richieste.

C'è già un file index.php nella directory /var/www/html, copiamolo nelle nostre nuove directory - questo sarà il nostro contenuto per ora:

$ 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

Ora devi assicurarti che l'utente possa accedere al tuo sito. Per fare ciò, configureremo prima i file host virtuali, che determinano come il server web Apache risponderà alle richieste a diversi domini.

Per impostazione predefinita, Apache ha un file host virtuale 000-default.conf che possiamo utilizzare come punto di partenza. Lo copieremo per creare file host virtuali per ciascuno dei nostri domini. Inizieremo con un dominio, lo configureremo, lo copieremo su un altro dominio e quindi apporteremo nuovamente le modifiche necessarie.

La configurazione predefinita di Ubuntu richiede che ciascun file host virtuale abbia un'estensione *.conf.

Iniziamo copiando il file per il primo dominio:

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

Apri un nuovo file in un editor con diritti di root:

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

Modifica i dati come segue, specificando la porta 80, per cui i tuoi dati ServerAdmin, ServerName, ServerAlias, così come il percorso della directory principale del tuo sito, salva il file (Ctrl+X, quindi 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 imposta il dominio primario, che deve corrispondere al nome dell'host virtuale. Questo deve essere il tuo nome di dominio. Secondo, ServerAlias, definisce altri nomi che dovrebbero essere interpretati come se fosse il dominio primario. Ciò è utile per utilizzare nomi di dominio aggiuntivi, ad esempio utilizzando www.

Copiamo questa configurazione per un altro host e modifichiamola allo stesso modo:

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

Puoi creare tutte le directory e gli host virtuali che desideri per i tuoi siti web! Ora che abbiamo creato i nostri file host virtuali, dobbiamo abilitarli. Possiamo utilizzare l'utilità a2ensite per abilitare ciascuno dei nostri siti in questo modo:

$ sudo a2ensite a-dobra.ru.conf

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

Per impostazione predefinita, la porta 80 è chiusa in LAMP e ne avremo bisogno in seguito per installare un certificato SSL. Modifichiamo quindi subito il file ports.conf e poi riavviamo Apache:

$ sudo nano /etc/apache2/ports.conf

Aggiungi una nuova riga e salva il file in modo che assomigli a questo:

Listen 80
Listen 443
Listen 9997

Dopo aver completato le impostazioni, è necessario riavviare Apache affinché tutte le modifiche abbiano effetto:

$ sudo systemctl reload apache2

Passaggio 3: imposta i nomi di dominio

Successivamente, devi aggiungere record DNS che punteranno al tuo nuovo server. Per gestire i domini, la nostra Arithmetic of Good Foundation utilizza il servizio dns-master.ru, lo mostreremo con un esempio.

La costituzione di un record A per il dominio principale è solitamente indicata come segue (sign @):

Cloud for Charities: guida alla migrazione
Il record A per i sottodomini viene solitamente specificato in questo modo:

Cloud for Charities: guida alla migrazione
L'indirizzo IP è l'indirizzo del server Linux che abbiamo appena creato. È possibile specificare TTL = 3600.

Dopo qualche tempo sarà possibile visitare il vostro sito, ma per ora solo attraverso http://. Nel passaggio successivo aggiungeremo il supporto https://.

Passaggio 4: imposta i certificati SSL gratuiti

Puoi ottenere certificati SSL Let's Encrypt gratuiti per il tuo sito principale e tutti i sottodomini. Puoi anche configurarne il rinnovo automatico, il che è molto comodo. Per ottenere i certificati SSL, installa Certbot sul tuo server:

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

Installa il pacchetto Certbot per Apache utilizzando apt:

$ sudo apt install python-certbot-apache 

Ora Certbot è pronto per l'uso, esegui il comando:

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

Questo comando esegue certbot, keys -d definire i nomi dei domini per i quali dovrà essere emesso il certificato.

Se è la prima volta che avvii certbot, ti verrà chiesto di inserire il tuo indirizzo email e accettare i termini di utilizzo del servizio. certbot contatterà quindi il server Let's Encrypt e verificherà che tu effettivamente controlli il dominio per il quale hai richiesto il certificato.

Se tutto è andato bene, certbot ti chiederà come vuoi configurare la configurazione 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):

Si consiglia di selezionare l'opzione 2 e premere INVIO. La configurazione verrà aggiornata e Apache verrà riavviato per applicare le modifiche.

I tuoi certificati sono ora scaricati, installati e funzionanti. Prova a ricaricare il tuo sito con https:// e vedrai l'icona di sicurezza nel tuo browser. Se provi il tuo server Test del server SSL Labs, riceverà un voto A.

I certificati Let's Encrypt sono validi solo per 90 giorni, ma il pacchetto certbot che abbiamo appena installato rinnoverà automaticamente i certificati. Per testare il processo di aggiornamento, possiamo eseguire un test di certbot:

$ sudo certbot renew --dry-run 

Se non vedi alcun errore come risultato dell'esecuzione di questo comando, significa che funziona tutto!

Passaggio 5: accedi a MySQL e phpMyAdmin

Molti siti Web utilizzano database. Lo strumento phpMyAdmin per la gestione del database è già installato sul nostro server. Per accedervi, vai al tuo browser utilizzando un collegamento come:

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

La password per l'accesso root può essere ottenuta nel tuo account personale MCS (https://mcs.mail.ru/app/services/marketplace/apps/). Non dimenticare di cambiare la password di root la prima volta che accedi!

Passaggio 6: configura il caricamento dei file tramite SFTP

Gli sviluppatori troveranno conveniente caricare file per il tuo sito Web tramite SFTP. Per fare ciò, creeremo un nuovo utente, chiamiamolo webmaster:

$ sudo adduser webmaster

Il sistema ti chiederà di impostare una password e di inserire alcuni altri dati.

Modificare il proprietario della directory con il tuo sito web:

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

Ora modifichiamo la configurazione SSH in modo che il nuovo utente abbia accesso solo a SFTP e non al terminale SSH:

$ sudo nano /etc/ssh/sshd_config

Scorri fino alla fine del file di configurazione e aggiungi il seguente blocco:

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

Salvare il file e riavviare il servizio:

$ sudo systemctl restart sshd

Ora puoi connetterti al server tramite qualsiasi client SFTP, ad esempio tramite FileZilla.

risultato

  1. Ora sai come creare nuove directory e configurare host virtuali per i tuoi siti web all'interno dello stesso server.
  2. Puoi creare facilmente i certificati SSL necessari: è gratuito e verranno aggiornati automaticamente.
  3. Puoi lavorare comodamente con il database MySQL tramite il familiare phpMyAdmin.
  4. La creazione di nuovi account SFTP e l'impostazione dei diritti di accesso non richiedono molti sforzi. Tali account possono essere trasferiti a sviluppatori web e amministratori di siti di terze parti.
  5. Non dimenticare di aggiornare periodicamente il sistema e ti consigliamo anche di eseguire dei backup: in MCS puoi scattare "istantanee" dell'intero sistema con un clic e quindi, se necessario, avviare intere immagini.

Risorse utilizzate che potrebbero essere utili:

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

Tra l'altro, qui Puoi leggere su VC come la nostra fondazione ha implementato una piattaforma per l'istruzione online per orfani basata sul cloud MCS.

Fonte: habr.com

Aggiungi un commento