Продовжаваме да разширяваме нашия маркетплейс. Преди време разказахме как , а тази седмица в нашия маркетплейс се появи Drupal.
Разказваме защо избрахме точно него и как е създаден образа.
Drupal — удобна и мощна платформа за създаване на всякакви типове сайтове: от микросайтове и блогове до големи социални проекти, използвана също като основа за уеб приложения, написана на PHP и използваща релационни бази данни за съхранение на данни.
Drupal 9 включва всички функции, реализирани в версия 8.9. Основната разлика между версия 9 и версия 8 е, че за платформата ще бъдат издавани актуализации и корекции за сигурност и след ноември 2021 година. Освен това, в версия 9 процесът на актуализиране е опростен, правейки обновяването от версия 8 още по-лесно.
Изисквания към сървъра
За използване на Drupal се препоръчва 2 Гб RAM и 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 Тъй като в момента в основния репозиторий на Centos се използва версия PHP 7.2, добавяме репозитория 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: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 модулите, необходими за работата на 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Ще променим групата и потребителя, от които ще работи 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Сваляме от официалния сайт архив с последната версия на 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Включваме валидатора за пароли:
Искате ли да настроите компонента VALIDATE PASSWORD? : yЗадаваме паролата на потребителя root MySQL:
Нова парола:
Потвърдете новата парола:Премахваме анонимните потребители:
Премахнете анонимните потребители? (Натиснете y|Y за да Yes, всяка друга клавиша за No) : yЗабраняваме отдалечен достъп на root:
Забранявате ли отдалечения достъп до root? (Натиснете y|Y за да Yes, всяка друга клавиша за No) : yПремахваме тестовата база данни:
Премахнете тестовата база данни и достъпа до нея? (Натиснете y|Y за да Yes, всяка друга клавиша за No) : yПрезареждаме таблиците с привилегии:
Презаредете таблиците с привилегии сега? (Натиснете y|Y за да Yes, всяка друга клавиша за No) : y След това, за да завършим инсталацията, можем да отидем на адреса
На този адрес ще видим страницата за инсталиране на Drupal.
Избираме използвания език. Например: български. Натискаме "Запази и продължи"
Избираме инсталационния профил (демото се използва единствено за запознаване със системата). В нашия случай нека бъде "стандарт".
На следващата страница задаваме имената на базата данни, например "drupal". Указваме името на потребителя на БД root и паролата, зададена му при стартиране на mysql_secure_installation. Натискаме "Запази и продължи".
Изчакваме завършването на инсталацията и обновяването на преводите (процесът може да отнеме няколко минути).
Въведете името на сайта, задайте имейл адреса на сайта (от който ще получават известия), потребителското име, паролата и имейл адреса на администратора на Drupal. Също така задайте страната и часовата зона в регионалните настройки. Завършете инсталацията, като натиснете "Запази и продължи".
След това можете да влезете в контролния панел с зададеното потребителско име и парола на администратора на Drupal.
Настройка на HTTPS (по избор)
За настройка на HTTPS вашият VDS трябва да има валидно DNS име. Въведете в
/etc/nginx/nginx.confраздела server името на сървъра (например):
server_name domainname.ru;Рестартирайте nginx:
service nginx restartСтартирайте certbot:
sudo /usr/local/bin/certbot-auto --nginxВъведете своя имейл, приемете условията на услугата (A), абонамент за бюлетин (по избор) (N), изберете домейн имената, за които искате да издадете сертификат (Enter за всички).
Ако всичко е преминало без грешки, ще видите съобщение за успешната издаване на сертификати и конфигурация на сървера:
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"Настройка на Trusted Host Security (препоръчително)
Тази настройка е предназначена като решение на проблема, свързан с динамичното определяне на base_url, и има за цел да предотврати атаки с HTTP HOST Header (когато вашият сайт смята, че е някой друг).
За това трябва да зададете доверени домейни на сайта във файла с настройки.
В файла
/usr/share/nginx/html/sites/default/settings.php разкоментирайте или добавете настройка с шаблоните на актуалните имена на сайта, например:
$settings['trusted_host_patterns'] = [
'^www.mydomain.ru$',
];
Инсталиране на PHP APCu (ПРЕПОРЪЧВА СЕ)
Drupal поддържа APCu — Alternative 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 лева на вътрешния баланс — можете да ги харчите за сървъри.
Как да създадете свой образ:
- Създайте акаунт при нас на
- Съобщете на поддръжката, че планирате да създавате и тествате образи
- Ние ще ви зачислим 3000 лева и ще активираме възможността за създаване на снимки
- Поръчайте виртуален сървър с чиста операционна система
- Инсталирайте софтуера на този VPS и го настройте
- Съставете инструкция или скрипт за разгръщане на софтуера
- Създайте снимка за настроения сървър
- Поръчайте нов виртуален сървър, избирайки в падащото меню „Шаблон на сървъра“ създадената по-рано снимка
- При успешното създаване на сървъра, предоставете материалите получени на етап 6 на техническата поддръжка
- В случай на грешка можете да уточните причината при поддръжката и да повторите настройката
За собствениците на бизнес: предложете своя софтуер
Ако сте разработчик на софтуер, който се разгръща и използва на VPS, то можем да ви включим в маркетплейса. По този начин можем да ви помогнем да привлечете нови клиенти, трафик и разпознаваемост.
Кажете ни в коментарите, какъв образ ви липсва?
И ние ще го подготвим сами
Източник: habr.com
