Niedawno Mail.Ru Cloud Solutions (MCS) i usługa Dobro Mail.Ru uruchomiły projekt „
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.
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”:
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:
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 @
):
Rekord A dla subdomen jest zwykle określany w następujący sposób:
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
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 (
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
- Teraz wiesz, jak tworzyć nowe katalogi i konfigurować wirtualne hosty dla swoich witryn internetowych na tym samym serwerze.
- Niezbędne certyfikaty SSL możesz łatwo utworzyć - jest to bezpłatne, a będą one aktualizowane automatycznie.
- Możesz wygodnie pracować z bazą danych MySQL poprzez znajomy phpMyAdmin.
- 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.
- 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ć:
By the way,
Źródło: www.habr.com