Мы працягваем пашыраць наш маркетплэйс. Нядаўна мы расказвалі, як зрабілі вобраз Gitlab, а на гэтым тыдні ў нашым маркетплэйсе з'явіўся 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 порты:
Бо на дадзены момант у асноўным рэпазітары Centos выкарыстоўваецца версія PHP 7.2, дадамо рэпазітар REMI з PHP 7.4 (мінімальная версія для Drupal 9).
Для гэтага дадамо рэпазітар EPEL (патрабуецца рэпазітаром REMI):
Бо мы робім шаблон для 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
Дадамо ў /etc/nginx/nginx.conf налады кампрэсіі gzip
Дадамо ў /etc/nginx/nginx.conf налады індэкснага файла index.php:
sudo sed -i '/ root /usr/share/nginx/html;/a
index index.php index.html index.htm;
' /etc/nginx/nginx.conf
Дадамо налады для дэфолтнага сервера апрацоўку php праз сокет php-fpm, адключым лог для статычных файлаў, павялічым час expire, адключым лог доступу і памылак для favicon.ico і robots.txt і забаронім доступ да файлаў .ht для ўсіх:
На дадзеным этапе мы выключым сервер і зробім снапшот:
shutdown -h now
Пасля запуску VDS з снапшота выканаем першапачатковую наладу MySQL сервера запусціўшы скрыпт:
mysql_secure_installation
Уключым валідатар пароляў:
Would you like to setup VALIDATE PASSWORD component? : y
Задамо пароль карыстальніка root MySQL:
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
Па гэтым адрасе мы ўбачым старонку з усталёўкай Drupal.
Выберам мову, якая выкарыстоўваецца. Напрыклад: руская. Націснем "Захаваць і працягнуць"
Выберам установачны профіль (дэма выкарыстоўваецца выключна для азнаямлення з сістэмай). У нашым выпадку няхай гэта будзе "стандарт".
На наступнай старонцы зададзім імя базы дадзеных, напрыклад "drupal". Пакажам імя карыстальніка БД root і пароль зададзены яму, пры запуску mysql_secure_installation. Націснем "Захаваць і працягнуць".
Дачакаемся завяршэння ўстаноўкі і абнаўлення перакладаў (працэс можа заняць некалькі хвілін).
Пакажам назву сайта, зададзім email сайта (ад імя якога будуць прыходзіць апавяшчэнні сайта), лагін, пароль і email ўліковага запісу адміністратара 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
Увядзем свой e-mail, пагодзімся з умовамі сэрвісу (A), Падпіска на рассылку (апцыянальна) (N), абярэм даменныя імёны для якіх трэба выдаць сертыфікат (Enter для ўсіх).
У выпадку, калі ўсё прайшло без памылак, мы ўбачым паведамленне аб паспяховай выдачы сертыфікатаў і наладзе сервера:
Congratulations! You have successfully enabled ...
Пасля гэтага падлучэння на 80 порт будуць перанакіроўвацца на 443 (https).
Дадамо ў /etc/crontab для аўтаматычнага абнаўлення сертыфікатаў:
Дадзеная налада прызначана як рашэнне праблемы злучанай з дынамічным азначэннем base_url, і заклікана прадухіліць напады HTTP HOST Header (калі ваш сайт думае, што ён хтосьці іншы).
Для гэтага трэба пазначыць давераныя даменныя імёны сайта ў файле налад.
У файле
/usr/share/nginx/html/sites/default/settings.php раскаментуем або дадамо наладу з патэрнамі актуальных імёнаў сайта, напрыклад:
Drupal падтрымлівае APCu – Alternative PHP User Cache, версіі 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 рублёў на ўнутраны баланс — вы зможаце патраціць на серверы.
Паведаміце ў падтрымку, што вы збіраецеся ствараць і тэставаць выявы
Мы залічым вам 3000 рублёў і ўключым магчымасць ствараць снапшоты
Замоўце віртуальны сервер з чыстай аперацыйнай сістэмай
Усталюйце на гэтую VPS праграмнае забеспячэнне і наладзьце яго
Складзіце інструкцыю або скрыпт для разгортвання ПЗ
Стварыце снапшот для настроенага сервера
Замоўце новы віртуальны сервер, выбраўшы ў выпадаючым спісе «Шаблон сервера» створаны раней снапшот
У выпадку паспяховага стварэння сервера, перадайце матэрыялы атрыманыя на этапе 6 тэхнічнай падтрымцы
У выпадку памылкі вы можаце ўдакладніць у падтрымкі прычыну і паўтарыць настройку
Для ўладальнікаў бізнэсу: прапануеце свой софт
Калі вы - распрацоўшчык софту, які разгортваюць і выкарыстоўваюць на VPS, то мы можам уключыць вас у маркетплейс. Так мы можам дапамагчы вам прывесці новых кліентаў, трафік і пазнавальнасць. Пішыце нам
Раскажыце ў каментарах, якога вобраза вам не хапае?