Kreye yon modèl VPS ak Drupal 9 sou Centos 8

Nou kontinye elaji mache nou an. Nou dènyèman te pale sou ki jan te fè yon imaj Gitlab, ak semèn sa a Drupal parèt sou mache nou an.

Nou di poukisa nou te chwazi li ak ki jan imaj la te kreye.

Kreye yon modèl VPS ak Drupal 9 sou Centos 8

Drupal se yon platfòm pratik ak pwisan pou kreye nenpòt kalite sit: soti nan mikrosit ak blogs nan gwo pwojè sosyal, ki se tou itilize kòm baz la pou aplikasyon pou entènèt, ekri nan PHP ak lè l sèvi avèk baz done relasyon kòm depo done.

Drupal 9 gen ladan tout karakteristik yo prezante nan vèsyon 8.9. Diferans kle ant vèsyon 9 ak vèsyon 8 se ke platfòm la ap kontinye resevwa mizajou ak repare sekirite apre Novanm 2021. Epitou nan vèsyon 9 la, pwosesis ajou yo te senplifye, fè pwosesis la ajou soti nan vèsyon 8 menm pi fasil.

Kondisyon pou sèvè

Pou itilize Drupal, li rekòmande pou itilize 2 GB RAM ak 2 nwayo CPU.

Fichye prensipal Drupal yo se apeprè 100 MB, anplis ou pral bezwen espas pou estoke imaj, baz done, tèm, ajoute ak sovgad, ki pral depann de gwosè sit ou a.

Drupal 9 mande PHP 7.4 oswa pi wo ak yon limit minimòm (memory_limit) nan 64 MB memwa, nan ka itilize modil adisyonèl, li rekòmande enstale 128 MB.

Drupal ka itilize Apache oswa Nginx kòm yon sèvè entènèt, ak MySQL, PostgreSQL oswa SQLite kòm yon baz done.

Nou pral enstale Drupal lè l sèvi avèk Nginx ak MySQL.

Enstalasyon

Mete ajou pakè enstale yo nan dènye vèsyon an:

sudo dnf update -y

Ann ajoute yon pèmisyon pèmanan pou trafik fèk ap rantre nan pò http/80 ak https/443:

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

Aplike nouvo règ firewall yo:

sudo systemctl reload firewalld

Enstale Nginx:

sudo dnf install nginx -y

Ann kòmanse ak pèmèt sèvè Nginx la:

sudo systemctl start nginx
sudo systemctl enable nginx

Depi PHP 7.2 yo itilize kounye a nan depo Centos prensipal la, ann ajoute depo REMI a ak PHP 7.4 (vèsyon minimòm pou Drupal 9).
Pou fè sa, ajoute repozitwa EPEL la (repozitwa REMI obligatwa):

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

Ann ajoute depo REMI a:

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

Pèmèt modil php:remi-7.4 pou enstale php 7.4:

sudo dnf module enable php:remi-7.4 -y

Enstale php-fpm ak php-cli:

sudo dnf install -y php-fpm php-cli

Enstale modil PHP ki nesesè pou Drupal travay:

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

Nou pral tou enstale modil PHP rekòmande mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Enstale sèvè MySQL:

sudo dnf install mysql-server -y

Pèmèt epi kòmanse sèvè MySQL la:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Depi nou ap fè yon modèl pou VDS, epi yo ka ralanti, nou pral ajoute yon reta demaraj mysqld nan 30 segonn, otreman ka gen pwoblèm kòmanse sèvè a pandan demaraj sistèm inisyal la:

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

Ann chanje gwoup la ak itilizatè anba ki nginx pral kouri lè nou fè chanjman nan /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

Chanje pwopriyetè anyè sesyon PHP a an nginx kòmsadwa:

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

Ann retire liy kòmantè yo nan /etc/nginx/nginx.conf fichye konfigirasyon an (pou pa gen okenn frape doub pou sed):

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

Ajoute paramèt konpresyon gzip nan /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

Ann ajoute paramèt fichye endèks index.php la nan /etc/nginx/nginx.conf:

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

Ann ajoute paramèt pou php nan pwosesis default sèvè atravè priz php-fpm, enfim boutèy demi lit la pou fichye estatik, ogmante tan an ekspirasyon, enfim aksè ak boutèy erè pou favicon.ico ak robots.txt epi refize aksè a fichye .ht pou tout moun:

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

Enstale wget oblije enstale certbot:

sudo dnf install wget -y

Telechaje fichye ègzekutabl certbot la soti nan deyò sit la:

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

Deplase certbot nan /usr/local/bin/:

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

Epi bay dwa ak pwopriyetè pou rasin:

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

Enstale depandans certbot yo epi sispann li nan etap sa a (Repons: Y, c):

certbot-auto

Telechaje achiv la ak dènye vèsyon an nan Drupal 9 soti nan offsite:

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

Enstale tar pou depake achiv la:

sudo dnf install tar -y

Efase fichye default yo nan /usr/share/nginx/html/ anyè:

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

Dekonprime dosye yo nan anyè sèvè entènèt la:

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

Deplase fichye yo soti nan sou-anyè a nan anyè rasin sèvè entènèt la:

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

Efase sou-anyè:

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

Efase achiv la ak dosye enstalasyon yo:

rm -f ./tar.gz

Mete mèt fichye nginx yo:

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

Nan etap sa a, nou pral fèmen sèvè a epi pran yon snapshot:

shutdown -h now

Apre w fin kòmanse VDS a soti nan snapshot la, nou pral fè konfigirasyon inisyal sèvè MySQL la nan kouri script la:

mysql_secure_installation

Aktive validateur modpas la:

Would you like to setup VALIDATE PASSWORD component? : y

Mete modpas itilizatè rasin MySQL la:

New password:
Re-enter new password:

Retire itilizatè anonim:

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

Ann anpeche rasin konekte adistans:

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

Ann retire baz done tès la:

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

Rechaje tab privilèj yo:

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

Apre sa, pou konplete enstalasyon an, nou ka ale nan adrès_ip_vps
Nan adrès sa a nou pral wè yon paj ki gen enstalasyon Drupal.

Chwazi lang pou itilize. Pou egzanp: Ris. Klike sou "Sove epi kontinye"

Ann chwazi yon pwofil enstalasyon (demo yo itilize sèlman pou familyarize ak sistèm nan). Nan ka nou an, se pou li "estanda".

Nan pwochen paj la, bay baz done a yon non, tankou "drupal". Espesifye non itilizatè baz done rasin ak modpas yo ba li lè w kòmanse mysql_secure_installation. Klike sou "Sove epi kontinye".

Ann tann enstalasyon ak ajou tradiksyon yo fini (pwosesis la ka pran plizyè minit).

Espesifye non sit la, mete imèl sit la (nan non ki notifikasyon sit la ap vini), login, modpas ak imèl kont administratè Drupal la. Nou pral mete tou peyi a ak zòn lè nan anviwònman rejyonal yo. Epi konplete enstalasyon an pa klike sou "Save ak Kontinye".

Apre sa, ou ka ale nan panèl kontwòl la ak login ak modpas administratè Drupal kreye.

Anviwònman HTTPS (opsyonèl)

Pou konfigirasyon HTTPS, VDS la dwe gen yon non DNS valab, presize nan

/etc/nginx/nginx.conf

nan seksyon sèvè a non sèvè a (pa egzanp):

server_name  domainname.ru;

Rekòmanse nginx:

service nginx restart

Ann kòmanse certbot:

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

Antre imel ou a, dakò ak kondisyon sèvis yo (A), Abònman nan bilten an (si ou vle) (N), chwazi non domèn ou vle bay yon sètifika (Antre pou tout moun).

Si tout bagay te ale san erè, nou pral wè yon mesaj sou emisyon an siksè nan sètifika ak konfigirasyon sèvè:

Congratulations! You have successfully enabled ...

Apre sa, koneksyon sou pò 80 yo pral redireksyon sou 443 (https).

Ajoute nan /etc/crontab pou renouvle sètifika otomatikman:

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

Mete kanpe sekirite lame konfyans (rekòmande)

Anviwònman sa a gen entansyon kòm yon solisyon a pwoblèm nan deteksyon dinamik base_url, epi li gen entansyon anpeche atak HTTP HOST Header (lè sit ou panse li se yon lòt moun).

Pou fè sa, ou bezwen presize non domèn ou fè konfyans nan sit la nan dosye a anviwònman.

Nan dosye

/usr/share/nginx/html/sites/default/settings.php dekomantè oswa ajoute yon anviwònman ak modèl non sit aktyèl la, pou egzanp:

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

Enstale PHP APCu (REKÒMANDE)

Drupal sipòte APCu - Alternative PHP User Cache, vèsyon 8 ak 9 itilize APCu plis entansif kòm yon kachèt lokal kout tèm pase vèsyon anvan yo. Gwosè kachèt default (32 MB) ap adapte pifò sit yo, epi li pa ka depase 512 MB.

Pou aktive, enstale modil PHP APCu a:

dnf -y install php-pecl-apcu

Rekòmanse nginx ak php-fpm:

service nginx restart
service php-fpm restart

Nan ka itilize lang Ris la ak APCu ak gwosè memwa kachèt rekòmande a, ou ka wè yon avètisman nan panèl kontwòl la ke gwosè memwa kachèt atribye ba a diferan de yon sèl rekòmande a, men an reyalite tout bagay ap travay kòrèkteman, ak kòrèk la. avètisman pral gen plis chans yo fikse nan pwochen mizajou yo.

Oswa si avètisman an fè mal je a, ou ka itilize patch ki koresponn soti nan andeyò sit la.

Nou vle raple ou ke ou kapab tou fè yon imaj pou nou

Gen twa opsyon pou kijan pou patisipe.

Prepare imaj la tèt ou epi jwenn 3000 rubles sou balans ou

Si ou pare imedyatman prese nan batay ak kreye imaj la ke ou manke tèt ou, nou pral kredi ou ak 3000 rubles nan balans entèn ou - ou ka depanse li sou serveurs.

Ki jan yo kreye imaj ou:

  1. Kreye yon kont avèk nou Online
  2. Di sipò ke ou pral kreye ak teste imaj
  3. Nou pral kredi ou 3000 rubles ak pèmèt kapasite nan kreye snapshots
  4. Kòmande yon sèvè vityèl ak yon sistèm opere pwòp
  5. Enstale lojisyèl an sou VPS sa a epi mete l kanpe
  6. Ekri enstriksyon oswa script pou deplwaman lojisyèl
  7. Kreye yon snapshot pou sèvè configuré a
  8. Kòmande yon nouvo sèvè vityèl lè w chwazi snapshot ki te kreye deja nan lis deroulant "Modèl sèvè"
  9. Nan ka ta gen siksè kreyasyon sèvè a, transfere materyèl yo te resevwa nan etap 6 nan sipò teknik
  10. Nan ka yon erè, ou ka tcheke avèk sipò pou rezon an epi repete konfigirasyon an

Pou pwopriyetè biznis: ofri lojisyèl ou a

Si ou se yon devlopè lojisyèl ki deplwaye ak itilize sou yon VPS, Lè sa a, nou ka mete ou sou mache a. Men ki jan nou ka ede w pote nouvo kliyan, trafik ak vizibilite. Ekri nou

Fè nou konnen nan kòmantè yo ki imaj ou manke?

Epi nou pral prepare li tèt nou

Kreye yon modèl VPS ak Drupal 9 sou Centos 8

Kreye yon modèl VPS ak Drupal 9 sou Centos 8

Sous: www.habr.com