Создавање шаблон VPS со Друпал 9 на Centos 8

Продолжуваме да го шириме нашиот пазар. Неодамна разговаравме за тоа како направи слика од Gitlab, а оваа недела Друпал се појави на нашиот пазар.

Кажуваме зошто го избравме и како е создадена сликата.

Создавање шаблон VPS со Друпал 9 на Centos 8

Друпал е удобна и моќна платформа за креирање на секаков тип на сајтови: од микространици и блогови до големи социјални проекти, која исто така се користи како основа за веб-апликации, напишани во PHP и користење на релациони бази на податоци како складирање на податоци.

Друпал 9 ги вклучува сите функции воведени во верзијата 8.9. Клучната разлика помеѓу верзијата 9 и верзијата 8 е тоа што платформата ќе продолжи да добива ажурирања и безбедносни поправки по ноември 2021 година. Исто така во верзијата 9, процесот на надградба е поедноставен, што го прави процесот на надградба од верзијата 8 уште полесен.

Барања за серверот

За да користите Друпал, се препорачува да користите 2 GB RAM и 2 јадра на процесорот.

Главните датотеки на Друпал се околу 100 MB, дополнително ќе ви треба простор за складирање на слики, база на податоци, теми, додатоци и резервни копии, што ќе зависи од големината на вашата страница.

Друпал 9 бара PHP 7.4 или повисока со минимална граница (memory_limit) до 64 MB меморија, во случај на користење на дополнителни модули, се препорачува да се инсталираат 128 MB.

Друпал може да користи Apache или Nginx како веб-сервер, а MySQL, PostgreSQL или SQLite како база на податоци.

Ќе го инсталираме Друпал користејќи 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 (минималната верзија за Друпал 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:remi-7.4 за да инсталирате php 7.4:

sudo dnf module enable php:remi-7.4 -y

Инсталирајте php-fpm и php-cli:

sudo dnf install -y php-fpm php-cli

Инсталирајте ги 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

Ние исто така ќе ги инсталираме препорачаните 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

Ајде да ги смениме групата и корисникот под кој ќе работи nginx со правење промени на /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

Променете го сопственикот на директориумот за сесии 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

Инсталирајте wget потребен за инсталирање certbot:

sudo dnf install wget -y

Преземете ја извршната датотека certbot од офсајт:

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

Преместете го certbot на /usr/local/bin/:

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

И доделете права и сопственост на root:

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

Инсталирајте ги зависностите на certbot и запрете го во оваа фаза (Одговори: Y, c):

certbot-auto

Преземете ја архивата со најновата верзија на Друпал 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/

Преместете ги датотеките од поддиректориумот во root директориумот на веб-серверот:

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 root корисничката лозинка:

New password:
Re-enter new password:

Отстранете ги анонимните корисници:

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

Ајде да спречиме root да се поврзува од далечина:

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_address
На оваа адреса ќе видиме страница со инсталирање на Друпал.

Изберете го јазикот што ќе се користи. На пример: руски. Кликнете на „Зачувај и продолжи“

Ајде да избереме профил за инсталација (демо се користи само за запознавање со системот). Во нашиот случај нека биде „стандардно“.

На следната страница, дадете име на базата на податоци, како што е „друпал“. Наведете го корисничкото име на базата на податоци root и лозинката што му е дадена при стартување на mysql_secure_installation. Кликнете на „Зачувај и продолжи“.

Да почекаме да заврши инсталацијата и ажурирањето на преводите (процесот може да потрае неколку минути).

Наведете го името на страницата, поставете ја е-поштата на страницата (во име на кое ќе доаѓаат известувањата на страницата), најава, лозинка и е-пошта на администраторската сметка на Друпал. Исто така, ќе ги поставиме земјата и временската зона во регионалните поставки. И завршете ја инсталацијата со кликнување на „Зачувај и продолжи“.

После тоа, можете да отидете на контролната табла со креираното најавување и лозинка на администраторот на Друпал.

Поставување HTTPS (опционално)

За да го конфигурирате HTTPS, VDS мора да има важечко име на DNS, наведете во

/etc/nginx/nginx.conf

во делот сервер името на серверот (на пример):

server_name  domainname.ru;

Рестартирајте го nginx:

service nginx restart

Да започнеме со certbot:

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

Внесете ја вашата е-пошта, согласете се со условите за користење (А), претплатете се на билтенот (опционално) (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 (ПРЕПОРАЧАНО)

Друпал поддржува APCu - Алтернативен PHP User Cache, верзиите 8 и 9 го користат APCu поинтензивно како краткорочен локален кеш од претходните верзии. Стандардната големина на кешот (32 MB) ќе одговара на повеќето локации и не може да надмине 512 MB.

За да го активирате, инсталирајте го модулот 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 со Друпал 9 на Centos 8

Создавање шаблон VPS со Друпал 9 на Centos 8

Извор: www.habr.com