Afirandina şablonek VPS bi Drupal 9 re li ser Centos 8

Em berfirehkirina bazara xwe berdewam dikin. Me herî dawî ji we re got çawa wêneyek Gitlab çêkir, û vê hefteyê Drupal li sûka me xuya bû.

Em ji we re dibêjin çima me ew hilbijart û wêne çawa hate afirandin.

Afirandina şablonek VPS bi Drupal 9 re li ser Centos 8

drupal - platformek hêsan û hêzdar ji bo afirandina her cûre malperek: ji mîkromalper û blogan bigire heya projeyên mezin ên civakî, di heman demê de wekî bingehek ji bo serîlêdanên malperê, ku bi PHP-ê hatî nivîsandin û karanîna databasên têkildar wekî hilanîna daneyê tê bikar anîn.

Drupal 9 hemî taybetmendiyên ku di guhertoya 8.9 de hatine destnîşan kirin vedihewîne. Cûdahiya bingehîn di navbera guhertoya 9 û guhertoya 8-ê de ev e ku platform dê piştî Mijdara 2021-an de nûvekirin û sererastkirinên ewlehiyê werbigire. Guhertoya 9 jî pêvajoya nûvekirinê hêsan dike, pêvajoya nûvekirina ji guhertoya 8-ê hê hêsantir dike.

Pêdiviyên serverê

Ji bo ku Drupal bikar bînin, tê pêşniyar kirin ku 2 GB RAM û 2 core CPU bikar bînin.

Pelên sereke yên Drupal bi qasî 100 MB digire, di heman demê de hûn ê cîh hewce bikin ku wêne, databas, mijar, modulên zêde û paşvekêşan hilînin, ku dê bi mezinahiya malpera we ve girêdayî be.

Drupal 9 hewceyê PHP 7.4 an bilindtir bi sînorek herî kêm (memory_limit) ji bo bîranîna 64 MB; heke modulên din têne bikar anîn, tê pêşniyar kirin ku 128 MB saz bikin.

Drupal dikare Apache an Nginx wekî serverek malperê, û MySQL, PostgreSQL an SQLite wekî databasek bikar bîne.

Em ê Drupal-ê bi karanîna Nginx û MySQL saz bikin.

mîhengê

Ka em pakêtên sazkirî bi guhertoya herî dawî nûve bikin:

sudo dnf update -y

Ka em destûra daîmî ji bo seyrûsefera hatinê li portên http/80 û https/443 zêde bikin:

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

Ka em qaîdeyên nû yên firewall bicîh bînin:

sudo systemctl reload firewalld

Ka em Nginx saz bikin:

sudo dnf install nginx -y

Ka em servera Nginx dest pê bikin û çalak bikin:

sudo systemctl start nginx
sudo systemctl enable nginx

Ji ber ku depoya sereke ya Centos niha PHP 7.2 bikar tîne, bila em depoyek REMI bi PHP 7.4 (guhertoya herî kêm ji bo Drupal 9) lê zêde bikin.
Ji bo vê yekê, depoya EPEL (ji hêla depoya REMI ve tê xwestin) lê zêde bike:

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

Ka em depoya REMI lê zêde bikin:

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

Ka em modula php:remi-7.4 çalak bikin ku php 7.4 saz bike:

sudo dnf module enable php:remi-7.4 -y

php-fpm û php-cli saz bikin:

sudo dnf install -y php-fpm php-cli

Ka em modulên PHP-ê yên ku ji bo xebitandina Drupal hewce ne saz bikin:

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

Em ê di heman demê de modulên opcache mbstring PHP-ê yên pêşniyarkirî saz bikin:

sudo dnf install -y php-mbstring php-opcache

Ka em servera MySQL saz bikin:

sudo dnf install mysql-server -y

Ka em servera MySQL vekin û dest pê bikin:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Ji ber ku em ji bo VDS-ê şablonek çêdikin, û ew dikarin hêdî bin, em ê derengiya destpêkirina mysqld 30 çirkeyan lê zêde bikin, wekî din dibe ku di destpêka bootkirina pergalê de di serverê de pirsgirêk hebin:

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

Ka em grûp û bikarhênerê ku di bin wê de nginx dimeşîne bi guheztina /etc/php-fpm.d/www.conf biguherînin:

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

Werin em xwediyê pelrêça danişînên PHP-ê li gorî xwe biguhezînin nginx:

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

Ka em xêzên bi şîroveyan ji pelê veavakirinê rakin /etc/nginx/nginx.conf (da ku ji bo sed teşeyên ducar nebin):

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

Mîhengên berhevkirina gzip li /etc/nginx/nginx.conf zêde bikin

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

Ka em mîhengên pelê index.php li /etc/nginx/nginx.conf zêde bikin:

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

Werin em mîhengan ji bo servera xwerû lê zêde bikin: Pêvajoya PHP-ê bi rêya soketa php-fpm ve, têketinê ji bo pelên statîk neçalak bike, dema qedandinê zêde bike, têketina gihîştin û xeletiyê ji bo favicon.ico û robots.txt neçalak bike, û gihîştina .ht red bike. pelên ji bo her kesî:

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

Ji bo sazkirina certbot hewce wget saz bikin:

sudo dnf install wget -y

Pelê certbot-ê îcrakar ji derveyî malperê dakêşin:

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

Certbot biguhezîne /usr/local/bin/:

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

Û bila em mafên xwedan wekî xwedan rootê destnîşan bikin:

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

Ka em girêdanên certbot saz bikin û di vê qonaxê de xebata wê qut bikin (Bersiv: Y, c):

certbot-auto

Werin em arşîvê bi guhertoya herî dawî ya Drupal 9 ji derveyî malperê dakêşînin:

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

Ji bo vekirina arşîvê tar saz bikin:

sudo dnf install tar -y

Ka em pelên xwerû yên di pelrêça /usr/share/nginx/html/ de jêbirin:

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

Ka em pelan di pelrêça servera malperê de vekin:

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

Ka em pelan ji binerxetê biguhezînin pelrêça root ya servera malperê:

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

Werin em binerdektorê jêbikin:

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

Ka em arşîvê bi pelên sazkirinê jêbirin:

rm -f ./tar.gz

Ka em xwediyê pelên nginx destnîşan bikin:

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

Di vê qonaxê de em ê serverê qut bikin û wêneyek bigirin:

shutdown -h now

Piştî destpêkirina VDS-ê ji wêneyê, em ê sazkirina destpêkê ya servera MySQL bi xebitandina skrîptê pêk bînin:

mysql_secure_installation

Werin em erêkera şîfreyê çalak bikin:

Would you like to setup VALIDATE PASSWORD component? : y

Ka em şîfreya ji bo bikarhênerê root MySQL saz bikin:

New password:
Re-enter new password:

Ka em bikarhênerên nenas rakin:

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

Ka em pêşî li girêdana root ji dûr ve bigirin:

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

Ka em databasa testê jêbirin:

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

Ka em tabloyên îmtiyazê ji nû ve bar bikin:

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

Piştî vê yekê, ji bo qedandina sazkirinê, em dikarin biçin vps_ip_address
Di vê navnîşanê de em ê rûpela sazkirinê ya Drupal bibînin.

Werin em zimanê ku bikar bînin hilbijêrin. Mînak: Rûsî. Bikirtînin "Save and Continue"

Ka em profîlek sazkirinê hilbijêrin (demo tenê ji bo ku xwe bi pergalê nas bike tê bikar anîn). Di rewşa me de, bila ew "standard" be.

Di rûpela din de em ê navekî bidin databasê, mînakî "drupal". Ka em dema ku mysql_secure_installation dimeşîne, navê bikarhêner root root û şîfreya ku jê re hatî dayîn destnîşan bikin. "Save and Continue" bikirtînin.

Werin em li bendê bin ku sazkirin û nûvekirina wergeran biqede (dibe ku pêvajo çend deqeyan bigire).

Em ê navê malperê destnîşan bikin, e-nameya malperê destnîşan bikin (li ser navê kîjan agahdariya malperê dê bêne şandin), têketin, şîfre û e-nameya hesabê rêveberê Drupal. Em ê her weha welat û devera demjimêr di mîhengên herêmê de destnîşan bikin. Û bi tikandina "Save and Continue" sazkirinê temam bikin.

Piştî vê yekê, hûn dikarin bi têketin û şîfreya rêveberê Drupal-ê ya çêkirî biçin panela kontrolê.

Sazkirina HTTPS (vebijarkî)

Ji bo mîhengkirina HTTPS-ê, divê VDS navek DNS-ya derbasdar hebe, tê de destnîşan bike

/etc/nginx/nginx.conf

di beşa serverê de navê serverê (mînak):

server_name  domainname.ru;

Ka em nginx ji nû ve bidin destpêkirin:

service nginx restart

Ka em certbot dest pê bikin:

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

E-nameya xwe binivîsin, şertên karûbarê bipejirînin (A), bibin aboneya nûçenameyê (vebijarkî) (N), navên domainê yên ku hûn dixwazin sertîfîkayê derxînin hilbijêrin (Ji bo her kesî binivîse).

Ger her tişt bê xeletî derbas bû, em ê peyamek li ser weşandina serketî ya sertîfîkayan û veavakirina serverê bibînin:

Congratulations! You have successfully enabled ...

Piştî vê yekê, girêdanên bi porta 80-ê re dê li 443 (https) werin veguheztin.

Ji bo nûvekirina sertîfîkayan bixweber li /etc/crontab zêde bikin:

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

Sazkirina Ewlekariya Mêvandarê pêbawer (pêşniyar kirin)

Ev mîheng wekî çareseriyek ji bo pirsgirêka ku bi destnîşankirina bingehîn_url-a dînamîkî ve girêdayî ye tête armanc kirin, û ji bo pêşîgirtina li êrîşên HTTP HOST Header hatî çêkirin (gava ku malpera we difikire ku ew kesek din e).

Ji bo vê yekê, hûn hewce ne ku navên domainên pêbawer ên malperê di pelê mîhengan de diyar bikin.

Di pelê de

/usr/share/nginx/html/sites/default/settings.php Ka em bi şêwazên navên malperê yên rastîn mîhengek şîrove nekin an lê zêde bikin, mînakî:

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

Sazkirina PHP APCu (PÊŞNIYAR)

Drupal APCu piştgirî dike - Cache Bikarhêner a PHP-a Alternatîf, guhertoyên 8 û 9 ji guhertoyên berê bêtir APCu-yê wekî cache-ya herêmî ya kurt-kurt bikar tînin. Mezinahiya cache ya xwerû (32 MB) ji bo pir malperan maqûl e, û nikare ji 512 MB derbas bibe.

Ji bo çalakkirinê, modula PHP APCu saz bikin:

dnf -y install php-pecl-apcu

Nginx û php-fpm ji nû ve bidin destpêkirin:

service nginx restart
service php-fpm restart

Ger hûn zimanê rûsî û APCu bi mezinahiya bîranîna pêşniyarkirî ya ji bo cache-ê bikar bînin, dibe ku hûn di panela kontrolê de hişyariyek bibînin ku mezinahiya bîranîna veqetandî ya ji bo cache ji ya pêşniyarkirî cûda ye, lê di rastiyê de her tişt rast dixebite. û hişyariya xelet bi îhtîmalek mezin dê di nûvekirinên pêş de were rast kirin.

An jî heke hişyarî çavên we diêşîne, hûn dikarin bikar bînin patchê têkildar ji derveyî malperê.

Em dixwazin bînin bîra we ku hûn jî dikarin ji me re wêneyek çêbikin

Ji bo çawaniya beşdarbûnê sê vebijark hene.

Wêne bi xwe amade bikin û 3000 rubleyan ji balansa xwe bistînin

Ger hûn amade ne ku tavilê bikevin şer û wêneya ku hûn winda ne biafirînin, em ê ji we re 3000 ruble deyn bidin hevsengiya weya hundurîn, ku hûn dikarin li ser serveran xerc bikin.

Meriv çawa wêneya xwe biafirîne:

  1. Bi me re hesabek çêbikin malperê
  2. Bila piştgirî zanibin ku hûn ê wêneyan biafirînin û ceribandinê bikin
  3. Em ê ji we re 3000 ruble deyn bidin û kapasîteya çêkirina wêneyan çalak bikin
  4. Bi pergalek xebitandinê ya paqij serverek virtual ferman bikin
  5. Nermalavê li ser vê VPS-ê saz bikin û wê mîheng bikin
  6. Ji bo bicîhkirina nermalavê rêwerzan an skrîptê binivîsin
  7. Ji bo servera mîhengkirî wêneyek biafirînin
  8. Bi bijartina wêneya ku berê hatî afirandin di navnîşa dakêşan a "şablon pêşkêşkar" de serverek nû ya virtual ferman bike.
  9. Ger server bi serfirazî were afirandin, materyalên ku di qonaxa 6-an de hatine wergirtin veguhezînin piştgiriya teknîkî
  10. Ger xeletiyek hebe, hûn dikarin bi piştgirîyê sedemê kontrol bikin û sazkirinê dubare bikin

Ji bo xwedan karsaziyê: nermalava xwe pêşkêş bikin

Ger hûn pêşdebirek nermalavê ne ku li ser VPS-ê hatî bicîh kirin û bikar anîn, wê hingê em dikarin we di nav sûkê de bikin. Bi vî rengî em dikarin ji we re bibin alîkar ku hûn xerîdarên nû, seyrûsefer û hişmendiyê bînin. Ji me re binivîsin

Di şîroveyan de ji me re bibêjin ka hûn kîjan wêneyê winda dikin?

Û em ê bi xwe amade bikin

Afirandina şablonek VPS bi Drupal 9 re li ser Centos 8

Afirandina şablonek VPS bi Drupal 9 re li ser Centos 8

Source: www.habr.com