Charity Cloud: Migrationshandbuch



Vor nicht allzu langer Zeit haben Mail.Ru Cloud Solutions (MCS) und der Welcome Mail.Ru-Dienst das Projekt Cloud for Charity Foundations gestartet, mit dem gemeinnützige Organisationen kostenlos Ressourcen für die MCS-Cloud-Plattform erhalten können. Die Wohltätigkeitsstiftung Arithmetic of Good nahm an dem Projekt teil und setzte einen Teil ihrer auf MCS basierenden Infrastruktur erfolgreich ein.

Nach der Validierung kann ein NPO virtuelle Energie von MCS erhalten, für die weitere Optimierung sind jedoch bestimmte Qualifikationen erforderlich. In diesem Artikel möchten wir Ihnen spezifische Anweisungen zum Einrichten eines auf Ubuntu Linux basierenden Servers für die Hauptfonds-Website und eine Reihe von Subdomains mit kostenlosen SSL-Zertifikaten geben. Für viele wird dies ein einfacher Leitfaden sein, aber wir hoffen, dass unsere Erfahrung nicht nur für andere gemeinnützige Organisationen nützlich sein wird.

Zu Ihrer Information : Was kann ich von MCS bekommen? 4 CPU, 32 GB RAM, 1 TB Festplatte, Ubuntu Linux OS, 500 GB Objektspeicher.

Schritt 1: Starten Sie den virtuellen Server


Kommen wir sofort zur Sache und erstellen unseren virtuellen Server (auch als "Instanz" bezeichnet) in Ihrem persönlichen MCS-Konto. Im Anwendungsspeicher müssen Sie einen vorgefertigten LAMP-Stack auswählen und installieren, bei dem es sich um einen Komplex aus Serversoftware (LAMP = Linux, Apache, MySQL, PHP) handelt, der zum Starten der meisten Websites erforderlich ist.




Wählen Sie die entsprechende Konfiguration für den Server und erstellen Sie einen neuen SSH-Schlüssel. Nachdem Sie auf die Schaltfläche "Installieren" geklickt haben, beginnen der Server und der LAMP-Stack mit der Installation. Dies dauert einige Zeit. Das System bietet auch an, einen privaten Schlüssel auf den Computer herunterzuladen, um die virtuelle Maschine über die Konsole zu steuern und zu speichern.

Lassen Sie uns nach der Installation der Anwendung sofort die Firewall konfigurieren. Dies erfolgt auch in Ihrem persönlichen Konto: Gehen Sie zum Abschnitt "Cloud Computing -> Virtuelle Maschinen" und wählen Sie das Element "Firewall konfigurieren":


Sie müssen die Berechtigung für eingehenden Datenverkehr über Port 80 und 9997 hinzufügen. Dies ist in Zukunft erforderlich, um SSL-Zertifikate zu installieren und mit phpMyAdmin zu arbeiten. Am Ende sollte der Regelsatz folgendermaßen aussehen:


Jetzt können Sie über das SSH-Protokoll über die Befehlszeile eine Verbindung zu Ihrem Server herstellen. Geben Sie dazu den folgenden Befehl ein, der auf den SSH-Schlüssel auf Ihrem Computer und die externe IP-Adresse Ihres Servers verweist (Sie finden ihn im Abschnitt "Virtuelle Maschinen"):

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

Bei der ersten Verbindung zum Server wird empfohlen, alle aktuellen Updates darauf zu installieren und neu zu starten. Führen Sie dazu die folgenden Befehle aus:

 $ sudo apt-get update 

Das System erhält eine Liste der Updates, installiert sie mit diesem Befehl und befolgt die Anweisungen:

 $ sudo apt-get upgrade 

Starten Sie den Server nach der Installation der Updates neu:

 $ sudo reboot 

Schritt 2: Konfigurieren Sie virtuelle Hosts


Viele NPOs müssen mehrere Domains oder Subdomains gleichzeitig enthalten (z. B. die Hauptwebsite und mehrere Zielseiten für Werbekampagnen usw.). All dies kann bequem auf einem einzelnen Server gehostet werden, indem mehrere virtuelle Hosts erstellt werden.

Zunächst müssen wir eine Verzeichnisstruktur für Websites erstellen, die den Besuchern angezeigt werden. Lassen Sie uns einige Verzeichnisse erstellen:

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

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

Und geben Sie den Besitzer des aktuellen Benutzers an:

 $ 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 

Die Variable $USER enthält den Namen des Benutzers, mit dem Sie derzeit angemeldet sind (standardmäßig ist dies der ubuntu Benutzer). Jetzt besitzt der aktuelle Benutzer die Verzeichnisse public_html, in denen wir den Inhalt speichern.

Wir müssen auch die Berechtigungen ein wenig bearbeiten, um sicherzustellen, dass Lesezugriff auf das freigegebene Webverzeichnis, alle darin enthaltenen Dateien und Ordner zulässig ist. Dies ist erforderlich, damit die Websiteseiten korrekt angezeigt werden:

 $ sudo chmod -R 755 /var/www 

Ihr Webserver sollte nun über die erforderlichen Berechtigungen zum Anzeigen des Inhalts verfügen. Außerdem kann Ihr Benutzer jetzt Inhalte in den erforderlichen Verzeichnissen erstellen.

Es gibt bereits eine index.php-Datei im Verzeichnis / var / www / html. Kopieren Sie sie in unsere neuen Verzeichnisse. Dies ist vorerst unser Inhalt:

 $ 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 

Jetzt müssen Sie sicherstellen, dass der Benutzer Ihre Site betreten kann. Zu diesem Zweck konfigurieren wir zunächst die virtuellen Hostdateien, die bestimmen, wie genau der Apache-Webserver auf Anforderungen an verschiedene Domänen reagiert.

Standardmäßig verfügt Apache über eine virtuelle Hostdatei mit der Datei 000-default.conf, die wir als Ausgangspunkt verwenden können. Wir werden es kopieren, um virtuelle Hostdateien für jede unserer Domänen zu erstellen. Wir werden von einer Domäne ausgehen, sie konfigurieren, in eine andere Domäne kopieren und dann die erforderlichen Änderungen erneut vornehmen.

Die Standardkonfiguration von Ubuntu erfordert, dass jede virtuelle Hostdatei die Erweiterung * .conf hat.

Beginnen wir mit dem Kopieren der Datei für die erste Domain:

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

Öffnen Sie eine neue Datei im Editor mit Root-Rechten:

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

Bearbeiten Sie die Daten wie folgt und geben Sie Port 80, Ihre Daten für ServerAdmin , ServerAlias , ServerAlias sowie den Pfad zum Stammverzeichnis Ihrer Site an. Speichern Sie die Datei (Strg + X, dann 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 legt die primäre Domäne fest, die mit dem Namen des virtuellen Hosts übereinstimmen muss. Dies muss Ihr Domainname sein. Der zweite, ServerAlias , definiert andere Namen, die so interpretiert werden sollten, als wäre es die primäre Domäne. Dies ist praktisch, um zusätzliche Domainnamen zu verwenden, z. B. www.

Wir kopieren diese Konfiguration für einen anderen Host und bearbeiten sie auch analog:

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

Sie können beliebig viele Verzeichnisse und virtuelle Hosts für Ihre Websites erstellen! Nachdem wir unsere virtuellen Hostdateien erstellt haben, müssen wir sie einschließen. Wir können das Dienstprogramm a2ensite verwenden, um jede unserer Sites wie folgt zu aktivieren:

 $ sudo a2ensite a-dobra.ru.conf 

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

Standardmäßig ist Port 80 in LAMP geschlossen, und wir werden ihn in Zukunft benötigen, um ein SSL-Zertifikat zu installieren. Lassen Sie uns daher sofort die Datei ports.conf bearbeiten und dann Apache neu starten:

 $ sudo nano /etc/apache2/ports.conf 

Fügen Sie eine neue Zeile hinzu und speichern Sie die Datei so, dass sie folgendermaßen aussieht:

 Listen 80 Listen 443 Listen 9997 

Nach Abschluss der Einstellungen müssen Sie Apache neu starten, damit alle Änderungen wirksam werden:

 $ sudo systemctl reload apache2 

Schritt 3: Richten Sie Domainnamen ein


Als Nächstes müssen Sie DNS-Einträge hinzufügen, die auf Ihren neuen Server verweisen. Für die Domainverwaltung verwendet unsere Arithmetic of Good Foundation den Dienst dns-master.ru. Zeigen wir dies anhand eines Beispiels.

Die A-Record-Einstellung für die Hauptdomäne wird normalerweise wie folgt angezeigt ( @ -Zeichen):


Der A-Datensatz für Subdomains wird normalerweise wie folgt angegeben:


Die IP-Adresse ist die Adresse des gerade erstellten Linux-Servers. TTL kann = 3600 angeben.

Nach einer Weile ist es bereits möglich, auf Ihre Site zuzugreifen, bisher jedoch nur über http:// . Im nächsten Schritt werden wir https:// support hinzufügen.

Schritt 4: Konfigurieren Sie kostenlose SSL-Zertifikate


Sie können Let's Encrypt kostenlose SSL-Zertifikate für Ihre Hauptwebsite und alle Subdomains erhalten. Sie können auch die automatische Verlängerung konfigurieren, was sehr praktisch ist. Installieren Sie Certbot auf Ihrem Server, um SSL-Zertifikate zu erhalten:

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

Installieren Sie das Certbot-Paket für Apache mit apt :

 $ sudo apt install python-certbot-apache 

Certbot ist jetzt einsatzbereit, wir führen den Befehl aus:

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

Dieser Befehl führt certbot aus. Die Schalter -d geben die Domänennamen an, für die das Zertifikat ausgestellt werden soll.

Wenn Sie certbot zum ersten Mal ausführen, werden Sie aufgefordert, eine E-Mail-Adresse einzugeben und den Nutzungsbedingungen zuzustimmen. Danach kontaktiert certbot den Let's Encrypt-Server und überprüft, ob Sie wirklich die Kontrolle über die Domäne haben, für die Sie das Zertifikat angefordert haben.

Wenn alles gut gegangen ist, fragt certbot, wie Sie die HTTPS-Konfiguration konfigurieren möchten:

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

Wir empfehlen, dass Sie Option 2 auswählen und die EINGABETASTE drücken. Die Konfiguration wird aktualisiert und Apache neu gestartet, um die Änderungen zu übernehmen.

Jetzt werden Ihre Zertifikate hochgeladen, installiert und funktionieren. Wenn Sie versuchen, Ihre Site mit https: // neu zu laden, wird das Sicherheitssymbol im Browser angezeigt. Wenn Sie Ihren Server mit einem SSL Labs- Servertest testen , erhält er die Note A.

Lassen Sie uns Zertifikate verschlüsseln sind nur 90 Tage gültig, aber das soeben installierte Certbot-Paket erneuert die Zertifikate automatisch. Um den Upgrade-Prozess zu testen, können wir einen Trockenlauf-Certbot erstellen:

 $ sudo certbot renew --dry-run 

Wenn Sie keine Fehler sehen, die sich aus diesem Befehl ergeben, funktioniert alles!

Schritt 5: Zugriff auf MySQL und phpMyAdmin


Viele Websites verwenden Datenbanken. Das Tool phpMyAdmin für die Datenbankverwaltung ist bereits auf unserem Server installiert. Um darauf zuzugreifen, klicken Sie auf den Link in Ihrem Browser wie folgt:

 https://<ip- >:9997 

Das Kennwort für den Root-Zugriff erhalten Sie in Ihrem persönlichen MCS-Konto ( https://mcs.mail.ru/app/services/marketplace/apps/ ). Vergessen Sie nicht, das Root-Passwort beim ersten Anmelden zu ändern!

Schritt 6: Konfigurieren Sie den Datei-Upload über SFTP


Entwickler können Dateien für Ihre Website bequem über SFTP hochladen. Dazu erstellen wir einen neuen Benutzer, nennen ihn Webmaster:

 $ sudo adduser webmaster 

Das System fordert Sie auf, ein Kennwort festzulegen und andere Daten einzugeben.

Ändern Sie den Eigentümer des Verzeichnisses mit Ihrer Website:

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

Ändern wir nun die SSH-Konfiguration so, dass der neue Benutzer nur auf SFTP und nicht auf das SSH-Terminal zugreifen kann:

 $ sudo nano /etc/ssh/sshd_config 

Scrollen Sie durch die Konfigurationsdatei bis zum Ende und fügen Sie den folgenden Block hinzu:

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

Speichern Sie die Datei und laden Sie den Dienst neu:

 $ sudo systemctl restart sshd 

Jetzt können Sie über einen beliebigen SFTP-Client eine Verbindung zum Server herstellen, z. B. über FileZilla.

Zusammenfassung


  1. Jetzt wissen Sie, wie Sie neue Verzeichnisse erstellen und virtuelle Hosts für Ihre Websites auf demselben Server konfigurieren.
  2. Sie können problemlos die erforderlichen SSL-Zertifikate erstellen - diese sind kostenlos und werden automatisch aktualisiert.
  3. Sie können bequem mit der MySQL-Datenbank über das übliche phpMyAdmin arbeiten.
  4. Das Erstellen neuer SFTP-Konten und das Festlegen von Zugriffsrechten erfordert keinen großen Aufwand. Solche Konten können an Webentwickler und Site-Administratoren von Drittanbietern übertragen werden.
  5. Vergessen Sie nicht, das System regelmäßig zu aktualisieren, und empfehlen Sie auch, Backups zu erstellen. In MCS können Sie mit einem Klick „Snapshots“ des gesamten Systems erstellen und dann bei Bedarf ganze Images starten.

Verwendete Ressourcen, die nützlich sein können:

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

Übrigens können Sie hier auf VC lesen, wie unsere Stiftung eine Plattform für die Online-Ausbildung von Waisenkindern auf Basis der MCS-Cloud ins Leben gerufen hat.

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


All Articles