Kupanga template ya VPS ndi Drupal 9 pa Centos 8

Tikupitiriza kukulitsa msika wathu. Posachedwapa takuuzani momwe adapanga chithunzi cha Gitlab, ndipo sabata ino Drupal adawonekera pamsika wathu.

Tikukuuzani chifukwa chake tinamusankha komanso mmene fanolo linapangidwira.

Kupanga template ya VPS ndi Drupal 9 pa Centos 8

Drupal - nsanja yabwino komanso yamphamvu yopangira tsamba lamtundu uliwonse: kuchokera ku ma microsites ndi mabulogu kupita ku ntchito zazikulu zamagulu, zomwe zimagwiritsidwanso ntchito ngati maziko a mapulogalamu a pa intaneti, olembedwa mu PHP ndikugwiritsa ntchito nkhokwe zaubale monga kusungirako deta.

Drupal 9 imaphatikizapo zonse zomwe zidayambitsidwa mu mtundu wa 8.9. Kusiyana kwakukulu pakati pa mtundu wa 9 ndi mtundu 8 ndikuti nsanja ipitilizabe kulandira zosintha ndi zosintha zachitetezo pambuyo pa Novembala 2021. Mtundu wa 9 umathandiziranso njira yosinthira, kupangitsa kuti kukweza kuchokera ku mtundu 8 kukhala kosavuta.

Zofunikira za seva

Kuti mugwiritse ntchito Drupal, tikulimbikitsidwa kugwiritsa ntchito 2 GB RAM ndi 2 CPU cores.

Mafayilo akuluakulu a Drupal amatenga pafupifupi 100 MB, kuwonjezera apo mudzafunika malo osungira zithunzi, database, mitu, ma modules owonjezera ndi zosunga zobwezeretsera, zomwe zidzadalira kukula kwa tsamba lanu.

Drupal 9 imafuna PHP 7.4 kapena kupitilira apo ndi malire ochepa (memory_limit) kwa kukumbukira kwa 64 MB; ngati ma module owonjezera agwiritsidwa ntchito, tikulimbikitsidwa kukhazikitsa 128 MB.

Drupal imatha kugwiritsa ntchito Apache kapena Nginx ngati seva yapaintaneti, ndi MySQL, PostgreSQL kapena SQLite ngati nkhokwe.

Tikhala tikuyika Drupal pogwiritsa ntchito Nginx ndi MySQL.

kolowera

Tiyeni tisinthire maphukusi omwe adayikidwa kuti akhale atsopano:

sudo dnf update -y

Tiyeni tiwonjeze chilolezo chokhazikika pamagalimoto obwera ku http/80 ndi https/443 madoko:

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

Tiyeni tigwiritse ntchito malamulo atsopano a firewall:

sudo systemctl reload firewalld

Tiyeni tiyike Nginx:

sudo dnf install nginx -y

Tiyeni tiyambe ndikuyambitsa seva ya Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Popeza chosungira chachikulu cha Centos pakali pano chikugwiritsa ntchito PHP 7.2, tiyeni tiwonjezere chosungira cha REMI ndi PHP 7.4 (yocheperako mtundu wa Drupal 9).
Kuti muchite izi, onjezani chosungira cha EPEL (chofunikira ndi chosungira cha REMI):

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

Tiyeni tiwonjezere chosungira cha REMI:

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

Tiyeni tiwone gawo la php:remi-7.4 kukhazikitsa php 7.4:

sudo dnf module enable php:remi-7.4 -y

Ikani php-fpm ndi php-cli:

sudo dnf install -y php-fpm php-cli

Tiyeni tiyike ma module a PHP ofunikira kuti Drupal agwire ntchito:

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

Tikhazikitsanso ma module opcache a PHP mbstring:

sudo dnf install -y php-mbstring php-opcache

Tiyeni tiyike seva ya MySQL:

sudo dnf install mysql-server -y

Tiyeni tiyatse ndikuyamba seva ya MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Popeza tikupanga template ya VDS, ndipo ikhoza kuchedwa, tidzawonjezera mysqld kuyamba kuchedwa kwa masekondi a 30, mwinamwake pangakhale mavuto ndi seva kuyambira panthawi yoyamba ya boot:

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

Tiyeni tisinthe gulu ndi wogwiritsa ntchito yomwe nginx idzayendera posintha /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

Tiyeni tisinthe eni ake a magawo a PHP kukhala nginx moyenerera:

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

Tiyeni tichotse mizere ndi ndemanga kuchokera pa fayilo yosinthika /etc/nginx/nginx.conf (kuti pasakhale zoyambitsa ziwiri za sed):

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

Onjezani zosintha za gzip ku /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

Tiyeni tiwonjezere makonda a index file index.php ku /etc/nginx/nginx.conf:

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

Tiyeni tiwonjeze makonda a seva yokhazikika: Kukonza PHP kudzera pa php-fpm socket, kuletsa chipika cha mafayilo osasunthika, kuwonjezera nthawi yothera, kuletsa kulowa ndi zolakwika zolemba za favicon.ico ndi robots.txt, ndikukana kulowa kwa .ht mafayilo a aliyense:

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

Ikani wget yofunikira pakuyika certbot:

sudo dnf install wget -y

Tsitsani fayilo yoyeserera ya certbot kuchokera patsamba:

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

Sunthani certbot ku /usr/local/bin/:

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

Ndipo tiyeni tigawane maufulu monga eni ake kuti azule:

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

Tiyeni tiyike zodalira za certbot ndipo pakadali pano tisokoneze ntchito yake (Mayankho: Y, c):

certbot-auto

Tiyeni titsitse zakale ndi mtundu waposachedwa kwambiri wa Drupal 9 kuchokera kunja:

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

Ikani tar kuti mutulutse zakale:

sudo dnf install tar -y

Tiyeni tichotse mafayilo osakhazikika mu /usr/share/nginx/html/ directory:

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

Tiyeni titulutse mafayilo mu chikwatu cha seva yapaintaneti:

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

Tiyeni tisunthire mafayilo kuchokera ku subdirectory kupita ku mizu ya seva yapaintaneti:

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

Tiyeni tifufute subdirectory:

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

Tiyeni tifufute zakale ndi mafayilo oyika:

rm -f ./tar.gz

Tiyeni tigawire eni ake a mafayilo a nginx:

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

Pakadali pano tizimitsa seva ndikutenga chithunzithunzi:

shutdown -h now

Pambuyo poyambitsa VDS kuchokera pachithunzichi, tidzakhazikitsa seva ya MySQL poyendetsa script:

mysql_secure_installation

Tiyeni tiyambitse zotsimikizira mawu achinsinsi:

Would you like to setup VALIDATE PASSWORD component? : y

Tiyeni tiyike achinsinsi kwa wogwiritsa ntchito mizu ya MySQL:

New password:
Re-enter new password:

Tiyeni tichotse ogwiritsa ntchito osadziwika:

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

Tiyeni tipewe mizu kulumikiza patali:

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

Tiyeni tifufute nkhokwe yoyeserera:

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

Tiyeni tilowetsenso matebulo amwayi:

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

Zitatha izi, kumaliza unsembe, tikhoza kupita vps_ip_address
Pa adilesi iyi tiwona tsamba la kukhazikitsa Drupal.

Tiyeni tisankhe chinenero choti tigwiritse ntchito. Mwachitsanzo: Russian. Dinani "Sungani ndi Pitirizani"

Tiyeni tisankhe mbiri yoyika (chiwonetserocho chimangogwiritsidwa ntchito kuti mudziwe dongosolo). Kwa ife, zikhale "zokhazikika".

Patsamba lotsatira tidzapereka dzina ku database, mwachitsanzo "drupal". Tiyeni tisonyeze dzina lachidziwitso chachinsinsi ndi mawu achinsinsi omwe adapatsidwa pamene akuyendetsa mysql_secure_installation. Dinani "Sungani ndi Pitirizani."

Tiyeni tidikire kuti kuyika ndikusintha zomasulira kumalizike (ntchitoyi ingatenge mphindi zingapo).

Tidzawonetsa dzina latsambalo, tiyike imelo yatsambalo (m'malo mwa zomwe zidziwitso zatsambalo zidzatumizidwa), kulowa, mawu achinsinsi ndi imelo ya akaunti ya Drupal administrator. Tidzakhazikitsanso dziko ndi nthawi yoyang'anira madera. Ndipo malizitsani kukhazikitsa ndikudina "Sungani ndi Pitirizani".

Pambuyo pake, mutha kupita ku gulu lowongolera ndi kulowa ndi mawu achinsinsi a Drupal administrator.

Kukhazikitsa HTTPS (posankha)

Kuti mukonze HTTPS, VDS iyenera kukhala ndi dzina lovomerezeka la DNS, tchulani

/etc/nginx/nginx.conf

mu gawo la seva dzina la seva (mwachitsanzo):

server_name  domainname.ru;

Tiyeni tiyambenso nginx:

service nginx restart

Tiyeni tiyambitse certbot:

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

Lowetsani imelo yanu, vomerezani mawu a ntchito (A), Amamvera kalata (ngati mukufuna) (N), sankhani mayina omwe mukufuna kupereka chiphaso (Lowani kwa aliyense).

Ngati zonse zidapita popanda zolakwika, tiwona uthenga wokhudza kuperekedwa bwino kwa satifiketi ndi kasinthidwe ka seva:

Congratulations! You have successfully enabled ...

Pambuyo pake, kulumikizana ndi doko 80 kudzatumizidwa ku 443 (https).

Onjezani ku /etc/crontab kuti musinthe masatifiketi:

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

Kukhazikitsa Trusted Host Security (kovomerezeka)

Kukonzekera uku kumapangidwa ngati yankho ku vuto lomwe limakhudzana ndi dynamic base_url determination, ndipo lapangidwa kuti liteteze kuukira kwa mutu wa HTTP HOST (pamene tsamba lanu likuganiza kuti ndi winawake).

Kuti muchite izi, muyenera kutchula mayina odalirika a tsambalo mu fayilo ya zoikamo.

Mu fayilo

/usr/share/nginx/html/sites/default/settings.php Tiyeni tisiye ndemanga kapena tiwonjezere makonda okhala ndi mayina enieni amasamba, mwachitsanzo:

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

Kuyika PHP APCu (KUYAMBIRA)

Drupal imathandizira APCu - Alternative PHP User Cache, mitundu 8 ndi 9 imagwiritsa ntchito kwambiri APCu ngati cache yanthawi yayitali kuposa matembenuzidwe am'mbuyomu. Kukula kwa cache (32 MB) ndikoyenera masamba ambiri, ndipo sikungadutse 512 MB.

Kuti muyambitse, yikani gawo la PHP APCu:

dnf -y install php-pecl-apcu

Yambitsaninso nginx ndi php-fpm:

service nginx restart
service php-fpm restart

Ngati mugwiritsa ntchito chinenero cha Chirasha ndi APCu ndi kukula kwa kukumbukira kukumbukira kwa cache, mukhoza kuona chenjezo mu gulu lolamulira kuti kukula kwa kukumbukira komwe kunaperekedwa kwa cache ndi kosiyana ndi komwe kumalimbikitsidwa, koma kwenikweni zonse zimagwira ntchito moyenera, ndipo chenjezo lolakwika lidzakonzedwanso pazosintha zina.

Kapena ngati chenjezo likuvulaza maso anu, mutha kugwiritsa ntchito chigamba chofananira kuchokera kunja.

Tikufuna kukukumbutsani kuti mutha kutipangiranso fano

Pali njira zitatu za momwe mungatengere nawo mbali.

Konzekerani nokha chithunzicho ndikupeza ma ruble 3000 pamlingo wanu

Ngati mwakonzeka kuthamangira kunkhondo nthawi yomweyo ndikupanga chithunzi chomwe mukuchisowa, tidzakutengerani ma ruble a 3000 kumlingo wanu wamkati, womwe mungagwiritse ntchito pa maseva.

Momwe mungapangire chithunzi chanu:

  1. Pangani akaunti nafe malo
  2. Dziwani kuti mupanga ndikuyesa zithunzi
  3. Tikulipirani ma ruble 3000 ndikupangitsa kuti mupange zithunzithunzi
  4. Konzani seva yeniyeni yokhala ndi makina ogwiritsira ntchito oyera
  5. Ikani pulogalamuyo pa VPS iyi ndikuyikonza
  6. Lembani malangizo kapena script yotumizira mapulogalamu
  7. Pangani chithunzithunzi cha seva yokhazikitsidwa
  8. Konzani seva yatsopano posankha chithunzithunzi chomwe chidapangidwa kale pamndandanda wotsikirapo wa "Seva template"
  9. Ngati seva idapangidwa bwino, sinthani zinthu zomwe mwalandira pa siteji 6 ku chithandizo chaukadaulo
  10. Ngati pali cholakwika, mutha kuyang'ana ndi chithandizo pazifukwa ndikubwereza kukhazikitsa

Kwa eni mabizinesi: perekani mapulogalamu anu

Ngati ndinu wopanga mapulogalamu omwe amatumizidwa ndikugwiritsidwa ntchito pa VPS, ndiye kuti tikhoza kukuphatikizani pamsika. Umu ndi momwe tingathandizire kubweretsa makasitomala atsopano, magalimoto komanso kuzindikira. Tilembereni

Tiuzeni mumakomenti ndi chithunzi chanji chomwe mukusowa?

Ndipo tidzakonzekera tokha

Kupanga template ya VPS ndi Drupal 9 pa Centos 8

Kupanga template ya VPS ndi Drupal 9 pa Centos 8

Source: www.habr.com