Centos 9 da Drupal 8 yordamida VPS shablonini yaratish

Biz bozorimizni kengaytirishda davom etamiz. Biz sizga yaqinda qanday qilib aytdik Gitlab tasvirini yaratdi, va bu hafta Drupal bizning bozorimizda paydo bo'ldi.

Biz uni nima uchun tanlaganimizni va tasvir qanday yaratilganini aytib beramiz.

Centos 9 da Drupal 8 yordamida VPS shablonini yaratish

Drupal — har qanday turdagi veb-saytlarni yaratish uchun qulay va kuchli platforma: mikrosaytlar va bloglardan tortib yirik ijtimoiy loyihalargacha, shuningdek, PHP-da yozilgan veb-ilovalar uchun asos sifatida ishlatiladi va ma'lumotlarni saqlash sifatida relyatsion ma'lumotlar bazalaridan foydalanadi.

Drupal 9 8.9 versiyasida taqdim etilgan barcha xususiyatlarni o'z ichiga oladi. 9-versiya va 8-versiya oʻrtasidagi asosiy farq shundaki, platforma 2021-yil noyabridan keyin yangilanishlar va xavfsizlik tuzatishlarini olishda davom etadi. 9-versiya yangilanish jarayonini ham soddalashtiradi, bu esa 8-versiyadan yangilanish jarayonini yanada osonlashtiradi.

Server talablari

Drupal-dan foydalanish uchun 2 GB operativ xotira va 2 protsessor yadrosidan foydalanish tavsiya etiladi.

Asosiy Drupal fayllari taxminan 100 MB ni egallaydi, qo'shimcha ravishda sizga rasmlar, ma'lumotlar bazasi, mavzular, qo'shimcha modullar va zaxira nusxalarini saqlash uchun joy kerak bo'ladi, bu sizning saytingiz hajmiga bog'liq bo'ladi.

Drupal 9 minimal cheklov bilan PHP 7.4 yoki undan yuqori versiyasini talab qiladi (memory_limit) 64 MB xotira uchun; agar qo'shimcha modullar ishlatilsa, 128 MB o'rnatish tavsiya etiladi.

Drupal veb-server sifatida Apache yoki Nginx, ma'lumotlar bazasi sifatida MySQL, PostgreSQL yoki SQLite-dan foydalanishi mumkin.

Biz Nginx va MySQL yordamida Drupalni o'rnatamiz.

sozlama

O'rnatilgan paketlarni eng so'nggi versiyaga yangilaymiz:

sudo dnf update -y

Keling, http/80 va https/443 portlariga kiruvchi trafik uchun doimiy ruxsatni qo'shamiz:

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

Yangi xavfsizlik devori qoidalarini qo'llaymiz:

sudo systemctl reload firewalld

Nginx ni o'rnatamiz:

sudo dnf install nginx -y

Nginx serverini ishga tushiramiz va yoqamiz:

sudo systemctl start nginx
sudo systemctl enable nginx

Asosiy Centos ombori hozirda PHP 7.2 dan foydalanayotganligi sababli, keling, PHP 7.4 (Drupal 9 uchun minimal versiya) bilan REMI omborini qoʻshamiz.
Buning uchun EPEL omborini qo'shing (REMI ombori tomonidan talab qilinadi):

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

REMI omborini qo'shamiz:

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

php 7.4 ni o'rnatish uchun php:remi-7.4 modulini yoqaylik:

sudo dnf module enable php:remi-7.4 -y

php-fpm va php-cli-ni o'rnating:

sudo dnf install -y php-fpm php-cli

Drupal ishlashi uchun zarur bo'lgan PHP modullarini o'rnatamiz:

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

Biz tavsiya etilgan PHP mbstring opcache modullarini ham oʻrnatamiz:

sudo dnf install -y php-mbstring php-opcache

Keling, MySQL serverini o'rnatamiz:

sudo dnf install mysql-server -y

Keling, MySQL serverini yoqamiz va ishga tushiramiz:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Biz VDS uchun shablonni yaratayotganimiz va ular sekin bo'lishi mumkinligi sababli, biz MySQLD ishga tushirish kechikishini 30 soniya qo'shamiz, aks holda tizimni dastlabki yuklash paytida server ishga tushishi bilan bog'liq muammolar bo'lishi mumkin:

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

Keling, /etc/php-fpm.d/www.conf ga o'zgartirish kiritish orqali nginx ishlaydigan guruh va foydalanuvchini o'zgartiraylik:

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 seanslari katalogining egasini mos ravishda nginx ga o'zgartiramiz:

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

Keling, /etc/nginx/nginx.conf konfiguratsiya faylidan izohli satrlarni olib tashlaymiz (sed uchun qo'sh triggerlar bo'lmasligi uchun):

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

Gzip siqish sozlamalarini /etc/nginx/nginx.conf ga qo'shing

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 indeks faylining sozlamalarini /etc/nginx/nginx.conf ga qo'shamiz:

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

Standart server uchun sozlamalarni qo‘shamiz: PHP-ni php-fpm rozetkasi orqali qayta ishlash, statik fayllar uchun jurnalni o‘chirish, amal qilish muddatini oshirish, favicon.ico va robots.txt uchun kirish va xatolar jurnalini o‘chirib qo‘yish va .ht saytiga kirishni rad etish. hamma uchun fayllar:

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

Sertbotni o'rnatish uchun zarur bo'lgan wget ni o'rnating:

sudo dnf install wget -y

Saytdan tashqarida certbot bajariladigan faylni yuklab oling:

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

Sertbotni /usr/local/bin/ ga o'tkazing:

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

Keling, root egasi sifatida huquqlarni belgilaylik:

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

Keling, certbot bog'liqliklarini o'rnatamiz va bu bosqichda uning ishini to'xtatamiz (Javoblar: Y, c):

certbot-auto

Drupal 9 ning eng so'nggi versiyasi bilan arxivni saytdan yuklab olaylik:

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

Arxivni ochish uchun tarni o'rnating:

sudo dnf install tar -y

Keling, /usr/share/nginx/html/ katalogidagi standart fayllarni o'chirib tashlaymiz:

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

Keling, fayllarni veb-server katalogiga ochamiz:

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

Fayllarni pastki katalogdan veb-serverning asosiy katalogiga o'tkazamiz:

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

Keling, quyi katalogni o'chirib tashlaymiz:

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

O'rnatish fayllari bilan arxivni o'chirib tashlaymiz:

rm -f ./tar.gz

Nginx fayllari egasini tayinlaymiz:

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

Ushbu bosqichda biz serverni o'chirib, suratga olamiz:

shutdown -h now

Suratdan VDS-ni ishga tushirgandan so'ng, biz skriptni ishga tushirish orqali MySQL serverini dastlabki sozlashni amalga oshiramiz:

mysql_secure_installation

Parolni tekshirgichni yoqaylik:

Would you like to setup VALIDATE PASSWORD component? : y

Keling, MySQL ildiz foydalanuvchisi uchun parolni o'rnatamiz:

New password:
Re-enter new password:

Keling, anonim foydalanuvchilarni o'chirib tashlaymiz:

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

Keling, ildizning masofadan ulanishini oldini olaylik:

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

Test ma'lumotlar bazasini o'chirib tashlaymiz:

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

Keling, imtiyozlar jadvallarini qayta yuklaymiz:

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

Shundan so'ng, o'rnatishni yakunlash uchun biz o'tishimiz mumkin vps_ip_manzil
Ushbu manzilda biz Drupal o'rnatish sahifasini ko'ramiz.

Keling, foydalanish uchun tilni tanlaylik. Masalan: rus. "Saqlash va Davom etish" tugmasini bosing

O'rnatish profilini tanlaylik (demo faqat tizim bilan tanishish uchun ishlatiladi). Bizning holatda, u "standart" bo'lsin.

Keyingi sahifada biz ma'lumotlar bazasiga nom beramiz, masalan, "drupal". Mysql_secure_installation dasturini ishga tushirishda ma'lumotlar bazasi foydalanuvchi nomi ildizini va unga berilgan parolni ko'rsatamiz. "Saqlash va Davom etish" tugmasini bosing.

Keling, tarjimalarni o'rnatish va yangilash tugashini kutamiz (jarayon bir necha daqiqa vaqt olishi mumkin).

Biz sayt nomini ko'rsatamiz, sayt elektron pochta manzilini (qaysi nomdan sayt bildirishnomalari yuboriladi), login, parol va Drupal administrator hisobining elektron pochta manzilini o'rnatamiz. Shuningdek, biz mintaqaviy sozlamalarda mamlakat va vaqt mintaqasini o'rnatamiz. Va "Saqlash va Davom etish" tugmasini bosib o'rnatishni yakunlang.

Shundan so'ng, siz yaratilgan Drupal administrator login va parol bilan boshqaruv paneliga o'tishingiz mumkin.

HTTPS sozlash (ixtiyoriy)

HTTPS-ni sozlash uchun VDS to'g'ri DNS nomiga ega bo'lishi kerak, uni kiriting

/etc/nginx/nginx.conf

server bo'limida server nomi (masalan):

server_name  domainname.ru;

Nginx-ni qayta ishga tushiramiz:

service nginx restart

Keling, certbotni ishga tushiramiz:

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

Elektron pochtangizni kiriting, xizmat ko'rsatish shartlariga rozilik bildiring (A), axborot byulleteniga obuna bo'ling (ixtiyoriy) (N), sertifikat bermoqchi bo'lgan domen nomlarini tanlang (Hamma uchun kiriting).

Agar hamma narsa xatosiz o'tgan bo'lsa, biz sertifikatlarning muvaffaqiyatli chiqarilishi va server konfiguratsiyasi haqida xabarni ko'ramiz:

Congratulations! You have successfully enabled ...

Shundan so'ng, 80-portga ulanishlar 443 (https) ga yo'naltiriladi.

Sertifikatlarni avtomatik yangilash uchun /etc/crontab ga qo'shing:

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

Ishonchli xost xavfsizligini sozlash (tavsiya etiladi)

Ushbu sozlama dinamik base_url manzilini aniqlash bilan bog'liq muammoni hal qilish uchun mo'ljallangan va HTTP HOST sarlavhasi hujumlarini oldini olish uchun mo'ljallangan (saytingiz uni boshqa birov deb hisoblaganda).

Buni amalga oshirish uchun sozlamalar faylida sayt uchun ishonchli domen nomlarini ko'rsatishingiz kerak.

Fayl ichida

/usr/share/nginx/html/sites/default/settings.php Sharhni bekor qilaylik yoki haqiqiy sayt nomlari naqshlari bilan sozlamani qo'shamiz, masalan:

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

PHP APCu ni o'rnatish (TAVsiya etiladi)

Drupal APCu - Alternativ PHP foydalanuvchi keshini qo'llab-quvvatlaydi, 8 va 9 versiyalari oldingi versiyalarga qaraganda qisqa muddatli mahalliy kesh sifatida APCu'dan ko'proq foydalanadi. Standart kesh hajmi (32 MB) ko'pgina saytlar uchun mos keladi va 512 MB dan oshmasligi kerak.

Faollashtirish uchun PHP APCu modulini o'rnating:

dnf -y install php-pecl-apcu

Nginx va php-fpm ni qayta ishga tushiring:

service nginx restart
service php-fpm restart

Agar siz rus tilidan va kesh uchun tavsiya etilgan xotira hajmi bilan APCu dan foydalansangiz, boshqaruv panelida kesh uchun ajratilgan xotira hajmi tavsiya etilganidan farq qilishi haqida ogohlantirishni ko'rishingiz mumkin, lekin aslida hamma narsa to'g'ri ishlaydi, va noto'g'ri ogohlantirish keyingi yangilanishlarda tuzatiladi.

Yoki ogohlantirish ko'zingizga zarar yetkazsa, siz foydalanishingiz mumkin saytdan tashqaridagi tegishli yamoq.

Sizga shuni eslatib o'tmoqchimizki, siz biz uchun rasm ham qilishingiz mumkin

Qanday ishtirok etishning uchta varianti mavjud.

Tasvirni o'zingiz tayyorlang va balansingizga 3000 rubl oling

Agar siz darhol jangga kirishga va o'zingiz etishmayotgan tasvirni yaratishga tayyor bo'lsangiz, biz sizning ichki balansingizga 3000 rublni to'laymiz, uni serverlarga sarflashingiz mumkin.

O'zingizning rasmingizni qanday yaratishingiz mumkin:

  1. Biz bilan hisob yarating сайт
  2. Tasvirlarni yaratmoqchi va sinab ko'rmoqchi ekanligingizni qo'llab-quvvatlash xizmatiga bildiring
  3. Biz sizga 3000 rubl miqdorida kredit beramiz va suratlarni yaratish imkoniyatini yoqamiz
  4. Toza operatsion tizimga ega virtual serverga buyurtma bering
  5. Ushbu VPS-ga dasturiy ta'minotni o'rnating va uni sozlang
  6. Dasturiy ta'minotni joylashtirish uchun ko'rsatmalar yoki skript yozing
  7. Sozlangan server uchun oniy rasm yarating
  8. “Server shabloni” ochiladigan ro‘yxatida avval yaratilgan suratni tanlab, yangi virtual serverga buyurtma bering.
  9. Agar server muvaffaqiyatli yaratilgan bo'lsa, 6-bosqichda olingan materiallarni texnik yordamga o'tkazing
  10. Agar xato bo'lsa, siz sababni ko'mak bilan tekshirishingiz va sozlashni takrorlashingiz mumkin

Biznes egalari uchun: dasturiy ta'minotingizni taklif qiling

Agar siz VPS-da o'rnatilgan va foydalaniladigan dasturiy ta'minot ishlab chiqaruvchisi bo'lsangiz, biz sizni bozorga qo'shishimiz mumkin. Shunday qilib, biz sizga yangi mijozlar, trafik va xabardorlikni jalb qilishda yordam bera olamiz. Bizga yozing

Izohlarda bizga qanday rasm etishmayotganini ayting?

Va biz uni o'zimiz tayyorlaymiz

Centos 9 da Drupal 8 yordamida VPS shablonini yaratish

Centos 9 da Drupal 8 yordamida VPS shablonini yaratish

Manba: www.habr.com