Chmura dla organizacji charytatywnych: przewodnik po migracji

Chmura dla organizacji charytatywnych: przewodnik po migracji

Niedawno Mail.Ru Cloud Solutions (MCS) i usługa Dobro Mail.Ru uruchomiły projekt „Chmura dla organizacji charytatywnych”, dzięki któremu organizacje non-profit mogą bezpłatnie pozyskać zasoby platformy chmurowej MCS. Fundacja Charytatywna”Arytmetyka dobroci» wziął udział w projekcie i z sukcesem wdrożył część swojej infrastruktury opartej na MCS.

Po przejściu walidacji organizacja non-profit może otrzymać wirtualną pojemność od MCS, ale dalsza konfiguracja wymaga pewnych kwalifikacji. W tym materiale chcemy podzielić się konkretną instrukcją konfiguracji serwera opartego na systemie Ubuntu Linux, na którym będzie można uruchomić główną witrynę fundacji oraz szereg subdomen z wykorzystaniem bezpłatnych certyfikatów SSL. Dla wielu będzie to prosty przewodnik, ale mamy nadzieję, że nasze doświadczenie przyda się innym organizacjom non-profit i nie tylko.

FYI: Co możesz zyskać dzięki MCS? 4 procesory, 32 GB RAM, 1 TB HDD, system operacyjny Ubuntu Linux, 500 GB obiektowej pamięci masowej.

Krok 1: uruchom serwer wirtualny

Przejdźmy od razu do rzeczy i utwórz nasz serwer wirtualny (inaczej „instancję”) na swoim koncie osobistym MCS. W sklepie z aplikacjami należy wybrać i zainstalować gotowy stos LAMP, czyli zestaw oprogramowania serwerowego (LAMP = Linux, Apache, MySQL, PHP) niezbędny do uruchomienia większości stron internetowych.

Chmura dla organizacji charytatywnych: przewodnik po migracji
Chmura dla organizacji charytatywnych: przewodnik po migracji
Chmura dla organizacji charytatywnych: przewodnik po migracji
Wybierz odpowiednią konfigurację serwera i utwórz nowy klucz SSH. Po kliknięciu przycisku „Instaluj” rozpocznie się instalacja serwera i stosu LAMP, zajmie to trochę czasu. System zaproponuje również pobranie klucza prywatnego na Twój komputer w celu zarządzania maszyną wirtualną poprzez konsolę, zapisanie go.

Po zainstalowaniu aplikacji od razu skonfigurujmy zaporę sieciową, robimy to również na koncie osobistym: przejdź do sekcji „Przetwarzanie w chmurze -> Maszyny wirtualne” i wybierz „Ustawianie zapory”:

Chmura dla organizacji charytatywnych: przewodnik po migracji
Musisz dodać pozwolenie na ruch przychodzący przez porty 80 i 9997. Będzie to konieczne w przyszłości, aby zainstalować certyfikaty SSL i pracować z phpMyAdmin. W rezultacie zestaw reguł powinien wyglądać następująco:

Chmura dla organizacji charytatywnych: przewodnik po migracji
Teraz możesz połączyć się z serwerem za pomocą wiersza poleceń, korzystając z protokołu SSH. Aby to zrobić, wpisz następującą komendę, wskazując klucz SSH na swoim komputerze oraz zewnętrzny adres IP Twojego serwera (znajdziesz go w sekcji „Maszyny wirtualne”):

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

Łącząc się z serwerem po raz pierwszy, zaleca się zainstalowanie na nim wszystkich aktualnych aktualizacji i ponowne uruchomienie. Aby to zrobić, uruchom następujące polecenia:

$ sudo apt-get update

System otrzyma listę aktualizacji, zainstaluj je za pomocą tego polecenia i postępuj zgodnie z instrukcjami:

$ sudo apt-get upgrade

Po zainstalowaniu aktualizacji zrestartuj serwer:

$ sudo reboot

Krok 2: Skonfiguruj hosty wirtualne

Wiele organizacji non-profit musi utrzymywać kilka domen lub subdomen jednocześnie (na przykład stronę główną i kilka stron docelowych dla kampanii promocyjnych itp.). Wszystko to można wygodnie umieścić na jednym serwerze, tworząc kilka wirtualnych hostów.

Najpierw musimy utworzyć strukturę katalogów dla witryn, które będą wyświetlane odwiedzającym. Stwórzmy kilka katalogów:

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

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

I określ właściciela bieżącego użytkownika:

$ 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

Zmienna $USER zawiera nazwę użytkownika, pod którą jesteś aktualnie zalogowany (domyślnie jest to user ubuntu). Teraz bieżący użytkownik jest właścicielem katalogów public_html, w których będziemy przechowywać zawartość.

Musimy także nieco zmodyfikować uprawnienia, aby mieć pewność, że udostępniony katalog internetowy oraz wszystkie zawarte w nim pliki i foldery będą miały dostęp do odczytu. Jest to konieczne, aby strony serwisu wyświetlały się poprawnie:

$ sudo chmod -R 755 /var/www

Twój serwer internetowy powinien teraz mieć uprawnienia potrzebne do wyświetlenia zawartości. Ponadto Twój użytkownik ma teraz możliwość tworzenia treści w wymaganych katalogach.

W katalogu /var/www/html znajduje się już plik indeks.php, skopiujmy go do naszych nowych katalogów - na razie będzie to nasza treść:

$ 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

Teraz musisz upewnić się, że użytkownik może uzyskać dostęp do Twojej witryny. Aby to zrobić, najpierw skonfigurujemy pliki hosta wirtualnego, które określają, w jaki sposób serwer WWW Apache będzie reagował na żądania kierowane do różnych domen.

Domyślnie Apache ma plik wirtualnego hosta 000-default.conf, którego możemy użyć jako punktu wyjścia. Skopiujemy to, aby utworzyć pliki wirtualnego hosta dla każdej z naszych domen. Zaczniemy od jednej domeny, skonfigurujemy ją, skopiujemy do innej domeny, a następnie ponownie dokonamy niezbędnych zmian.

Domyślna konfiguracja Ubuntu wymaga, aby każdy plik hosta wirtualnego miał rozszerzenie *.conf.

Zacznijmy od skopiowania pliku dla pierwszej domeny:

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

Otwórz nowy plik w edytorze z uprawnieniami roota:

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

Edytuj dane w następujący sposób, określając port 80, dla którego chcesz przesyłać dane ServerAdmin, ServerName, ServerAlias, a także ścieżkę do katalogu głównego Twojej witryny, zapisz plik (Ctrl+X, następnie 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 ustawia domenę podstawową, która musi odpowiadać nazwie hosta wirtualnego. To musi być nazwa Twojej domeny. Drugi, ServerAlias, definiuje inne nazwy, które należy interpretować tak, jakby były domeną podstawową. Jest to wygodne w przypadku korzystania z dodatkowych nazw domen, na przykład z użyciem www.

Skopiujmy tę konfigurację dla innego hosta i edytujmy ją w ten sam sposób:

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

Możesz utworzyć dowolną liczbę katalogów i wirtualnych hostów dla swoich stron internetowych! Teraz, gdy utworzyliśmy pliki hosta wirtualnego, musimy je włączyć. Możemy użyć narzędzia a2ensite, aby włączyć każdą z naszych witryn w następujący sposób:

$ sudo a2ensite a-dobra.ru.conf

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

Domyślnie port 80 w LAMPIE jest zamknięty i będzie nam on później potrzebny do zainstalowania certyfikatu SSL. Zmodyfikujmy więc natychmiast plik ports.conf, a następnie zrestartujmy Apache:

$ sudo nano /etc/apache2/ports.conf

Dodaj nową linię i zapisz plik, aby wyglądał tak:

Listen 80
Listen 443
Listen 9997

Po zakończeniu ustawień musisz ponownie uruchomić Apache, aby wszystkie zmiany zaczęły obowiązywać:

$ sudo systemctl reload apache2

Krok 3: Skonfiguruj nazwy domen

Następnie musisz dodać rekordy DNS, które będą wskazywać na Twój nowy serwer. Do zarządzania domenami nasza Fundacja Arytmetyka Dobra korzysta z usługi dns-master.ru, pokażemy to na przykładzie.

Założenie rekordu A dla domeny głównej jest zwykle sygnalizowane w następujący sposób (znak @):

Chmura dla organizacji charytatywnych: przewodnik po migracji
Rekord A dla subdomen jest zwykle określany w następujący sposób:

Chmura dla organizacji charytatywnych: przewodnik po migracji
Adres IP to adres właśnie utworzonego serwera Linux. Można określić TTL = 3600.

Po pewnym czasie będzie można odwiedzić Twoją witrynę, ale na razie tylko poprzez http://. W następnym kroku dodamy wsparcie https://.

Krok 4: Skonfiguruj bezpłatne certyfikaty SSL

Możesz otrzymać bezpłatne certyfikaty Let's Encrypt SSL dla swojej strony głównej i wszystkich subdomen. Można także skonfigurować ich automatyczne odnawianie, co jest bardzo wygodne. Aby uzyskać certyfikaty SSL, zainstaluj Certbota na swoim serwerze:

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

Zainstaluj pakiet Certbot dla Apache za pomocą apt:

$ sudo apt install python-certbot-apache 

Teraz Certbot jest gotowy do użycia, uruchom polecenie:

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

To polecenie uruchamia certbot, klucze -d zdefiniować nazwy domen, dla których ma zostać wystawiony certyfikat.

Jeśli uruchamiasz certbota po raz pierwszy, zostaniesz poproszony o podanie adresu e-mail i wyrażenie zgody na warunki korzystania z usługi. certbot skontaktuje się następnie z serwerem Let's Encrypt i sprawdzi, czy rzeczywiście kontrolujesz domenę, dla której zażądałeś certyfikatu.

Jeśli wszystko poszło dobrze, certbot zapyta, jak chcesz skonfigurować konfigurację 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):

Zalecamy wybranie opcji 2 i naciśnięcie ENTER. Konfiguracja zostanie zaktualizowana, a Apache zostanie ponownie uruchomiony w celu zastosowania zmian.

Twoje certyfikaty zostały teraz pobrane, zainstalowane i działają. Spróbuj ponownie załadować swoją witrynę za pomocą https://, a w przeglądarce zobaczysz ikonę bezpieczeństwa. Jeśli testujesz swój serwer Test serwera SSL Labs, otrzyma ocenę A.

Certyfikaty Let's Encrypt są ważne tylko przez 90 dni, ale właśnie zainstalowany pakiet certbot będzie automatycznie odnawiał certyfikaty. Aby przetestować proces aktualizacji, możemy wykonać próbę działania certbota:

$ sudo certbot renew --dry-run 

Jeśli w wyniku uruchomienia tego polecenia nie widzisz żadnych błędów, oznacza to, że wszystko działa!

Krok 5: Uzyskaj dostęp do MySQL i phpMyAdmin

Wiele stron internetowych korzysta z baz danych. Narzędzie phpMyAdmin do zarządzania bazami danych jest już zainstalowane na naszym serwerze. Aby uzyskać do niego dostęp, przejdź do przeglądarki za pomocą linku takiego jak:

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

Hasło dostępu root można uzyskać na swoim koncie osobistym MCS (https://mcs.mail.ru/app/services/marketplace/apps/). Nie zapomnij zmienić hasła roota przy pierwszym logowaniu!

Krok 6: Skonfiguruj przesyłanie plików przez SFTP

Dla programistów wygodne będzie przesyłanie plików do Twojej witryny za pośrednictwem protokołu SFTP. W tym celu utworzymy nowego użytkownika, nazwiemy go webmasterem:

$ sudo adduser webmaster

System poprosi Cię o ustawienie hasła i podanie innych danych.

Zmiana właściciela katalogu z Twoją witryną:

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

Zmieńmy teraz konfigurację SSH tak, aby nowy użytkownik miał dostęp tylko do SFTP, a nie do terminala SSH:

$ sudo nano /etc/ssh/sshd_config

Przewiń na sam koniec pliku konfiguracyjnego i dodaj następujący blok:

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

Zapisz plik i uruchom ponownie usługę:

$ sudo systemctl restart sshd

Teraz możesz połączyć się z serwerem za pośrednictwem dowolnego klienta SFTP, na przykład poprzez FileZilla.

Łączny

  1. Teraz wiesz, jak tworzyć nowe katalogi i konfigurować wirtualne hosty dla swoich witryn internetowych na tym samym serwerze.
  2. Niezbędne certyfikaty SSL możesz łatwo utworzyć - jest to bezpłatne, a będą one aktualizowane automatycznie.
  3. Możesz wygodnie pracować z bazą danych MySQL poprzez znajomy phpMyAdmin.
  4. Tworzenie nowych kont SFTP i konfigurowanie praw dostępu nie wymaga dużego wysiłku. Takie konta mogą być przekazywane zewnętrznym twórcom stron internetowych i administratorom witryn.
  5. Nie zapomnij o okresowej aktualizacji systemu, zalecamy także wykonywanie kopii zapasowych - w MCS jednym kliknięciem możesz wykonać „migawki” całego systemu, a następnie w razie potrzeby uruchomić całe obrazy.

Wykorzystane zasoby, które mogą się przydać:

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 the way, tutaj Na VC można przeczytać, jak nasza fundacja wdrożyła platformę do edukacji online dla sierot w oparciu o chmurę MCS.

Źródło: www.habr.com

Dodaj komentarz