Tsim VPS Template nrog Drupal 9 ntawm Centos 8

Peb txuas ntxiv nthuav peb lub khw. Peb nyuam qhuav qhia koj li cas ua ib daim duab Gitlab, thiab lub lim tiam no Drupal tau tshwm sim hauv peb lub khw.

Peb qhia koj tias vim li cas peb thiaj xaiv nws thiab tsim daim duab li cas.

Tsim VPS Template nrog Drupal 9 ntawm Centos 8

Drupal - lub platform yooj yim thiab muaj zog rau kev tsim txhua yam ntawm lub vev xaib: los ntawm microsites thiab blogs mus rau cov haujlwm loj hauv zej zog, kuj tseem siv los ua lub hauv paus rau kev siv web, sau hauv PHP thiab siv cov ntaub ntawv sib txheeb raws li cov ntaub ntawv khaws cia.

Drupal 9 suav nrog tag nrho cov yam ntxwv qhia hauv version 8.9. Qhov sib txawv tseem ceeb ntawm version 9 thiab version 8 yog tias lub platform yuav txuas ntxiv tau txais cov hloov tshiab thiab kev ruaj ntseg kho tom qab Kaum Ib Hlis 2021. Version 9 kuj ua kom yooj yim rau cov txheej txheem hloov tshiab, ua cov txheej txheem ntawm kev hloov kho dua tshiab ntawm version 8 txawm yooj yim dua.

Server yuav tsum

Txhawm rau siv Drupal, nws raug nquahu kom siv 2 GB RAM thiab 2 CPU cores.

Cov ntaub ntawv tseem ceeb ntawm Drupal siv txog 100 MB, ntxiv rau koj yuav xav tau qhov chaw khaws cov duab, database, cov ntsiab lus, ntxiv modules thiab backups, uas yuav nyob ntawm seb qhov loj ntawm koj qhov chaw.

Drupal 9 xav tau PHP 7.4 lossis siab dua nrog qhov tsawg kawg nkaus txwv (memory_limit) rau 64 MB nco; yog tias siv cov modules ntxiv, nws raug nquahu kom nruab 128 MB.

Drupal tuaj yeem siv Apache lossis Nginx ua lub vev xaib server, thiab MySQL, PostgreSQL lossis SQLite ua cov ntaub ntawv.

Peb yuav txhim kho Drupal siv Nginx thiab MySQL.

chaw

Cia peb hloov kho cov pob khoom nruab rau qhov tseeb version:

sudo dnf update -y

Cia peb ntxiv kev tso cai mus tas li rau kev nkag mus rau http/80 thiab https/443 ports:

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

Cia peb siv cov cai tshiab firewall:

sudo systemctl reload firewalld

Cia peb nruab Nginx:

sudo dnf install nginx -y

Cia peb pib thiab pab Nginx server:

sudo systemctl start nginx
sudo systemctl enable nginx

Txij li thaum lub ntsiab Centos repository tam sim no siv PHP 7.2, cia peb ntxiv REMI repository nrog PHP 7.4 (yam tsawg kawg version rau Drupal 9).
Ua li no, ntxiv EPEL repository (yuav tsum tau los ntawm REMI repository):

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

Cia peb ntxiv REMI repository:

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

Cia peb qhib lub php:remi-7.4 module rau nruab php 7.4:

sudo dnf module enable php:remi-7.4 -y

Nruab php-fpm thiab php-cli:

sudo dnf install -y php-fpm php-cli

Cia peb nruab PHP modules xav tau rau Drupal ua haujlwm:

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

Peb tseem yuav nruab qhov pom zoo PHP mbstring opcache modules:

sudo dnf install -y php-mbstring php-opcache

Cia peb nruab MySQL server:

sudo dnf install mysql-server -y

Cia peb qhib thiab pib MySQL server:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Txij li thaum peb tab tom ua tus qauv rau VDS, thiab lawv tuaj yeem ua qeeb, peb yuav ntxiv mysqld pib ncua ntawm 30 vib nas this, txwv tsis pub yuav muaj teeb meem nrog lub server pib thaum pib lub kaw lus:

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

Cia peb hloov cov pab pawg thiab cov neeg siv raws li nginx yuav khiav los ntawm kev hloov pauv rau /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

Cia peb hloov tus tswv ntawm PHP sessions directory rau nginx raws li:

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

Cia peb tshem tawm cov kab nrog cov lus pom los ntawm cov ntaub ntawv teeb tsa /etc/nginx/nginx.conf (kom tsis muaj qhov tshwm sim ob zaug rau sed):

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

Ntxiv gzip compression nqis rau /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

Cia peb ntxiv cov chaw ntawm cov ntaub ntawv index.php rau /etc/nginx/nginx.conf:

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

Cia peb ntxiv cov chaw rau lub neej ntawd server: PHP ua los ntawm php-fpm qhov (socket), lov tes taw lub cav rau cov ntaub ntawv zoo li qub, ua kom lub sijhawm tas sij hawm, lov tes taw nkag thiab yuam kev log rau favicon.ico thiab robots.txt, thiab tsis kam nkag mus rau .ht cov ntaub ntawv rau txhua tus:

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

Nruab wget xav tau rau kev txhim kho certbot:

sudo dnf install wget -y

Download tau cov ntaub ntawv certbot executable los ntawm offsite:

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

Txav mus rau certbot rau /usr/local/bin/:

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

Thiab cia peb muab cov cai raws li tus tswv rau hauv paus:

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

Cia peb nruab lub certbot dependencies thiab nyob rau theem no cuam tshuam nws txoj haujlwm (Cov lus teb: Y, c):

certbot-auto

Cia peb rub tawm cov ntaub ntawv nrog qhov tseeb version ntawm Drupal 9 los ntawm offsite:

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

Nruab tar kom unpack lub archive:

sudo dnf install tar -y

Cia peb rho tawm cov ntaub ntawv default hauv /usr/share/nginx/html/ directory:

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

Cia peb unpack cov ntaub ntawv mus rau hauv lub web server directory:

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

Cia peb txav cov ntaub ntawv los ntawm subdirectory mus rau hauv paus directory ntawm lub web server:

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

Cia peb rho tawm cov subdirectory:

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

Cia peb rho tawm cov ntaub ntawv nrog cov ntaub ntawv installation:

rm -f ./tar.gz

Cia peb muab tus tswv ntawm cov ntaub ntawv nginx:

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

Hauv theem no peb yuav tua lub server thiab thaij duab:

shutdown -h now

Tom qab tso tawm VDS los ntawm snapshot, peb yuav ua qhov pib teeb tsa ntawm MySQL server los ntawm kev khiav cov ntawv:

mysql_secure_installation

Cia peb qhib tus password validator:

Would you like to setup VALIDATE PASSWORD component? : y

Cia peb teeb tus password rau MySQL tus neeg siv hauv paus:

New password:
Re-enter new password:

Cia peb tshem cov neeg siv tsis qhia npe:

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

Cia peb tiv thaiv hauv paus los ntawm kev sib txuas remotely:

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

Cia peb rho tawm cov ntaub ntawv xeem:

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

Cia peb rov qab cov ntawv tsim nyog:

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

Tom qab no, ua kom tiav lub installation, peb tuaj yeem mus rau vps_ip_ chaw nyob
Ntawm qhov chaw nyob no peb yuav pom Drupal nplooj ntawv teeb tsa.

Cia peb xaiv hom lus siv. Piv txwv li: Russian. Nyem "Save and Continue"

Cia peb xaiv qhov kev teeb tsa profile (tus demo tsuas yog siv los paub koj tus kheej nrog lub kaw lus). Hauv peb qhov xwm txheej, cia nws ua "tus qauv".

Ntawm nplooj ntawv tom ntej peb yuav muab lub npe rau cov ntaub ntawv, piv txwv li "drupal". Cia peb qhia tus neeg siv lub npe database thiab tus password muab rau nws thaum khiav mysql_secure_installation. Nyem "Save and Continue."

Cia peb tos rau lub installation thiab hloov tshiab ntawm kev txhais lus kom tiav (txoj kev yuav siv li ob peb feeb).

Peb yuav qhia lub npe ntawm lub vev xaib, teeb tsa lub vev xaib email (sawv cev ntawm qhov chaw ceeb toom yuav raug xa mus), nkag mus, tus password thiab email ntawm Drupal tus thawj tswj hwm tus account. Peb kuj yuav teem lub teb chaws thiab lub sij hawm nyob rau hauv lub regional chaw. Thiab ua kom tiav qhov kev teeb tsa los ntawm nyem "Txuag thiab Txuas Ntxiv".

Tom qab ntawd, koj tuaj yeem mus rau lub vaj huam sib luag nrog tus tsim Drupal tus thawj coj nkag mus thiab tus password.

Teeb tsa HTTPS (yeem)

Txhawm rau teeb tsa HTTPS, VDS yuav tsum muaj lub npe DNS siv tau, qhia hauv

/etc/nginx/nginx.conf

nyob rau hauv lub server seem lub npe server (piv txwv li):

server_name  domainname.ru;

Cia peb rov pib nginx:

service nginx restart

Cia peb pib certbot:

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

Sau koj e-mail, pom zoo rau cov nqe lus ntawm kev pabcuam (A), Sau npe rau tsab ntawv xov xwm (xaiv tau) (N), xaiv cov npe sau npe uas koj xav muab daim ntawv pov thawj (Sau rau txhua tus).

Yog tias txhua yam mus yam tsis muaj qhov yuam kev, peb yuav pom cov lus hais txog kev ua tiav daim ntawv pov thawj thiab kev teeb tsa server:

Congratulations! You have successfully enabled ...

Tom qab no, kev sib txuas rau chaw nres nkoj 80 yuav raug xa mus rau 443 (https).

Ntxiv rau /etc/crontab kom hloov kho daim ntawv pov thawj:

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

Trusted Host Security (pom zoo)

Qhov teeb tsa no yog npaj los daws qhov teeb meem cuam tshuam nrog kev txiav txim siab dynamic base_url, thiab tsim los tiv thaiv HTTP HOST Header tawm tsam (thaum koj lub xaib xav tias nws yog lwm tus).

Txhawm rau ua qhov no, koj yuav tsum tau hais kom ntseeg tau cov npe sau npe rau lub xaib hauv cov ntaub ntawv teeb tsa.

Hauv cov ntaub ntawv

/usr/share/nginx/html/sites/default/settings.php Cia peb tsis tawm tswv yim lossis ntxiv qhov chaw nrog cov qauv ntawm lub vev xaib tiag tiag, piv txwv li:

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

Txhim kho PHP APCu (Raws li pom zoo)

Drupal txhawb APCu - Lwm tus neeg siv PHP Cache, versions 8 thiab 9 ua kom siv ntau dua ntawm APCu raws li lub sijhawm luv luv hauv zos cache dua li yav dhau los versions. Lub default cache loj (32 MB) yog haum rau ntau qhov chaw, thiab tsis tuaj yeem tshaj 512 MB.

Txhawm rau qhib, nruab PHP APCu module:

dnf -y install php-pecl-apcu

Rov pib nginx thiab php-fpm:

service nginx restart
service php-fpm restart

Yog tias koj siv cov lus Lavxias thiab APCu nrog cov lus pom zoo me me rau lub cache, koj tuaj yeem pom cov lus ceeb toom hauv pawg tswj hwm tias qhov loj ntawm lub cim xeeb faib rau lub cache txawv ntawm qhov pom zoo, tab sis qhov tseeb txhua yam ua haujlwm raug, thiab cov lus ceeb toom tsis raug feem ntau yuav raug kho hauv qhov hloov tshiab tom ntej.

Los yog yog tias qhov ceeb toom ua rau koj lub qhov muag mob, koj tuaj yeem siv corresponding thaj los ntawm offsite.

Peb xav kom koj nco ntsoov tias koj tuaj yeem ua ib daim duab rau peb

Muaj peb txoj hauv kev rau kev koom nrog.

Npaj cov duab koj tus kheej thiab tau txais 3000 rubles rau koj qhov nyiaj tshuav

Yog tias koj npaj txhij mus rau hauv kev sib ntaus sib tua tam sim ntawd thiab tsim cov duab uas koj ploj lawm, peb yuav credit rau koj nrog 3000 rubles rau koj qhov nyiaj tshuav, uas koj tuaj yeem siv rau ntawm servers.

Yuav ua li cas los tsim koj tus kheej duab:

  1. Tsim ib tus account nrog peb ntawm qhov chaw
  2. Qhia rau kev txhawb nqa paub tias koj yuav tsim thiab sim cov duab
  3. Peb yuav credit rau koj 3000 rubles thiab pab kom muaj peev xwm tsim cov duab thaij duab
  4. Order lub virtual server nrog kev ua haujlwm huv
  5. Nruab lub software ntawm no VPS thiab teeb tsa nws
  6. Sau cov lus qhia lossis tsab ntawv rau kev siv software
  7. Tsim ib qho snapshot rau configured server
  8. Txiav txim tus neeg rau zaub mov virtual tshiab los ntawm kev xaiv cov duab tsim yav dhau los hauv "Server template" daim ntawv teev npe.
  9. Yog tias tus neeg rau zaub mov tau tsim tiav, hloov cov ntaub ntawv tau txais ntawm theem 6 mus rau kev txhawb nqa
  10. Yog tias muaj qhov yuam kev, koj tuaj yeem tshawb xyuas nrog kev txhawb nqa rau vim li cas thiab rov teeb tsa

Rau cov tswv lag luam: muab koj cov software

Yog tias koj yog tus tsim tawm software uas tau siv thiab siv ntawm VPS, peb tuaj yeem suav koj hauv khw. Nov yog qhov peb tuaj yeem pab koj coj cov neeg siv khoom tshiab, kev khiav tsheb thiab kev paub. Sau rau peb

Qhia rau peb hauv cov lus hais tias daim duab koj ploj lawm?

Thiab peb yuav npaj nws tus kheej

Tsim VPS Template nrog Drupal 9 ntawm Centos 8

Tsim VPS Template nrog Drupal 9 ntawm Centos 8

Tau qhov twg los: www.hab.com