Tworzenie szablonu VPS z Drupal 9 na Centos 8

Kontynuujemy rozbudowę naszego rynku. Niedawno powiedzieliśmy Ci, jak to zrobić stworzył obraz Gitlab, a w tym tygodniu na naszym rynku pojawił się Drupal.

Opowiadamy dlaczego go wybraliśmy i jak powstał jego wizerunek.

Tworzenie szablonu VPS z Drupal 9 na Centos 8

Drupal — wygodna i wydajna platforma do tworzenia dowolnego rodzaju stron internetowych: od mikrostron i blogów po duże projekty społecznościowe, wykorzystywana również jako baza dla aplikacji internetowych, napisana w PHP i wykorzystująca relacyjne bazy danych jako magazyn danych.

Drupal 9 zawiera wszystkie funkcje wprowadzone w wersji 8.9. Kluczowa różnica między wersją 9 a wersją 8 polega na tym, że platforma będzie nadal otrzymywać aktualizacje i poprawki zabezpieczeń po listopadzie 2021 r. Wersja 9 upraszcza także proces aktualizacji, czyniąc proces aktualizacji z wersji 8 jeszcze łatwiejszym.

Wymagania serwera

Aby korzystać z Drupala, zaleca się użycie 2 GB RAM i 2 rdzeni procesora.

Główne pliki Drupala zajmują około 100 MB, dodatkowo będziesz potrzebować miejsca na przechowywanie obrazów, bazy danych, motywów, dodatkowych modułów i kopii zapasowych, co będzie zależeć od wielkości Twojej witryny.

Drupal 9 wymaga PHP 7.4 lub nowszego z minimalnymi ograniczeniami (memory_limit) dla pamięci 64 MB, w przypadku stosowania dodatkowych modułów zaleca się montaż 128 MB.

Drupal może używać Apache lub Nginx jako serwera WWW oraz MySQL, PostgreSQL lub SQLite jako bazy danych.

Będziemy instalować Drupala przy użyciu Nginx i MySQL.

Instalacja

Zaktualizujmy zainstalowane pakiety do najnowszej wersji:

sudo dnf update -y

Dodajmy stałe pozwolenie na ruch przychodzący do portów http/80 i https/443:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

Zastosujmy nowe reguły zapory sieciowej:

sudo systemctl reload firewalld

Zainstalujmy Nginx:

sudo dnf install nginx -y

Zacznijmy i włączmy serwer Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Ponieważ główne repozytorium Centos używa obecnie PHP 7.2, dodajmy repozytorium REMI z PHP 7.4 (minimalna wersja dla Drupala 9).
W tym celu należy dodać repozytorium EPEL (wymagane przez repozytorium REMI):

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Dodajmy repozytorium REMI:

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Włączmy moduł php:remi-7.4, aby zainstalować php 7.4:

sudo dnf module enable php:remi-7.4 -y

Zainstaluj php-fpm i php-cli:

sudo dnf install -y php-fpm php-cli

Zainstalujmy moduły PHP wymagane do działania Drupala:

sudo dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xml

Zainstalujemy także zalecane moduły opcache PHP mbstring:

sudo dnf install -y php-mbstring php-opcache

Zainstalujmy serwer MySQL:

sudo dnf install mysql-server -y

Włączmy i uruchommy serwer MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Ponieważ tworzymy szablon dla VDS i mogą one być powolne, dodamy opóźnienie uruchomienia mysqld wynoszące 30 sekund, w przeciwnym razie mogą wystąpić problemy z uruchomieniem serwera podczas początkowego rozruchu systemu:

sudo sed -i '/Group=mysql/a 
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service

Zmieńmy grupę i użytkownika, pod którymi będzie działać nginx, wprowadzając zmiany w /etc/php-fpm.d/www.conf:

sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf

Zmieńmy odpowiednio właściciela katalogu sesji PHP na nginx:

sudo chown -R nginx. /var/lib/php/session

Usuńmy linie z komentarzami z pliku konfiguracyjnego /etc/nginx/nginx.conf (aby nie było podwójnych wyzwalaczy dla sed):

sudo sed -i -e '/^[ t]*#/d'  /etc/nginx/nginx.conf

Dodaj ustawienia kompresji gzip do /etc/nginx/nginx.conf

sudo sed -i '/types_hash_max_size 2048;/a 

    gzip on;
    gzip_static on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
    gzip_comp_level 9;
    gzip_proxied any;
    gzip_min_length 1000;
    gzip_disable "msie6";
    gzip_vary on; 
' /etc/nginx/nginx.conf

Dodajmy ustawienia pliku indeksu indeks.php do /etc/nginx/nginx.conf:

sudo sed -i '/        root         /usr/share/nginx/html;/a 
        index index.php index.html index.htm;
' /etc/nginx/nginx.conf

Dodajmy ustawienia dla serwera domyślnego: przetwarzanie PHP przez gniazdo php-fpm, wyłącz logi dla plików statycznych, zwiększ czas wygaśnięcia, wyłącz logi dostępu i błędów dla favicon.ico i robots.txt oraz odmów dostępu do .ht pliki dla wszystkich:

sudo sed -i '/        location / {/a 
		try_files $uri $uri/ /index.php?q=$uri&$args;
        }
    
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
        access_log off;
        expires max;
        }
    
        location ~ .php$ {
        try_files  $uri =404;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    
        location = /favicon.ico {
        log_not_found off;
        access_log off;
        }
    
        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }
    
        location ~ /.ht {
        deny all;' /etc/nginx/nginx.conf

Zainstaluj wget wymagany do zainstalowania certbota:

sudo dnf install wget -y

Pobierz plik wykonywalny certbota z zewnętrznej witryny:

cd ~
wget https://dl.eff.org/certbot-auto

Przenieś certbota do /usr/local/bin/:

mv certbot-auto /usr/local/bin/certbot-auto

I przypiszmy prawa jako właściciel do roota:

chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Zainstalujmy zależności certbota i na tym etapie przerwijmy jego pracę (Odpowiedzi: Y, c):

certbot-auto

Pobierzmy archiwum z najnowszą wersją Drupala 9 z offsite:

cd ~
wget https://www.drupal.org/download-latest/tar.gz

Zainstaluj tar, aby rozpakować archiwum:

sudo dnf install tar -y

Usuńmy domyślne pliki z katalogu /usr/share/nginx/html/:

rm -rf /usr/share/nginx/html/*

Rozpakujmy pliki do katalogu serwera WWW:

tar xf tar.gz -C /usr/share/nginx/html/

Przenieśmy pliki z podkatalogu do katalogu głównego serwera WWW:

mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/

Usuńmy podkatalog:

rm -rf /usr/share/nginx/html/drupal-9.0.7

Usuńmy archiwum z plikami instalacyjnymi:

rm -f ./tar.gz

Przypiszmy właściciela plików nginx:

chown -R nginx. /usr/share/nginx/html

Na tym etapie wyłączymy serwer i zrobimy migawkę:

shutdown -h now

Po uruchomieniu VDS z migawki dokonamy wstępnej konfiguracji serwera MySQL uruchamiając skrypt:

mysql_secure_installation

Włączmy weryfikator hasła:

Would you like to setup VALIDATE PASSWORD component? : y

Ustawmy hasło dla użytkownika root MySQL:

New password:
Re-enter new password:

Usuńmy anonimowych użytkowników:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Uniemożliwiamy rootowi zdalne łączenie się:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Usuńmy testową bazę danych:

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Załadujmy ponownie tabele uprawnień:

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Następnie, aby zakończyć instalację, możemy przejść do adres_ip_vps
Pod tym adresem zobaczymy stronę instalacyjną Drupala.

Wybierzmy język, którego będziemy używać. Na przykład: rosyjski. Kliknij „Zapisz i kontynuuj”

Wybierzmy profil instalacyjny (demo służy wyłącznie do zapoznania się z systemem). W naszym przypadku niech będzie „standardowo”.

Na następnej stronie nadamy bazie danych nazwę, np. „drupal”. Wskażmy nazwę użytkownika bazy danych root i hasło nadane mu podczas uruchamiania mysql_secure_installation. Kliknij „Zapisz i kontynuuj”.

Poczekajmy na zakończenie instalacji i aktualizacji tłumaczeń (proces może zająć kilka minut).

Wskażemy nazwę witryny, ustalimy adres e-mail witryny (w imieniu którego będą wysyłane powiadomienia z witryny), login, hasło i adres e-mail konta administratora Drupala. Ustawimy także kraj i strefę czasową w ustawieniach regionalnych. I zakończ instalację, klikając „Zapisz i kontynuuj”.

Następnie możesz przejść do panelu sterowania z utworzonym loginem i hasłem administratora Drupala.

Konfigurowanie protokołu HTTPS (opcjonalnie)

Aby skonfigurować HTTPS, VDS musi mieć prawidłową nazwę DNS, określ w

/etc/nginx/nginx.conf

w sekcji serwera nazwa serwera (na przykład):

server_name  domainname.ru;

Uruchommy ponownie Nginx:

service nginx restart

Uruchommy certbota:

sudo /usr/local/bin/certbot-auto --nginx

Podaj swój adres e-mail, zaakceptuj regulamin (A), Zapisz się do newslettera (opcjonalnie) (N), wybierz nazwy domen, dla których chcesz wystawić certyfikat (Wpisz dla wszystkich).

Jeżeli wszystko przebiegło bez błędów, pojawi się komunikat o pomyślnym wydaniu certyfikatów i konfiguracji serwera:

Congratulations! You have successfully enabled ...

Następnie połączenia z portem 80 zostaną przekierowane na port 443 (https).

Dodaj do /etc/crontab, aby automatycznie aktualizować certyfikaty:

# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"

Konfigurowanie zabezpieczeń zaufanego hosta (zalecane)

To ustawienie ma na celu rozwiązanie problemu związanego z dynamicznym określaniem base_url i ma na celu zapobieganie atakom na nagłówek HTTP HOST (kiedy Twoja witryna myśli, że to ktoś inny).

Aby to zrobić, musisz określić zaufane nazwy domen dla witryny w pliku ustawień.

W pliku

/usr/share/nginx/html/sites/default/settings.php Odkomentujmy lub dodajmy ustawienie ze wzorami rzeczywistych nazw witryn, na przykład:

$settings['trusted_host_patterns'] = [
  '^www.mydomain.ru$',
];

Instalacja PHP APCu (ZALECANE)

Drupal obsługuje APCu - alternatywną pamięć podręczną użytkownika PHP, wersje 8 i 9 w większym stopniu wykorzystują APCu jako krótkoterminową lokalną pamięć podręczną niż poprzednie wersje. Domyślny rozmiar pamięci podręcznej (32 MB) jest odpowiedni dla większości witryn i nie może przekraczać 512 MB.

Aby aktywować, zainstaluj moduł PHP APCu:

dnf -y install php-pecl-apcu

Uruchom ponownie Nginx i php-fpm:

service nginx restart
service php-fpm restart

Jeśli używasz języka rosyjskiego i APCu z zalecaną wielkością pamięci podręcznej, w panelu sterowania może pojawić się ostrzeżenie, że wielkość przydzielonej pamięci podręcznej różni się od zalecanej, ale w rzeczywistości wszystko działa poprawnie, a błędne ostrzeżenie zostanie najprawdopodobniej poprawione w kolejnych aktualizacjach.

Lub jeśli ostrzeżenie rani twoje oczy, możesz użyć odpowiednia łatka z zewnątrz.

Przypominamy, że możesz wykonać dla nas również wizerunek

Istnieją trzy możliwości wzięcia udziału.

Przygotuj obraz samodzielnie i zdobądź 3000 rubli na swoje saldo

Jeśli jesteś gotowy, aby natychmiast ruszyć do bitwy i stworzyć wizerunek, którego Ci brakuje, zasilimy Twoje wewnętrzne saldo 3000 rubli, które będziesz mógł wydać na serwery.

Jak stworzyć własny wizerunek:

  1. Utwórz u nas konto na witryna internetowa
  2. Poinformuj wsparcie, że zamierzasz utworzyć i przetestować obrazy
  3. Przekażemy Ci 3000 rubli i umożliwimy tworzenie migawek
  4. Zamów serwer wirtualny z czystym systemem operacyjnym
  5. Zainstaluj oprogramowanie na tym VPS i skonfiguruj je
  6. Napisz instrukcje lub skrypt dotyczący wdrożenia oprogramowania
  7. Utwórz migawkę dla skonfigurowanego serwera
  8. Zamów nowy serwer wirtualny, wybierając wcześniej utworzoną migawkę z listy rozwijanej „Szablon serwera”.
  9. Jeśli serwer zostanie utworzony pomyślnie, przekaż otrzymane na etapie 6 materiały do ​​wsparcia technicznego
  10. Jeśli wystąpi błąd, możesz sprawdzić przyczynę, kontaktując się z pomocą techniczną, i powtórzyć konfigurację

Dla właścicieli firm: zaoferuj swoje oprogramowanie

Jeśli jesteś programistą wdrażanym i używanym na VPS, możemy włączyć Cię na rynek. W ten sposób możemy pomóc Ci pozyskać nowych klientów, ruch i świadomość. Napisz do nas

Powiedz nam w komentarzach, jakiego obrazu Ci brakuje?

I sami go przygotujemy

Tworzenie szablonu VPS z Drupal 9 na Centos 8

Tworzenie szablonu VPS z Drupal 9 na Centos 8

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