Kreante VPS-Ŝablonon kun Drupalo 9 sur Centos 8

Ni daŭre vastigas nian vendoplacon. Ni lastatempe rakontis al vi kiel faris Gitlab-bildon, kaj ĉi-semajne Drupalo aperis en nia vendoplaco.

Ni rakontas al vi kial ni elektis lin kaj kiel la bildo estis kreita.

Kreante VPS-Ŝablonon kun Drupalo 9 sur Centos 8

Drupalo — oportuna kaj potenca platformo por krei ajnan tipon de retejo: de mikroretejoj kaj blogoj ĝis grandaj sociaj projektoj, ankaŭ uzata kiel bazo por ret-aplikoj, verkita en PHP kaj uzante rilatajn datumbazojn kiel datumstokado.

Drupalo 9 inkluzivas ĉiujn funkciojn prezentitajn en versio 8.9. La ŝlosila diferenco inter versio 9 kaj versio 8 estas, ke la platformo daŭre ricevos ĝisdatigojn kaj sekurecajn korektojn post novembro 2021. Versio 9 ankaŭ simpligas la ĝisdatigprocezon, farante la procezon de ĝisdatigo de versio 8 eĉ pli facila.

Postuloj de la servilo

Por uzi Drupalon, oni rekomendas uzi 2 GB-RAM kaj 2 CPU-kernojn.

La ĉefaj Drupalaj dosieroj okupas ĉirkaŭ 100 MB, krome vi bezonos spacon por konservi bildojn, datumbazon, temojn, pliajn modulojn kaj sekurkopiojn, kiuj dependos de la grandeco de via retejo.

Drupalo 9 postulas PHP 7.4 aŭ pli altan kun minimuma limigo (memory_limit) por 64 MB-memoro; se aldonaj moduloj estas uzataj, oni rekomendas instali 128 MB.

Drupalo povas uzi Apache aŭ Nginx kiel retservilon, kaj MySQL, PostgreSQL aŭ SQLite kiel datumbazon.

Ni instalos Drupalon per Nginx kaj MySQL.

fikso

Ni ĝisdatigu la instalitajn pakaĵojn al la plej nova versio:

sudo dnf update -y

Ni aldonu konstantan permeson por envenanta trafiko al http/80 kaj https/443-havenoj:

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

Ni apliku la novajn regulojn pri fajroŝirmilo:

sudo systemctl reload firewalld

Ni instalu Nginx:

sudo dnf install nginx -y

Ni komencu kaj ebligu la Nginx-servilon:

sudo systemctl start nginx
sudo systemctl enable nginx

Ĉar la ĉefa Centos-deponejo nuntempe uzas PHP 7.2, ni aldonu REMI-deponejon kun PHP 7.4 (minimuma versio por Drupalo 9).
Por fari tion, aldonu la EPEL-deponejon (postulata de la REMI-deponejo):

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

Ni aldonu la REMI-deponejon:

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

Ni ebligu la modulon php:remi-7.4 por instali php 7.4:

sudo dnf module enable php:remi-7.4 -y

Instalu php-fpm kaj php-cli:

sudo dnf install -y php-fpm php-cli

Ni instalu la PHP-modulojn necesajn por ke Drupalo funkciu:

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

Ni ankaŭ instalos la rekomenditajn PHP mbstring opcache-modulojn:

sudo dnf install -y php-mbstring php-opcache

Ni instalu la MySQL-servilon:

sudo dnf install mysql-server -y

Ni ŝaltu kaj lanĉu la MySQL-servilon:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Ĉar ni faras ŝablonon por VDS, kaj ili povas esti malrapidaj, ni aldonos mysqld-komencprokraston de 30 sekundoj, alie povas esti problemoj kun la servilo komenciĝi dum la komenca sistema ekfunkciigo:

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

Ni ŝanĝu la grupon kaj uzanton, sub kiuj nginx funkcios, farante ŝanĝojn al /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

Ni ŝanĝu la posedanton de la PHP-sesiaj dosierujoj al nginx laŭe:

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

Ni forigu la liniojn kun komentoj el la agorda dosiero /etc/nginx/nginx.conf (por ke ne estu duoblaj ellasiloj por sed):

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

Aldonu gzip-kunpremajn agordojn al /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

Ni aldonu la agordojn de la indeksa dosiero index.php al /etc/nginx/nginx.conf:

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

Ni aldonu agordojn por la defaŭlta servilo: PHP-pretigo per la php-fpm ingo, malŝaltu la protokolon por senmovaj dosieroj, pliigu la eksvalidan tempon, malŝaltu la aliron kaj erarprotokolo por favicon.ico kaj robots.txt, kaj rifuzi aliron al .ht. dosieroj por ĉiuj:

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

Instalu wget necesan por instali certbot:

sudo dnf install wget -y

Elŝutu la plenumeblan dosieron certbot el la eksterejo:

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

Movu certbot al /usr/local/bin/:

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

Kaj ni asignu la rajtojn kiel la posedanto radiki:

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

Ni instalu la certbot-dependojn kaj en ĉi tiu etapo interrompu ĝian laboron (Respondoj: Y, c):

certbot-auto

Ni elŝutu la arkivon kun la plej nova versio de Drupalo 9 el la eksterejo:

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

Instalu tar por malpakigi la arkivon:

sudo dnf install tar -y

Ni forigu la defaŭltajn dosierojn en la dosierujo /usr/share/nginx/html/:

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

Ni malpaku la dosierojn en la dosierujon de retservilo:

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

Ni movu la dosierojn de la subdosierujo al la radika dosierujo de la retservilo:

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

Ni forigu la subdosierujon:

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

Ni forigu la arkivon kun instalaj dosieroj:

rm -f ./tar.gz

Ni asignu la posedanton de la nginx-dosieroj:

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

En ĉi tiu etapo ni malŝaltos la servilon kaj prenos momentfoton:

shutdown -h now

Post lanĉo de la VDS de la momentfoto, ni faros la komencan agordon de la MySQL-servilo rulante la skripton:

mysql_secure_installation

Ni ebligu la pasvortilon:

Would you like to setup VALIDATE PASSWORD component? : y

Ni agordu la pasvorton por la radika uzanto de MySQL:

New password:
Re-enter new password:

Ni forigu anonimajn uzantojn:

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

Ni malebligu radikon konekti malproksime:

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

Ni forigu la testan datumbazon:

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

Ni reŝargu la privilegiajn tabelojn:

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

Post ĉi tio, por kompletigi la instaladon, ni povas iri al vps_ip_adreso
Ĉe ĉi tiu adreso ni vidos la paĝon pri instalado de Drupalo.

Ni elektu la lingvon por uzi. Ekzemple: rusa. Alklaku "Konservi kaj Daŭrigi"

Ni elektu instalan profilon (la demo estas uzata nur por konatiĝi kun la sistemo). En nia kazo, ĝi estu "norma".

Sur la sekva paĝo ni donos nomon al la datumbazo, ekzemple "drupal". Ni indiku la datumbazan uzantnomon radiko kaj la pasvorton donitan al li dum rulado de mysql_secure_installation. Alklaku "Konservi kaj Daŭrigi".

Ni atendu la finiĝon de la instalado kaj ĝisdatigo de tradukoj (la procezo povas daŭri kelkajn minutojn).

Ni indikos la nomon de la retejo, agordos la retpoŝton de la retejo (en la nomo de kiu retejaj sciigoj estos senditaj), ensaluton, pasvorton kaj retpoŝton de la konto de administranto de Drupalo. Ni ankaŭ agordos la landon kaj horzonon en la regionaj agordoj. Kaj kompletigu la instaladon alklakante "Konservi kaj Daŭrigi".

Post ĉi tio, vi povas iri al la kontrolpanelo kun la kreita Drupalo-administra ensaluto kaj pasvorto.

Agordi HTTPS (laŭvola)

Por agordi HTTPS, la VDS devas havi validan DNS-nomon, specifi en

/etc/nginx/nginx.conf

en la servila sekcio la servilonomo (ekzemple):

server_name  domainname.ru;

Ni rekomencu nginx:

service nginx restart

Ni lanĉu certbot:

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

Enigu vian retmesaĝon, konsentu pri la servokondiĉoj (A), Abonu al la informilo (laŭvola) (N), elektu la domajnajn nomojn por kiuj vi volas elsendi atestilon (Enigu por ĉiuj).

Se ĉio iris sen eraroj, ni vidos mesaĝon pri la sukcesa emisio de atestiloj kaj servila agordo:

Congratulations! You have successfully enabled ...

Post tio, konektoj al haveno 80 estos redirektitaj al 443 (https).

Aldonu al /etc/crontab por aŭtomate ĝisdatigi atestojn:

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

Agordo de Fidinda Gastiganta Sekureco (rekomendita)

Ĉi tiu agordo estas celita kiel solvo al la problemo asociita kun dinamika base_url-determinado, kaj estas desegnita por malhelpi atakojn pri HTTP HOST Header (kiam via retejo opinias, ke ĝi estas iu alia).

Por fari tion, vi devas specifi fidindajn domajnajn nomojn por la retejo en la agorda dosiero.

En dosiero

/usr/share/nginx/html/sites/default/settings.php Ni malkomento aŭ aldonu agordon kun ŝablonoj de realaj retejo-nomoj, ekzemple:

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

Instalado de PHP APCu (REKOMENDA)

Drupalo subtenas APCu - Alternative PHP User Cache, versioj 8 kaj 9 faras pli grandan uzon de APCu kiel mallongperspektiva loka kaŝmemoro ol antaŭaj versioj. La defaŭlta kaŝmemoro (32 MB) taŭgas por plej multaj retejoj, kaj ne povas superi 512 MB.

Por aktivigi, instalu la modulon PHP APCu:

dnf -y install php-pecl-apcu

Rekomencu nginx kaj php-fpm:

service nginx restart
service php-fpm restart

Se vi uzas la rusan lingvon kaj APCu kun la rekomendita memorgrando por la kaŝmemoro, vi eble vidos averton en la kontrolpanelo, ke la grandeco de la asignita memoro por la kaŝmemoro diferencas de la rekomendita, sed fakte ĉio funkcias ĝuste, kaj la malĝusta averto plej verŝajne estos korektita en la venontaj ĝisdatigoj.

Aŭ se la averto doloras viajn okulojn, vi povas uzi responda flikaĵo de eksterejo.

Ni ŝatus memorigi vin, ke vi ankaŭ povas fari bildon por ni

Estas tri ebloj por kiel partopreni.

Preparu la bildon mem kaj ricevu 3000 XNUMX rublojn al via saldo

Se vi pretas tuj kuri en batalon kaj krei la bildon, kiun vi mankas, ni kreditos al vi 3000 XNUMX rublojn al via interna saldo, kiujn vi povas elspezi en serviloj.

Kiel krei vian propran bildon:

  1. Kreu konton ĉe ni ejo
  2. Sciigu subtenon, ke vi kreos kaj testos bildojn
  3. Ni kreditos al vi 3000 rublojn kaj ebligos la kapablon krei momentfotojn
  4. Mendu virtualan servilon kun pura operaciumo
  5. Instalu la programaron sur ĉi tiu VPS kaj agordu ĝin
  6. Skribu instrukciojn aŭ skripton por programaro deplojo
  7. Kreu momentfoton por la agordita servilo
  8. Mendu novan virtualan servilon elektante la antaŭe kreitan momentfoton en la fallisto "Servilo-ŝablono".
  9. Se la servilo estas sukcese kreita, transdonu la materialojn ricevitajn en la etapo 6 al teknika subteno
  10. Se estas eraro, vi povas kontroli la kialon kun subteno kaj ripeti la agordon

Por komercaj posedantoj: proponu vian programaron

Se vi estas programisto, kiu estas deplojita kaj uzata sur VPS, tiam ni povas inkluzivi vin en la vendoplaco. Jen kiel ni povas helpi vin alporti novajn klientojn, trafikon kaj konscion. Skribu al ni

Diru al ni en la komentoj, kian bildon mankas al vi?

Kaj ni mem preparos ĝin

Kreante VPS-Ŝablonon kun Drupalo 9 sur Centos 8

Kreante VPS-Ŝablonon kun Drupalo 9 sur Centos 8

fonto: www.habr.com