Cloud for Charities: Migrationsleitfaden

Cloud for Charities: Migrationsleitfaden

Vor nicht allzu langer Zeit haben Mail.Ru Cloud Solutions (MCS) und der Dobro Mail.Ru-Dienst das Projekt „Cloud für Wohltätigkeitsorganisationen“, dank dessen gemeinnützige Organisationen die Ressourcen der MCS-Cloud-Plattform kostenlos erhalten können. Gemeinnützige Stiftung“Arithmetik des Guten» beteiligte sich an dem Projekt und implementierte erfolgreich einen Teil seiner Infrastruktur auf Basis von MCS.

Nach bestandener Validierung kann ein NPO virtuelle Kapazität von MCS erhalten, für die weitere Konfiguration sind jedoch bestimmte Qualifikationen erforderlich. In diesem Material möchten wir spezifische Anweisungen zum Einrichten eines Ubuntu-Linux-basierten Servers zum Betrieb der Hauptwebsite und einer Reihe von Subdomains unter Verwendung kostenloser SSL-Zertifikate weitergeben. 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.

FYI: Was können Sie von MCS bekommen? 4 CPUs, 32 GB RAM, 1 TB Festplatte, Ubuntu Linux OS, 500 GB Objektspeicher.

Schritt 1: Starten Sie den virtuellen Server

Kommen wir gleich zur Sache und erstellen unseren virtuellen Server (auch „Instanz“ genannt) in Ihrem persönlichen MCS-Konto. Im App Store müssen Sie einen vorgefertigten LAMP-Stack auswählen und installieren, bei dem es sich um eine Reihe von Serversoftware (LAMP = Linux, Apache, MySQL, PHP) handelt, die zum Betrieb der meisten Websites erforderlich ist.

Cloud for Charities: Migrationsleitfaden
Cloud for Charities: Migrationsleitfaden
Cloud for Charities: Migrationsleitfaden
Wählen Sie die entsprechende Serverkonfiguration aus und erstellen Sie einen neuen SSH-Schlüssel. Nachdem Sie auf die Schaltfläche „Installieren“ geklickt haben, beginnt die Installation des Servers und des LAMP-Stacks. Dies wird einige Zeit dauern. Das System bietet außerdem an, einen privaten Schlüssel auf Ihren Computer herunterzuladen, um die virtuelle Maschine über die Konsole zu verwalten und zu speichern.

Nach der Installation der Anwendung richten wir sofort die Firewall ein, dies geschieht auch in Ihrem persönlichen Konto: Gehen Sie zum Abschnitt „Cloud Computing -> Virtuelle Maschinen“ und wählen Sie „Firewall einstellen“:

Cloud for Charities: Migrationsleitfaden
Sie müssen die Berechtigung für eingehenden Datenverkehr über Port 80 und 9997 hinzufügen. Dies ist in Zukunft notwendig, um SSL-Zertifikate zu installieren und mit phpMyAdmin zu arbeiten. Im Ergebnis sollte das Regelwerk so aussehen:

Cloud for Charities: Migrationsleitfaden
Jetzt können Sie über die Befehlszeile mithilfe des SSH-Protokolls eine Verbindung zu Ihrem Server herstellen. Geben Sie dazu den folgenden Befehl ein und verweisen Sie dabei auf den SSH-Schlüssel auf Ihrem Computer und die externe IP-Adresse Ihres Servers (Sie finden ihn im Abschnitt „Virtuelle Maschinen“):

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

Wenn Sie sich zum ersten Mal mit dem Server verbinden, wird empfohlen, alle aktuellen Updates darauf zu installieren und ihn neu zu starten. Führen Sie dazu die folgenden Befehle aus:

$ sudo apt-get update

Das System erhält eine Liste der Updates, installiert diese mit diesem Befehl und folgt den Anweisungen:

$ sudo apt-get upgrade

Starten Sie den Server nach der Installation der Updates neu:

$ sudo reboot

Schritt 2: Virtuelle Hosts einrichten

Viele gemeinnützige Organisationen müssen mehrere Domains oder Subdomains gleichzeitig verwalten (z. B. eine Hauptwebsite und mehrere Zielseiten für Werbekampagnen usw.). All dies lässt sich durch die Erstellung mehrerer virtueller Hosts bequem auf einem Server unterbringen.

Zuerst müssen wir eine Verzeichnisstruktur für die 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

Variable $USER enthält den Benutzernamen, unter dem Sie aktuell angemeldet sind (standardmäßig ist dies der Benutzer). ubuntu). Jetzt besitzt der aktuelle Benutzer die public_html-Verzeichnisse, in denen wir den Inhalt speichern.

Außerdem müssen wir die Berechtigungen etwas bearbeiten, um sicherzustellen, dass Lesezugriff auf das freigegebene Webverzeichnis und alle darin enthaltenen Dateien und Ordner zulässig ist. Dies ist notwendig, damit die Seiten der Website korrekt angezeigt werden:

$ sudo chmod -R 755 /var/www

Ihr Webserver sollte nun über die Berechtigungen verfügen, die er zum Anzeigen des Inhalts benötigt. Darüber hinaus hat Ihr Benutzer nun die Möglichkeit, Inhalte in den erforderlichen Verzeichnissen zu erstellen.

Es gibt bereits eine index.php-Datei im Verzeichnis /var/www/html. Kopieren wir sie in unsere neuen Verzeichnisse – dies wird vorerst unser Inhalt sein:

$ 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 auf Ihre Website zugreifen kann. Dazu konfigurieren wir zunächst die virtuellen Hostdateien, die bestimmen, wie der Apache-Webserver auf Anfragen an verschiedene Domänen reagiert.

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

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 in einem Editor mit Root-Rechten:

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

Bearbeiten Sie die Daten wie folgt und geben Sie dabei Port 80 an, Ihre Daten für ServerAdmin, ServerName, ServerAlias, sowie den Pfad zum Stammverzeichnis Ihrer Site, speichern Sie die Datei (Strg+X, dann 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 legt die primäre Domäne fest, die mit dem Namen des virtuellen Hosts übereinstimmen muss. Dies muss Ihr Domainname sein. Zweite, ServerAlias, definiert andere Namen, die so interpretiert werden sollten, als ob es sich um die primäre Domäne handeln würde. Dies ist praktisch für die Verwendung zusätzlicher Domainnamen, beispielsweise für die Verwendung von www.

Kopieren wir diese Konfiguration für einen anderen Host und bearbeiten sie auf die gleiche Weise:

$ 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 nun unsere virtuellen Hostdateien erstellt haben, müssen wir sie aktivieren. Wir können das Dienstprogramm a2ensite verwenden, um jede unserer Websites 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 später benötigen, um ein SSL-Zertifikat zu installieren. Bearbeiten wir also sofort die Datei ports.conf und starten wir dann Apache neu:

$ sudo nano /etc/apache2/ports.conf

Fügen Sie eine neue Zeile hinzu und speichern Sie die Datei so, dass sie wie folgt aussieht:

Listen 80
Listen 443
Listen 9997

Nachdem Sie die Einstellungen vorgenommen haben, müssen Sie Apache neu starten, damit alle Änderungen wirksam werden:

$ sudo systemctl reload apache2

Schritt 3: Domainnamen einrichten

Als Nächstes müssen Sie DNS-Einträge hinzufügen, die auf Ihren neuen Server verweisen. Zur Verwaltung von Domains nutzt unsere Arithmetic of Good Foundation den Dienst dns-master.ru, wir zeigen ihn anhand eines Beispiels.

Das Anlegen eines A-Records für die Hauptdomain wird üblicherweise wie folgt angezeigt (Zeichen @):

Cloud for Charities: Migrationsleitfaden
Der A-Eintrag für Subdomains wird normalerweise wie folgt angegeben:

Cloud for Charities: Migrationsleitfaden
Die IP-Adresse ist die Adresse des Linux-Servers, den wir gerade erstellt haben. Sie können TTL = 3600 angeben.

Nach einiger Zeit wird es möglich sein, Ihre Website zu besuchen, allerdings vorerst nur über http://. Im nächsten Schritt werden wir Unterstützung hinzufügen https://.

Schritt 4: Kostenlose SSL-Zertifikate einrichten

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

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

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

$ sudo apt install python-certbot-apache 

Jetzt ist Certbot einsatzbereit. Führen Sie den folgenden Befehl aus:

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

Dieser Befehl führt certbot, keys aus -d Definieren Sie die Namen der Domänen, für die das Zertifikat ausgestellt werden soll.

Wenn Sie certbot zum ersten Mal starten, werden Sie aufgefordert, Ihre E-Mail-Adresse einzugeben und den Nutzungsbedingungen des Dienstes zuzustimmen. certbot kontaktiert dann den Let's Encrypt-Server und überprüft dann, ob Sie tatsächlich die Domain kontrollieren, für die Sie das Zertifikat angefordert haben.

Wenn alles gut gelaufen ist, werden Sie von certbot gefragt, 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, Option 2 auszuwählen und ENTER zu drücken. Die Konfiguration wird aktualisiert und Apache wird neu gestartet, um die Änderungen zu übernehmen.

Ihre Zertifikate sind jetzt heruntergeladen, installiert und funktionieren. Versuchen Sie, Ihre Website mit https:// neu zu laden. In Ihrem Browser wird dann das Sicherheitssymbol angezeigt. Wenn Sie Ihren Server testen SSL Labs-Servertest, erhält er die Note A.

Let's Encrypt-Zertifikate sind nur 90 Tage gültig, aber das Certbot-Paket, das wir gerade installiert haben, erneuert Zertifikate automatisch. Um den Aktualisierungsprozess zu testen, können wir einen Probelauf von certbot durchführen:

$ sudo certbot renew --dry-run 

Wenn bei der Ausführung dieses Befehls keine Fehler angezeigt werden, funktioniert alles!

Schritt 5: Greifen Sie auf MySQL und phpMyAdmin zu

Viele Websites nutzen Datenbanken. Das Tool phpMyAdmin zur Datenbankverwaltung ist bereits auf unserem Server installiert. Um darauf zuzugreifen, rufen Sie Ihren Browser über einen Link wie den folgenden auf:

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

Das Passwort für den Root-Zugriff erhalten Sie in Ihrem persönlichen MCS-Konto (https://mcs.mail.ru/app/services/marketplace/apps/). Vergessen Sie nicht, Ihr Root-Passwort zu ändern, wenn Sie sich zum ersten Mal anmelden!

Schritt 6: Richten Sie den Datei-Upload über SFTP ein

Entwickler werden es bequem finden, Dateien für Ihre Website über SFTP hochzuladen. Dazu erstellen wir einen neuen Benutzer und nennen ihn Webmaster:

$ sudo adduser webmaster

Das System fordert Sie auf, ein Passwort festzulegen und weitere Daten einzugeben.

Den Eigentümer des Verzeichnisses mit Ihrer Website ändern:

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

Jetzt ändern wir die SSH-Konfiguration so, dass der neue Benutzer nur Zugriff auf SFTP und nicht auf das SSH-Terminal hat:

$ sudo nano /etc/ssh/sshd_config

Scrollen Sie bis zum Ende der Konfigurationsdatei 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 starten Sie den Dienst neu:

$ sudo systemctl restart sshd

Jetzt können Sie über jeden SFTP-Client eine Verbindung zum Server herstellen, beispielsweise über FileZilla.

Ergebnis

  1. Jetzt wissen Sie, wie Sie neue Verzeichnisse erstellen und virtuelle Hosts für Ihre Websites auf demselben Server konfigurieren.
  2. Sie können die erforderlichen SSL-Zertifikate ganz einfach erstellen – es ist kostenlos und sie werden automatisch aktualisiert.
  3. Über das bekannte phpMyAdmin können Sie bequem mit der MySQL-Datenbank arbeiten.
  4. Das Erstellen neuer SFTP-Konten und das Einrichten 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 wir empfehlen auch, Backups zu erstellen – in MCS können Sie mit einem Klick „Schnappschüsse“ 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 hier Auf VC können Sie lesen, wie unsere Stiftung eine Plattform für Online-Bildung für Waisenkinder basierend auf der MCS-Cloud bereitgestellt hat.

Source: habr.com

Kommentar hinzufügen