VPS sablon létrehozása Drupal 9-el CentOS 8-on

Folyamatosan bővítjük a piacterünket. Nemrégiben beszéltünk arról, hogy hogyan készítettük el a Gitlab képet, ezen a héten pedig megjelent a Drupal a piacterünkön.

Elmondjuk, miért éppen őt választottuk és hogyan készült a kép.

VPS sablon létrehozása Drupal 9-el CentOS 8-on

Drupal — egy kényelmes és erőteljes platform, amely lehetővé teszi bármilyen típusú weboldal létrehozását: a mikrosite-októl és blogoktól kezdve a nagyobb közösségi projekteken át, webalkalmazások alapjaként is használható, PHP nyelven íródott és relációs adatbázisokat használ adatként.

A Drupal 9 tartalmazza mindazokat a funkciókat, amelyeket a 8.9-es verzióban megvalósítottak. A fő különbség a 9-es és a 8-as verzió között, hogy a platformhoz 2021 novemberét követően is fognak frissítések és biztonsági javítások érkezni. A 9-es verzióban emellett egyszerűsítették a frissítési folyamatot, így az 8-as verzióról való frissítés még könnyebb lett.

Szerver követelmények

A Drupal használatához ajánlott 2 GB RAM és 2 CPU mag használata.

A Drupal alapfájljainak mérete körülbelül 100 MB, emellett szüksége lesz helyre a képek, adatbázis, témák, kiegészítő modulok és biztonsági másolatok tárolásához, amely a weboldal méretétől függ.

A Drupal 9-hez PHP 7.4 vagy újabb szükséges, minimális korlátozással (memory_limit) a memória számára 64 MB, kiegészítő modulok használata esetén érdemes 128 MB-ot beállítani.

A Drupal mint webkiszolgáló használhat Apache-t vagy Nginx-et, az adatbázisként pedig MySQL, PostgreSQL vagy SQLite alkalmazható.

A Drupal-t Nginx és MySQL használatával fogjuk telepíteni.

Telepítés

Frissítjük a telepített csomagokat a legújabb verzióra:

sudo dnf update -y

Hozzáadunk egy állandó engedélyt a bejövő forgalom számára a http/80 és https/443 portokhoz:

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

Alkalmazzuk az új tűzfal szabályokat:

sudo systemctl reload firewalld

Telepítjük az Nginx-et:

sudo dnf install nginx -y

Elindítjuk és engedélyezzük az Nginx szervert:

sudo systemctl start nginx
sudo systemctl enable nginx

Jelenleg a Centos fő tárolójában a PHP 7.2-es verzió található, ezért hozzáadjuk a REMI tárolót PHP 7.4-hez (ez a Drupal 9 minimum verziója).
Ehhez hozzáadjuk az EPEL tárolót (ami a REMI tárolóhoz szükséges):

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

Hozzáadjuk a REMI tárolót:

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

Engedélyezzük a php:remi-7.4 modult a PHP 7.4 telepítéséhez:

sudo dnf module enable php:remi-7.4 -y

Telepítjük a php-fpm és php-cli-t:

sudo dnf install -y php-fpm php-cli

Telepítjük a Drupal működéséhez szükséges PHP modulokat:

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

Telepítsük a javasolt PHP modulokat: mbstring opcache

sudo dnf install -y php-mbstring php-opcache

Telepítsük a MySQL szervert:

sudo dnf install mysql-server -y

Aktiváljuk és indítsuk el a MySQL szervert:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Mivel VDS sablont készítünk, amelyek lassúak lehetnek, 30 másodperces késleltetést adunk a mysqld indításához, különben problémák adódhatnak a szerver indításakor a rendszer első indításakor:

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

Megváltoztatjuk a csoportot és a felhasználót, amely alatt az nginx működni fog, a \/etc\/php-fpm.d\/www.conf fájl módosításával:

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

A PHP munkamenetek könyvtárának tulajdonosát is nginx-re állítjuk:

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

Töröljük a megjegyzéseket a \/etc\/nginx\/nginx.conf konfigurációs fájból (hogy ne legyenek duplikált triggerek a sed számára):

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

Adjunk hozzá gzip tömörítési beállításokat a \/etc\/nginx\/nginx.conf fájlhoz

sudo sed -i '\/types_hash_max_size 2048;/a \n\ngzip on;\ngzip_static on;\ngzip_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;\ngzip_comp_level 9;\ngzip_proxied any;\ngzip_min_length 1000;\ngzip_disable "msie6";\ngzip_vary on; \n' \/etc\/nginx\/nginx.conf

Adjunk hozzá index.php fájlbeállításokat a \/etc\/nginx\/nginx.conf fájlhoz:

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

Adjunk hozzá beállításokat az alapértelmezett szerver php-fpm-en keresztüli kezeléséhez, tiltsuk le a statikus fájlok naplózását, növeljük az időtartamot, tiltsuk le a hozzáférési és hibajegyzékeket a favicon.ico és robots.txt fájlokhoz, valamint tiltsuk le a .ht fájlokhoz való hozzáférést:

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

Telepítsük a certbot telepítéséhez szükséges wget-et:

sudo dnf install wget -y

Let’s download the executable file of certbot from the official site:

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

We will move certbot to /usr/local/bin/:

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

And set the owner to root:

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

We will install certbot dependencies and at this stage, we will interrupt its operation (Responses: Y, c):

certbot-auto

Let’s download the archive with the latest version of Drupal 9 from the official site:

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

We will install tar for unpacking the archive:

sudo dnf install tar -y

We will delete the default files in the directory /usr/share/nginx/html/:

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

We will unpack the files to the web server directory:

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

We will move files from the subdirectory to the root directory of the web server:

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

We will delete the subdirectory:

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

We will delete the archive with the installation files:

rm -f ./tar.gz

We will set the owner of the files to nginx:

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

At this stage, we will shut down the server and make a snapshot:

shutdown -h now

After starting the VDS from the snapshot, we will perform the initial configuration of the MySQL server by running the script:

mysql_secure_installation

We will enable the password validator:

Would you like to setup VALIDATE PASSWORD component? : y

We will set the MySQL root user password:

New password:
Re-enter new password:

We will remove anonymous users:

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

We will disallow root login remotely:

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

We will remove the test database:

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

We will reload the privilege tables:

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

After that, to complete the installation, we can go to the address vps_ip_address
At this address, we will see the installation page of Drupal.

We will select the language to be used. For example: Hungarian. We will click "Save and continue".

We will select the installation profile (demo is used solely for getting acquainted with the system). In our case, let it be "standard".

On the next page, we will set the database name, for example "drupal". We will specify the database user root and the password set for it when running mysql_secure_installation. We will click "Save and continue".

We will wait for the installation and translation updates to complete (the process may take several minutes).

Adja meg a weboldal nevét, a weboldal e-mail címét (amelyről az értesítések érkeznek), a bejelentkezési nevet, a jelszót és a Drupal adminisztrátori fiók e-mail címét. Állítsa be az országot és az időzónát a regionális beállításokban. Az installáció befejezéséhez kattintson a „Mentés és folytatás” gombra.

Ezután be lehet lépni a Drupal adminisztrációs paneljébe a létrehozott felhasználónévvel és jelszóval.

HTTPS beállítása (opcionális)

A HTTPS beállításához a VDS-nek érvényes DNS névvel kell rendelkeznie, adja meg a

/etc/nginx/nginx.conf

a szerver részben a szerver nevét (például):

server_name domainname.ru;

Indítsuk újra az nginx-et:

service nginx restart

Futtassuk a certbot-ot:

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

Adja meg az e-mail címét, fogadja el a szolgáltatás feltételeit (A), hírlevélre való feliratkozás (opcionális) (N), válassza ki azokat a domaineket, amelyekhez tanúsítványt szeretne kiállítani (Enter mindhez).

Ha minden hiba nélkül ment, akkor egy sikeres certifikációs és szerverbeállítási üzenetet fogunk látni:

Gratulálunk! Sikeresen aktiválta ...

Ezután a 80-as portokra érkező kapcsolatok át lesznek irányítva a 443-as (https) portokra.

Adjunk hozzá a /etc/crontab fájlhoz az automatikus tanúsítványfrissítéshez:

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

Trusted Host Security beállítása (ajánlott)

Ez a beállítás a base_url dinamikus meghatározásának problémájának megoldására szolgál, és célja az HTTP HOST Header támadások megakadályozása (amikor a weboldala azt hiszi, hogy valaki más).

Ehhez meg kell adnia a megbízható domainek nevét a beállítási fájlban.

A fájlban

/usr/share/nginx/html/sites/default/settings.php távolítson el vagy adjon hozzá beállítást a weboldal aktuális neveinek mintájával, például:

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

PHP APCu telepítése (AJÁNLOTT)

A Drupal támogatja az APCu-t — Alternative PHP User Cache, a 8-as és 9-es verziók az APCu-t intenzívebben használják rövidtávú helyi gyorsítótárként, mint a korábbi verziók. Az alapértelmezett gyorsítótár mérete (32 MB) a legtöbb weboldal számára megfelelő, és nem haladhatja meg az 512 MB-ot.

Az aktiváláshoz telepítse a PHP APCu modult:

dnf -y install php-pecl-apcu

Indítsuk újra az nginx-et és a php-fpm-et:

service nginx restart
service php-fpm restart

Ha orosz nyelvet használ, és az APCu a javasolt memóriamérettel van beállítva a gyorsítótár számára, a vezérlőpulton egy figyelmeztetést láthat, hogy a gyorsítótárhoz rendelt memória mérete eltér a javasolttól, de a gyakorlatban minden rendben működik, és a nem helyes figyelmeztetést valószínűleg a következő frissítésekben javítják.

Vagy ha a figyelmeztetés zavart okoz, használhatja a megfelelő patch az offsite-ról.

Emlékeztetni szeretnénk, hogy Ön is készíthet egy képet nekünk

Három lehetőség van a részvételre.

Készítse el a képet saját magának, és kapjon 3000 forintot az egyenlegére

Ha készen áll, hogy azonnal belevágjon, és elkészítse a hiányzó képet, 3000 forintot jóváírunk az egyenlegén — amelyet szerverekre költhet.

Hogyan készíthet saját képet:

  1. Regisztráljon nálunk a weboldalon
  2. Értesítse a támogató csapatot, hogy képeket szeretne létrehozni és tesztelni
  3. 3000 forintot jóváírunk Önnek, és engedélyezzük a pillanatképek készítését
  4. Rendeljen egy virtuális szervert tiszta operációs rendszerrel
  5. Telepítse erre a VPS-re a szükséges szoftvereket és állítsa be
  6. Készítsen egy útmutatót vagy szkriptet a szoftver telepítéséhez
  7. Készítsen pillanatképet az beállított szerverről
  8. Rendeljen egy új virtuális szervert a korábban készített pillanatkép kiválasztásával a legördülő menüből «Szerver sablon»
  9. Sikeres szerver létrehozása esetén adja át a 6. lépés során kapott anyagokat a műszaki támogatásnak
  10. Hiba esetén kérdezze meg a támogatást az okról, és ismételje meg a beállítást

Vállalkozások számára: ajánlja a szoftverét

Ha Ön olyan szoftver fejlesztője, amelyet VPS-en telepítenek és használnak, felvehetjük Önt a piactérre. Így segíthetünk új ügyfelek, forgalom és ismertség megszerzésében. Keressen minket

Mondja el a megjegyzésekben, milyen képre lenne szüksége?

És mi elkészítjük azt

VPS sablon létrehozása Drupal 9-el CentOS 8-on

VPS sablon létrehozása Drupal 9-el CentOS 8-on

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster