Creazione di un Template VPS cù Drupal 9 nantu à Centos 8

Continuemu à espansione u nostru mercatu. Recentemente avemu parlatu di cumu hà fattu una maghjina Gitlab, è sta settimana Drupal apparsu in u nostru mercatu.

Dicemu perchè avemu sceltu è cumu l'imaghjini hè stata creata.

Creazione di un Template VPS cù Drupal 9 nantu à Centos 8

analytics hè una piattaforma còmuda è putente per creà ogni tipu di siti: da micrositi è blog à grandi prughjetti suciali, chì hè ancu utilizatu com'è a basa per l'applicazioni web, scritte in PHP è aduprendu basa di dati relazionale cum'è almacenamiento di dati.

Drupal 9 include tutte e funzioni introdutte in a versione 8.9. A diferenza chjave trà a versione 9 è a versione 8 hè chì a piattaforma continuarà à riceve aghjurnamenti è correzioni di sicurezza dopu à nuvembre 2021. Ancu in a versione 9, u prucessu di aghjurnamentu hè statu simplificatu, facendu u prucessu di aghjurnamentu da a versione 8 ancu più faciule.

Requisiti di u servitore

Per utilizà Drupal, hè cunsigliatu di utilizà 2 GB di RAM è 2 core CPU.

I schedarii principali di Drupal sò circa 100 MB, in più avete bisognu di spaziu per almacenà imagine, basa di dati, temi, add-ons è backups, chì dependeranu di a dimensione di u vostru situ.

Drupal 9 richiede PHP 7.4 o superiore cù un limitu minimu (memory_limit) à 64 MB di memoria, in casu di utilizà moduli supplementari, hè cunsigliatu di installà 128 MB.

Drupal pò aduprà Apache o Nginx cum'è un servitore web, è MySQL, PostgreSQL o SQLite cum'è una basa di dati.

Stallaremu Drupal cù Nginx è MySQL.

rimarchevuli

Aghjurnate i pacchetti installati à l'ultima versione:

sudo dnf update -y

Aghjunghjemu un permessu permanente per u trafficu entrante à i porti http/80 è https/443:

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

Applicà e novi regule di firewall:

sudo systemctl reload firewalld

Installa Nginx:

sudo dnf install nginx -y

Cuminciamu è attivemu u servitore Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Siccomu PHP 7.2 hè attualmente utilizatu in u repositoriu principalu di Centos, aghjunghjemu u repository REMI cù PHP 7.4 (a versione minima per Drupal 9).
Per fà questu, aghjunghje u repository EPEL (necessariu da u repository REMI):

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

Aghjunghjemu u repositariu REMI:

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

Habilita u modulu php:remi-7.4 per installà php 7.4:

sudo dnf module enable php:remi-7.4 -y

Installa php-fpm è php-cli:

sudo dnf install -y php-fpm php-cli

Installa i moduli PHP necessarii per Drupal per travaglià:

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

Installemu ancu i moduli PHP cunsigliati mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Installa u servitore MySQL:

sudo dnf install mysql-server -y

Habilita è cuminciate u servitore MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Siccomu facemu un mudellu per VDS, è ponu esse lentu, aghjunghjemu un ritardu di iniziu di mysqld di 30 seconde, altrimenti pò esse prublemi à inizià u servitore durante l'iniziu iniziale di u sistema:

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

Cambiemu u gruppu è l'utilizatore sottu quale nginx correrà fendu cambiamenti à /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

Cambia u pruprietariu di u cartulare di sessione PHP in nginx in cunseguenza:

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

Sguassemu e linee di cumenti da u schedariu di cunfigurazione /etc/nginx/nginx.conf (per chì ùn ci hè micca duppiu hit per sed):

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

Aghjunghjite i paràmetri di compressione gzip à /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

Aghjunghjemu i paràmetri di u schedariu index.php à /etc/nginx/nginx.conf:

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

Aghjunghjemu paràmetri per u processu di u servitore predeterminatu php à traversu u socket php-fpm, disattiveghjanu u logu per i schedarii statici, aumente u tempu di scadenza, disattiveghjanu l'accessu è u logu d'errore per favicon.ico è robots.txt è nigà l'accessu à i schedari .ht per tutti :

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

Installa wget necessariu per installà certbot:

sudo dnf install wget -y

Scaricate u schedariu eseguibile certbot da fora di u situ:

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

Sposta certbot à /usr/local/bin/:

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

È assignate i diritti è a pruprietà à root:

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

Installa e dipendenze di certbot è ferma in questa fase (Risposte: Y, c):

certbot-auto

Scaricate l'archiviu cù l'ultima versione di Drupal 9 da fora di u situ:

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

Installa tar per unpack l'archiviu:

sudo dnf install tar -y

Eliminate i fugliali predeterminati in u cartulare /usr/share/nginx/html/:

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

Unzip i schedari à u cartulare di u servitore web:

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

Sposta i schedari da u subdirectory à u cartulare radicale di u servitore web:

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

Sguassà u subdirectory:

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

Eliminate l'archiviu cù i schedarii di stallazione:

rm -f ./tar.gz

Stabilite u pruprietariu di i schedari nginx:

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

In questu stadiu, spegneremu u servitore è piglià una snapshot:

shutdown -h now

Dopu avè principiatu u VDS da a snapshot, realicemu a cunfigurazione iniziale di u servitore MySQL eseguendu u script:

mysql_secure_installation

Attivate u validatore di password:

Would you like to setup VALIDATE PASSWORD component? : y

Stabilite a password di l'utilizatore root MySQL:

New password:
Re-enter new password:

Elimina l'utilizatori anonimi:

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

Impedemu chì a root si cunnetta remotamente:

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

Eliminate a basa di dati di prova:

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

Ricaricate e tabelle di privilegi:

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

Dopu quì, per compie a stallazione, pudemu andà indirizzu_ip_vps
À questu indirizzu vedemu una pagina cù a stallazione di Drupal.

Selezziunà a lingua da esse usata. Per esempiu: Russian. Cliccate "Salvà è Cuntinuà"

Sceglie un prufilu d'installazione (a demo hè aduprata solu per familiarizà cù u sistema). In u nostru casu, lasciate esse "standard".

In a pagina dopu, dà un nome à a basa di dati, cum'è "drupal". Specificate u nome d'utilizatore root di a basa di dati è a password datu à ellu quandu principia mysql_secure_installation. Cliccate "Salvà è Cuntinuà".

Aspittemu chì a stallazione è l'aghjurnamentu di e traduzzioni finiscinu (u prucessu pò piglià parechji minuti).

Specificate u nome di u situ, stabilisce l'e-mail di u situ (in nome di quale ghjunghjerà e notificazioni di u situ), login, password è email di u contu amministratore Drupal. Puderemu ancu u paese è u fusu orariu in i paràmetri regiunale. È compie a stallazione clicchendu "Salvà è Cuntinuà".

Dopu quì, pudete andà à u pannellu di cuntrollu cù u login amministratore Drupal creatu è password.

Impostazione HTTPS (opzionale)

Per cunfigurà HTTPS, u VDS deve avè un nome DNS validu, specificate in

/etc/nginx/nginx.conf

in a sezione di u servitore u nome di u servitore (per esempiu):

server_name  domainname.ru;

Riavvia nginx:

service nginx restart

Cuminciamu à certbot:

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

Inserite u vostru e-mail, accettà i termini di serviziu (A), Subscribe to the newsletter (optional) (N), selezziunate i nomi di duminiu per quale vulete emette un certificatu (Enter for all).

Se tuttu hè andatu senza errore, vedemu un missaghju nantu à l'emissione successu di certificati è a configurazione di u servitore:

Congratulations! You have successfully enabled ...

Dopu quì, e cunnessione in u portu 80 seranu rediretti à 443 (https).

Aghjunghjite à /etc/crontab per rinnuvà automaticamente i certificati:

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

Configurazione di a Sicurezza di l'Host Trusted (cunsigliatu)

Questa paràmetra hè pensata cum'è una suluzione à u prublema di a deteczione di base_url dinamica, è hè destinata à prevene l'attacchi HTTP HOST Header (quandu u vostru situ pensa chì hè un altru).

Per fà questu, avete bisognu di specificà i nomi di duminiu di fiducia di u situ in u schedariu di paràmetri.

In u schedariu

/usr/share/nginx/html/sites/default/settings.php uncomment o aghjunghje un paràmetru cù mudelli di nomi di siti attuali, per esempiu:

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

Installa PHP APCu (RACCOMANDATA)

Drupal supporta APCu - Alternative PHP User Cache, e versioni 8 è 9 utilizanu APCu in modu più intensivu cum'è cache lucale à cortu termini cà e versioni precedenti. A dimensione di cache predeterminata (32 MB) adatta à a maiò parte di i siti, è ùn pò micca più di 512 MB.

Per attivà, installate u modulu PHP APCu:

dnf -y install php-pecl-apcu

Riavvia nginx è php-fpm:

service nginx restart
service php-fpm restart

In u casu di utilizà a lingua russa è l'APCu cù a dimensione di memoria di cache cunsigliata, pudete vede un avvisu in u pannellu di cuntrollu chì a dimensione di a memoria di cache assignata difiere da quella cunsigliata, ma in fatti tuttu funziona bè, è l'incorrettu. L'avvertimentu serà più prubabile riparatu in e prossime aghjurnamenti.

O se l'avvertimentu ferite l'ochju, pudete aduprà patch currispondente da fora di u situ.

Vulemu ricurdà chì pudete ancu fà una maghjina per noi

Ci hè trè opzioni per cumu participà.

Preparate l'imaghjini sè stessu è uttene 3000 rubli nantu à u vostru equilibriu

Sè vo site prontu à affruntà subitu in battaglia è creà l'imaghjini chì vi manca di sè stessu, vi creditu cù 3000 XNUMX rubles à u vostru equilibriu internu - pudete spende in i servitori.

Cumu creà a vostra imagina:

  1. Crea un contu cun noi situ
  2. Dì à u supportu chì site per creà è pruvà l'imaghjini
  3. Vi creditemu 3000 rubli è attiveremu a capacità di creà snapshots
  4. Ordine un servitore virtuale cù un sistema operatore pulitu
  5. Installa u software nantu à questu VPS è stallate
  6. Scrivite struzzioni o script per l'implementazione di u software
  7. Crea una snapshot per u servitore cunfiguratu
  8. Ordine un novu servitore virtuale selezziunendu l'istantanea creata prima in u listinu drop-down "Model di servitore".
  9. In casu di creazione successu di u servitore, trasferisce i materiali ricevuti à u passu 6 à u supportu tecnicu
  10. In casu d'errore, pudete cuntrollà cù supportu per u mutivu è ripetite a cunfigurazione

Per i pruprietarii di l'imprese: offre u vostru software

Sè vo site un sviluppatore di software chì hè implementatu è utilizatu in un VPS, allora pudemu includevi in ​​u mercatu. Hè cusì chì pudemu aiutà à purtà novi clienti, trafficu è visibilità. Scriviteci

Fateci sapè in i cumenti chì imagine vi manca?

È avemu da priparà noi stessi

Creazione di un Template VPS cù Drupal 9 nantu à Centos 8

Creazione di un Template VPS cù Drupal 9 nantu à Centos 8

Source: www.habr.com