Ustvarjanje predloge VPS z Drupal 9 na Centos 8

Še naprej širimo naš trg. Nedavno smo vam povedali, kako naredil Gitlab sliko, ta teden pa se je na naši tržnici pojavil Drupal.

Povemo vam, zakaj smo ga izbrali in kako je nastala podoba.

Ustvarjanje predloge VPS z Drupal 9 na Centos 8

Drupal — priročna in zmogljiva platforma za ustvarjanje vseh vrst spletnih strani: od mikrostrani in blogov do velikih socialnih projektov, ki se uporablja tudi kot osnova za spletne aplikacije, napisane v PHP in uporabljajo relacijske baze podatkov kot shrambo podatkov.

Drupal 9 vključuje vse funkcije, predstavljene v različici 8.9. Ključna razlika med različico 9 in različico 8 je, da bo platforma po novembru 2021 še naprej prejemala posodobitve in varnostne popravke. Različica 9 prav tako poenostavlja postopek posodobitve, zaradi česar je postopek nadgradnje z različice 8 še lažji.

Zahteve strežnika

Za uporabo Drupala je priporočljivo uporabljati 2 GB RAM-a in 2 CPU jedri.

Glavne datoteke Drupal zavzamejo približno 100 MB, poleg tega boste potrebovali prostor za shranjevanje slik, baze podatkov, tem, dodatnih modulov in varnostnih kopij, kar bo odvisno od velikosti vašega spletnega mesta.

Drupal 9 zahteva PHP 7.4 ali novejši z minimalno omejitvijo (memory_limit) za 64 MB pomnilnika; če se uporabljajo dodatni moduli, je priporočljivo namestiti 128 MB.

Drupal lahko uporablja Apache ali Nginx kot spletni strežnik, MySQL, PostgreSQL ali SQLite pa kot bazo podatkov.

Drupal bomo namestili z uporabo Nginx in MySQL.

Namestitev

Posodobimo nameščene pakete na najnovejšo različico:

sudo dnf update -y

Dodajmo trajno dovoljenje za dohodni promet na vrata http/80 in https/443:

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

Uporabimo nova pravila požarnega zidu:

sudo systemctl reload firewalld

Namestimo Nginx:

sudo dnf install nginx -y

Zaženimo in omogočimo strežnik Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Ker glavni repozitorij Centos trenutno uporablja PHP 7.2, dodajmo repozitorij REMI s PHP 7.4 (najmanjša različica za Drupal 9).
Če želite to narediti, dodajte repozitorij EPEL (zahteva ga repozitorij REMI):

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

Dodajmo repozitorij REMI:

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

Omogočimo modul php:remi-7.4 za namestitev php 7.4:

sudo dnf module enable php:remi-7.4 -y

Namestite php-fpm in php-cli:

sudo dnf install -y php-fpm php-cli

Namestimo module PHP, potrebne za delovanje 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

Namestili bomo tudi priporočene module PHP mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Namestimo strežnik MySQL:

sudo dnf install mysql-server -y

Vklopimo in zaženemo strežnik MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Ker izdelujemo predlogo za VDS in so lahko počasni, bomo dodali zakasnitev zagona mysqld 30 sekund, sicer lahko pride do težav z zagonom strežnika med začetnim zagonom sistema:

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

Spremenimo skupino in uporabnika, pod katerim se bo izvajal nginx, tako da spremenimo /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

Ustrezno spremenimo lastnika imenika sej PHP v nginx:

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

Odstranimo vrstice s komentarji iz konfiguracijske datoteke /etc/nginx/nginx.conf (tako da ni dvojnih sprožilcev za sed):

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

Dodajte nastavitve stiskanja gzip v /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

Dodajmo nastavitve indeksne datoteke index.php v /etc/nginx/nginx.conf:

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

Dodajmo nastavitve za privzeti strežnik: obdelava PHP prek vtičnice php-fpm, onemogoči dnevnik za statične datoteke, povečaj čas poteka, onemogoči dostop in dnevnik napak za favicon.ico in robots.txt ter zavrni dostop do .ht datoteke za vse:

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

Namestite wget, potreben za namestitev certbota:

sudo dnf install wget -y

Prenesite izvršljivo datoteko certbot z zunanjega mesta:

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

Premaknite certbot v /usr/local/bin/:

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

In dodelimo pravice kot lastnik za root:

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

Namestimo odvisnosti certbota in na tej stopnji prekinimo njegovo delo (Odgovori: Y, c):

certbot-auto

Prenesimo arhiv z najnovejšo različico Drupal 9 z zunanje strani:

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

Namestite tar, da razpakirate arhiv:

sudo dnf install tar -y

Izbrišite privzete datoteke v imeniku /usr/share/nginx/html/:

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

Razpakirajmo datoteke v imenik spletnega strežnika:

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

Premaknimo datoteke iz podimenika v korenski imenik spletnega strežnika:

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

Izbrišemo podimenik:

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

Izbrišemo arhiv z namestitvenimi datotekami:

rm -f ./tar.gz

Dodelimo lastnika datotek nginx:

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

Na tej stopnji bomo izklopili strežnik in naredili posnetek:

shutdown -h now

Po zagonu VDS iz posnetka bomo izvedli začetno nastavitev strežnika MySQL z zagonom skripta:

mysql_secure_installation

Omogočimo validator gesel:

Would you like to setup VALIDATE PASSWORD component? : y

Nastavimo geslo za korenskega uporabnika MySQL:

New password:
Re-enter new password:

Odstranimo anonimne uporabnike:

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

Preprečimo rootu, da bi se povezal na daljavo:

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

Izbrišemo testno bazo podatkov:

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

Ponovno naložimo tabele privilegijev:

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

Po tem, da dokončamo namestitev, lahko gremo na vps_ip_naslov
Na tem naslovu bomo videli stran za namestitev Drupala.

Izberimo jezik za uporabo. Na primer: ruski. Kliknite »Shrani in nadaljuj«

Izberimo namestitveni profil (demo služi izključno za seznanitev s sistemom). V našem primeru naj bo "standard".

Na naslednji strani bomo bazi podatkov dali ime, na primer »drupal«. Označimo uporabniško ime baze podatkov root in geslo, ki mu je bilo dano pri izvajanju mysql_secure_installation. Kliknite »Shrani in nadaljuj«.

Počakajmo, da se namestitev in posodobitev prevodov konča (postopek lahko traja nekaj minut).

Navedli bomo ime spletnega mesta, nastavili e-poštni naslov spletnega mesta (v imenu katerega bodo poslana obvestila spletnega mesta), prijavo, geslo in e-poštni naslov skrbniškega računa Drupal. V regionalnih nastavitvah bomo nastavili tudi državo in časovni pas. In dokončajte namestitev s klikom na »Shrani in nadaljuj«.

Po tem lahko odprete nadzorno ploščo z ustvarjeno skrbniško prijavo in geslom Drupal.

Nastavitev HTTPS (izbirno)

Za konfiguracijo HTTPS mora imeti VDS veljavno ime DNS, navedite v

/etc/nginx/nginx.conf

v razdelku strežnika ime strežnika (na primer):

server_name  domainname.ru;

Ponovno zaženimo nginx:

service nginx restart

Zaženimo certbot:

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

Vnesite svoj e-mail, strinjajte se s pogoji storitve (A), naročite se na novice (izbirno) (N), izberite imena domen, za katere želite izdati potrdilo (Vnesite za vse).

Če je vse potekalo brez napak, bomo videli sporočilo o uspešni izdaji potrdil in konfiguraciji strežnika:

Congratulations! You have successfully enabled ...

Po tem bodo povezave do vrat 80 preusmerjene na 443 (https).

Dodajte v /etc/crontab za samodejno posodabljanje potrdil:

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

Nastavitev varnosti zaupanja vrednega gostitelja (priporočeno)

Ta nastavitev je mišljena kot rešitev za težavo, povezano z dinamičnim določanjem base_url, in je zasnovana za preprečevanje napadov HTTP HOST Header (ko vaše spletno mesto misli, da je nekdo drug).

Če želite to narediti, morate v datoteki z nastavitvami določiti imena zaupanja vrednih domen za spletno mesto.

V datoteki

/usr/share/nginx/html/sites/default/settings.php Odkomentirajmo ali dodajmo nastavitev z vzorci dejanskih imen spletnih mest, na primer:

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

Namestitev PHP APCu (PRIPOROČANO)

Drupal podpira APCu – alternativni uporabniški predpomnilnik PHP, različici 8 in 9 bolj uporabljata APCu kot kratkoročni lokalni predpomnilnik kot prejšnje različice. Privzeta velikost predpomnilnika (32 MB) je primerna za večino spletnih mest in ne sme preseči 512 MB.

Za aktivacijo namestite modul PHP APCu:

dnf -y install php-pecl-apcu

Znova zaženite nginx in php-fpm:

service nginx restart
service php-fpm restart

Če uporabljate ruski jezik in APCu s priporočeno velikostjo pomnilnika za predpomnilnik, boste morda na nadzorni plošči videli opozorilo, da je velikost dodeljenega pomnilnika za predpomnilnik drugačna od priporočene, vendar v resnici vse deluje pravilno, in nepravilno opozorilo bo najverjetneje popravljeno v naslednjih posodobitvah.

Če pa vas opozorilo boli v oči, lahko uporabite ustrezen popravek z zunanje strani.

Opozarjamo vas, da nam lahko izdelate tudi sliko

Obstajajo tri možnosti za sodelovanje.

Pripravite sliko sami in dobite 3000 rubljev na svoje stanje

Če ste pripravljeni takoj pohiteti v boj in ustvariti podobo, ki vam manjka, vam bomo na vaše notranje stanje pripisali 3000 rubljev, ki jih lahko porabite na strežnikih.

Kako ustvariti svojo sliko:

  1. Ustvarite račun pri nas na Online
  2. Sporočite podpori, da boste ustvarili in preizkusili slike
  3. Pripisali vam bomo 3000 rubljev in omogočili možnost ustvarjanja posnetkov
  4. Naročite virtualni strežnik s čistim operacijskim sistemom
  5. Namestite programsko opremo na ta VPS in jo konfigurirajte
  6. Napišite navodila ali skript za namestitev programske opreme
  7. Ustvarite posnetek za konfigurirani strežnik
  8. Naročite nov virtualni strežnik tako, da na spustnem seznamu »Predloga strežnika« izberete predhodno ustvarjen posnetek
  9. Če je strežnik uspešno ustvarjen, prenesite materiale, prejete na stopnji 6, v tehnično podporo
  10. Če pride do napake, lahko pri podpori preverite vzrok in ponovite nastavitev

Za lastnike podjetij: ponudite svojo programsko opremo

Če ste razvijalec programske opreme, ki je nameščena in uporabljena na VPS, vas lahko vključimo na trg. Tako vam lahko pomagamo pridobiti nove stranke, promet in prepoznavnost. Pišite nam

Povejte nam v komentarjih, katero sliko pogrešate?

In pripravili ga bomo sami

Ustvarjanje predloge VPS z Drupal 9 na Centos 8

Ustvarjanje predloge VPS z Drupal 9 na Centos 8

Vir: www.habr.com