Centos 9де Drupal 8 менен VPS шаблонун түзүү

Биз базарыбызды кеңейтүүнү улантабыз. Биз жакында эле сүйлөштүк Gitlab сүрөтүн жасады, жана ушул аптада Drupal биздин базарда пайда болду.

Аны эмне үчүн тандап алганыбызды жана образ кандай жаралганын айтабыз.

Centos 9де Drupal 8 менен VPS шаблонун түзүү

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 маалымат базасы катары колдоно алат.

Биз Nginx жана MySQL аркылуу Drupal орнотобуз.

жөндөө

Келгиле, орнотулган пакеттерди эң ​​акыркы версияга жаңырталы:

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 репозиторийинде колдонулуп жаткандыктан, PHP 7.4 менен REMI репозиторийсин кошолу (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

Келгиле, Drupal иштеши үчүн зарыл болгон PHP модулдарын орнотобуз:

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

Биз ошондой эле mbstring opcache сунуш кылынган PHP модулдарын орнотобуз:

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

/etc/nginx/nginx.conf дарегине gzip кысуу орнотууларын кошуңуз

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-fpm розеткасы аркылуу демейки серверди иштетүүчү php үчүн орнотууларды кошолу, статикалык файлдар үчүн журналды өчүрөлү, жарактуулук мөөнөтүн көбөйтөлү, 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

Сертботту орнотуу үчүн зарыл болгон wgetти орнотуңуз:

sudo dnf install wget -y

Сертботтун аткарылуучу файлын сайттан тышкаркы жерден жүктөп алыңыз:

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

Сертботтун көз карандылыктарын орнотуп, аны ушул этапта токтотуңуз (Жооптор: 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де орнотулган жана колдонулган программалык камсыздоону иштеп чыгуучу болсоңуз, анда биз сизди базарга кошо алабыз. Мына ушундай жол менен биз сизге жаңы кардарларды, трафикти жана көрүнүштү тартууга жардам бере алабыз. Бизге жаз

Кайсы сүрөттү сагынганыңызды комментарийлерде бизге айтыңыз?

Анан өзүбүз даярдайбыз

Centos 9де Drupal 8 менен VPS шаблонун түзүү

Centos 9де Drupal 8 менен VPS шаблонун түзүү

Source: www.habr.com