Сохтани Шаблони VPS бо Drupal 9 дар Centos 8

Мо васеъ кардани бозори худро идома медиҳем. Мо ба наздикӣ дар бораи он сӯҳбат кардем тасвири Gitlab сохт, ва ин ҳафта Drupal дар бозори мо пайдо шуд.

Мо мегӯем, ки чаро мо онро интихоб кардем ва чӣ гуна тасвир офарида шудааст.

Сохтани Шаблони VPS бо Drupal 9 дар Centos 8

Drupal як платформаи қулай ва тавоно барои эҷоди ҳама гуна сайтҳо: аз микросайтҳо ва блогҳо то лоиҳаҳои бузурги иҷтимоӣ, ки ҳамчун асос барои барномаҳои веб, ки дар PHP навишта шудааст ва истифода аз пойгоҳи додаҳои релятсионӣ ҳамчун нигаҳдории маълумот истифода мешавад.

Drupal 9 тамоми хусусиятҳоро дар версияи 8.9 дар бар мегирад. Тафовути калидии версияи 9 ва версияи 8 дар он аст, ки платформа пас аз ноябри соли 2021 қабули навсозиҳо ва ислоҳи амниятро идома медиҳад. Инчунин дар версияи 9, раванди навсозӣ содда карда шуда, раванди навсозӣ аз версияи 8 боз ҳам осонтар шудааст.

Талаботи сервер

Барои истифодаи Drupal, тавсия дода мешавад, ки 2 ГБ хотираи оперативӣ ва 2 ядрои CPU истифода баред.

Файлҳои асосии Drupal тақрибан 100 МБ мебошанд, ба ғайр аз ин ба шумо барои нигоҳ доштани тасвирҳо, пойгоҳи додаҳо, мавзӯъҳо, замимаҳо ва нусхаҳои эҳтиётӣ ҷой лозим мешавад, ки аз андозаи сайти шумо вобаста аст.

Drupal 9 PHP 7.4 ё баландтарро бо маҳдудияти ҳадди ақал талаб мекунад (memory_limit) ба хотираи 64 МБ, дар сурати истифода бурдани модулҳои иловагӣ, насб кардани 128 МБ тавсия дода мешавад.

Drupal метавонад Apache ё Nginx-ро ҳамчун сервери веб ва MySQL, PostgreSQL ё SQLite ҳамчун пойгоҳи додаҳо истифода барад.

Мо Drupal-ро бо истифода аз Nginx ва MySQL насб мекунем.

параметр

Бастаҳои насбшударо ба версияи охирин навсозӣ кунед:

sudo dnf update -y

Биёед иҷозати доимиро барои трафики воридотӣ ба портҳои http/80 ва https/443 илова кунем:

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

Қоидаҳои нави брандмауэрро татбиқ кунед:

sudo systemctl reload firewalld

Nginx насб кунед:

sudo dnf install nginx -y

Биёед сервери Nginx-ро оғоз ва фаъол кунем:

sudo systemctl start nginx
sudo systemctl enable nginx

Азбаски PHP 7.2 дар айни замон дар анбори асосии Centos истифода мешавад, биёед анбори REMI-ро бо PHP 7.4 илова кунем (версияи ҳадди ақал барои Drupal 9).
Барои ин, анбори EPEL-ро илова кунед (аз ҷониби анбори REMI талаб карда мешавад):

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

Биёед анбори REMI-ро илова кунем:

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

Барои насб кардани php 7.4 модули php:remi-7.4-ро фаъол созед:

sudo dnf module enable php:remi-7.4 -y

php-fpm ва php-cli -ро насб кунед:

sudo dnf install -y php-fpm php-cli

Модулҳои PHP-ро барои кор кардани Drupal насб кунед:

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

Мо инчунин модулҳои тавсияшудаи PHP-ро mbstring opcache насб мекунем:

sudo dnf install -y php-mbstring php-opcache

Сервери MySQL насб кунед:

sudo dnf install mysql-server -y

Сервери MySQL-ро фаъол ва оғоз кунед:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Азбаски мо шаблонро барои VDS таҳия карда истодаем ва онҳо метавонанд суст бошанд, мо таъхири оғози mysqld-ро 30 сония илова хоҳем кард, вагарна ҳангоми оғозёбии система мушкилот метавонад дар оғоз кардани сервер ба миён ояд:

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

Биёед бо ворид кардани тағирот ба /etc/php-fpm.d/www.conf гурӯҳ ва корбареро тағир диҳем, ки nginx зери он кор мекунад:

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

Соҳиби директорияи сессияи PHP-ро мувофиқан ба nginx иваз кунед:

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

Биёед сатрҳои шарҳро аз файли конфигуратсияи /etc/nginx/nginx.conf хориҷ кунем (то ин ки барои sed дучанд хитҳо вуҷуд надошта бошанд):

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

Танзимоти фишурдани 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

Биёед танзимоти файли 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

Биёед танзимоти коркарди сервери пешфарзии php-ро тавассути васлаки php-fpm илова кунем, сабти файлҳои статикиро ғайрифаъол кунем, вақти гузаштани мӯҳлатро зиёд кунем, сабти дастрасӣ ва хатогиҳоро барои favicon.ico ва robots.txt ғайрифаъол созем ва дастрасиро ба файлҳои .ht барои ҳама:

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

Барои насб кардани certbot, wget-ро насб кунед:

sudo dnf install wget -y

Файли иҷрошавандаи certbot-ро аз берун аз сайт зеркашӣ кунед:

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

Сертботро ба /usr/local/bin/ интиқол диҳед:

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

Ва ҳуқуқ ва моликиятро ба реша таъин кунед:

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

Вобастагии certbotро насб кунед ва онро дар ин марҳила қатъ кунед (Ҷавобҳо: Y, c):

certbot-auto

Архивро бо версияи охирини Drupal 9 аз берун аз сайт зеркашӣ кунед:

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

Барои кушодани бойгонӣ tar насб кунед:

sudo dnf install tar -y

Файлҳои пешфарзро дар директорияи /usr/share/nginx/html/ нест кунед:

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

Файлҳоро ба директорияи сервери веб кушоед:

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

Файлҳоро аз зеркаталог ба директорияи решаи сервери веб интиқол диҳед:

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

Нобуд кардани зеркаталог:

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

Архивро бо файлҳои насбкунӣ нест кунед:

rm -f ./tar.gz

Соҳиби файлҳои nginx -ро таъин кунед:

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

Дар ин марҳила, мо серверро хомӯш мекунем ва аксбардорӣ мекунем:

shutdown -h now

Пас аз оғоз кардани VDS аз акс, мо насби ибтидоии сервери MySQL-ро тавассути иҷро кардани скрипт иҷро мекунем:

mysql_secure_installation

Тафтишкунандаи паролро фаъол созед:

Would you like to setup VALIDATE PASSWORD component? : y

Пароли корбари решаи MySQL-ро таъин кунед:

New password:
Re-enter new password:

Хориҷ кардани корбарони номаълум:

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

Биёед аз пайвасти дурдаст реша пешгирӣ кунем:

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

Биёед базаи санҷиширо хориҷ кунем:

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

Ҷадвалҳои имтиёзҳоро аз нав бор кунед:

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

Пас аз он, барои анҷом додани насб, мо метавонем ба vps_ip_адрес
Дар ин суроға мо саҳифаеро бо насби Drupal мебинем.

Забони истифодашавандаро интихоб кунед. Масалан: русӣ. "Захира ва Идома" -ро клик кунед

Биёед профили насбкуниро интихоб кунем (демо танҳо барои шиносоӣ бо система истифода мешавад). Дар мо бошад, бигзор он «стандарт» бошад.

Дар саҳифаи оянда, ба пойгоҳи додаҳо ном диҳед, ба монанди "drupal". Решаи номи корбарии пойгоҳи додаҳо ва пароли ба ӯ ҳангоми оғози mysql_secure_installation додашударо муайян кунед. "Захира ва Идома" -ро клик кунед.

Биёед интизор шавем, ки насб ва навсозии тарҷумаҳо ба итмом расад (раванд метавонад чанд дақиқа тӯл кашад).

Номи сайтро муайян кунед, суроғаи почтаи электронии сайтро таъин кунед (аз номи он сайт огоҳиномаҳо меоянд), логин, парол ва почтаи электронии ҳисоби администратори Drupal. Мо инчунин дар танзимоти минтақавӣ кишвар ва минтақаи вақтро муқаррар мекунем. Ва насбро ба воситаи ангуштзании "Захира ва Идома" анҷом диҳед.

Пас аз ин, шумо метавонед ба панели идоракунӣ бо логин ва пароли мудири Drupal сохташуда равед.

Танзимоти HTTPS (ихтиёрӣ)

Барои танзим кардани HTTPS, VDS бояд номи дурусти DNS дошта бошад, дар

/etc/nginx/nginx.conf

дар бахши сервер номи сервер (масалан):

server_name  domainname.ru;

Nginx-ро аз нав оғоз кунед:

service nginx restart

Биёед certbot-ро оғоз кунем:

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

Почтаи электронии худро ворид кунед, ба шартҳои хидмат розӣ шавед (A), Ба бюллетен обуна шавед (ихтиёрӣ) (N), номҳои доменеро, ки барои онҳо сертификат додан мехоҳед, интихоб кунед (Барои ҳама ворид кунед).

Агар ҳама чиз бе хатогӣ анҷом дода шавад, мо паёмро дар бораи бомуваффақияти додани сертификатҳо ва танзими сервер мебинем:

Congratulations! You have successfully enabled ...

Пас аз он, пайвастҳо дар порти 80 ба 443 (https) равона карда мешаванд.

Барои ба таври худкор нав кардани сертификатҳо ба /etc/crontab илова кунед:

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

Насб кардани амнияти ҳости боэътимод (тавсия дода мешавад)

Ин танзимот ҳамчун роҳи ҳалли мушкилоти муайянкунии динамикии base_url пешбинӣ шудааст ва барои пешгирии ҳамлаҳои HTTP HOST Header пешбинӣ шудааст (вақте ки сайти шумо онро ягон каси дигар мешуморад).

Барои ин, шумо бояд дар файли танзимот номҳои домени боэътимоди сайтро муайян кунед.

Дар файл

/usr/share/nginx/html/sites/default/settings.php шарҳ надодан ё танзимеро бо намунаҳои номҳои воқеии сайт илова кунед, масалан:

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

Насб кардани PHP APCu (Тавсия дода мешавад)

Drupal APCu - Кэши корбари алтернативии PHP -ро дастгирӣ мекунад, версияҳои 8 ва 9 APCu-ро нисбат ба версияҳои қаблӣ ҳамчун кэши кӯтоҳмуддати маҳаллӣ бештар истифода мебаранд. Андозаи пешфарзи кэш (32 МБ) ба аксари сайтҳо мувофиқ аст ва наметавонад аз 512 МБ зиёд бошад.

Барои фаъол кардан, модули PHP APCu -ро насб кунед:

dnf -y install php-pecl-apcu

Nginx ва php-fpm-ро аз нав оғоз кунед:

service nginx restart
service php-fpm restart

Дар сурати истифодаи забони русӣ ва APCu бо андозаи тавсияшудаи хотираи кэш, шумо метавонед дар панели идоракунӣ огоҳиро бинед, ки андозаи хотираи кэши ҷудошуда аз хотираи тавсияшуда фарқ мекунад, аммо дар асл ҳама чиз дуруст кор мекунад ва нодуруст аст. Огоҳӣ эҳтимолан дар навсозиҳои оянда ислоҳ карда мешавад.

Ё агар огоҳӣ ба чашм осеб расонад, шумо метавонед истифода баред ямоқи мувофиқ аз берун аз сайт.

Мо мехоҳем ба шумо хотиррасон кунем, ки шумо инчунин метавонед барои мо тасвир созед

Се вариант барои иштирок кардан вуҷуд дорад.

Тасвирро худатон омода кунед ва ба баланси худ 3000 рубл гиред

Агар шумо омода бошед, ки фавран ба ҷанг шитофтед ва тасвиреро, ки худатон намерасад, эҷод кунед, мо ба шумо 3000 рублро ба тавозуни дохилии шумо ҳисоб мекунем - шумо метавонед онро дар серверҳо сарф кунед.

Чӣ тавр эҷод кардани тасвири худ:

  1. Бо мо ҳисоб эҷод кунед сомона
  2. Ба дастгирии дастгирӣ бигӯед, ки шумо тасвирҳоро эҷод кардан ва озмоиш кардан мехоҳед
  3. Мо ба шумо 3000 рубл қарз медиҳем ва имкони эҷоди аксҳоро фароҳам меорем
  4. Сервери виртуалиро бо системаи оператсионии тоза фармоиш диҳед
  5. Нармафзорро дар ин VPS насб кунед ва онро насб кунед
  6. Дастурҳо ё скрипт барои ҷойгиркунии нармафзор нависед
  7. Барои сервери конфигуратсияшуда тасвири фаврӣ эҷод кунед
  8. Бо интихоби акси қаблан сохташуда дар рӯйхати афтанда "Шаблони сервер" сервери нави виртуалиро фармоиш диҳед
  9. Дар сурати бомуваффақият сохтани сервер, маводҳои дар қадами 6 гирифташударо ба дастгирии техникӣ интиқол диҳед
  10. Дар сурати рух додани хато, шумо метавонед бо дастгирии сабабҳо тафтиш кунед ва танзимро такрор кунед

Барои соҳибони тиҷорат: нармафзори худро пешниҳод кунед

Агар шумо як таҳиягари нармафзор бошед, ки дар VPS ҷойгир ва истифода мешавад, мо метавонем шуморо ба бозор дохил кунем. Ин аст, ки мо метавонем ба шумо кӯмак расонем, ки мизоҷони нав, трафик ва намоёнро ҷалб кунед. Ба мо нависед

Дар шарҳҳо ба мо хабар диҳед, ки кадом тасвирро аз даст медиҳед?

Ва мо онро худамон тайёр мекунем

Сохтани Шаблони VPS бо Drupal 9 дар Centos 8

Сохтани Шаблони VPS бо Drupal 9 дар Centos 8

Манбаъ: will.com