Биз базарыбызды кеңейтүүнү улантабыз. Биз жакында эле сүйлөштүк жана бул аптада ал биздин базарда пайда болду Drupal.
Аны эмне үчүн тандап алганыбызды жана образ кандай жаралганын айтабыз.
Drupal — веб-сайттын каалаган түрүн түзүү үчүн ыңгайлуу жана күчтүү платформа: микросайттардан жана блогдордон баштап чоң социалдык долбоорлорго чейин, ошондой эле PHPде жазылган веб-тиркемелер үчүн негиз катары колдонулат жана маалыматтарды сактоочу катары реляциялык маалымат базаларын колдонот.
Drupal 9-версия 8.9 версиясында ишке ашырылган бардык функцияларды камтыйт. 9-версия менен 8-версиянын ортосундагы негизги айырмачылык, платформа 2021-жылдын ноябрь айынан кийин да жаңыртууларды жана коопсуздук патчтарын ала берет. 9-версия ошондой эле жаңыртуу процессин жөнөкөйлөтүп, 8-версиядан жаңыртууну ого бетер жеңилдетет.
Сервердин талаптары
пайдалануу үчүн Drupal 2 ГБ оперативдик эс тутумду жана 2 процессордук ядрону колдонуу сунушталат.
Негизги файлдар 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 firewalldNginx орнотуу:
sudo dnf install nginx -yNginx серверин баштайлы жана иштетели:
sudo systemctl start nginx
sudo systemctl enable nginx Учурда негизги репозиторийде болгондуктан Centos PHP 7.2 версиясы колдонулуп жатат, PHP 7.4 менен REMI репозиторийин кошолу (минималдуу версиясы Drupal 9).
Бул үчүн, EPEL репозиторийин кошуңуз (REMI репозиторийинен талап кылынат):
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpmREMI репозиторийсин кошолу:
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 -yphp-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Биз ошондой эле mbstring opcache сунуш кылынган PHP модулдарын орнотобуз:
sudo dnf install -y php-mbstring php-opcacheMySQL серверин орнотуу:
sudo dnf install mysql-server -yMySQL серверин иштетүү жана баштоо:
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.confindex.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.gznginx файлдарынын ээсин дайындайлы:
chown -R nginx. /usr/share/nginx/htmlБул этапта биз серверди өчүрүп, сүрөткө тартабыз:
shutdown -h nowСүрөттөн VDSти ишке киргизгенден кийин, биз скриптти иштетүү менен MySQL серверинин баштапкы орнотуусун аткарабыз:
mysql_secure_installationСырсөздү текшергичти иштетүү:
Would you like to setup VALIDATE PASSWORD component? : yMySQL түпкү колдонуучу сырсөзүн коюу:
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 Андан кийин, орнотууну аяктоо үчүн, биз бара алабыз
Бул даректе биз орнотуу барагын көрөбүз Drupal.
Келгиле, колдоно турган тилди тандайлы. Мисалы: орус. "Сактоо жана улантуу" баскычын чыкылдатыңыз
Орнотуу профилин тандайлы (демо система менен таанышуу үчүн гана колдонулат). Биздин учурда «стандарт» болсун.
Кийинки бетте, маалымат базасына "drupal" сыяктуу ат бериңиз. mysql_secure_installation баштаганда маалымат базасынын колдонуучу атын жана ага берилген сырсөздү көрсөтүңүз. "Сактоо жана улантуу" баскычын чыкылдатыңыз.
Котормолорду орнотуу жана жаңыртуу аяктагыча күтөлү (процесс бир нече мүнөткө созулушу мүмкүн).
Биз сайттын атын көрсөтөбүз, сайттын электрондук почтасын (сайттын эскертмелери жөнөтүлө турган), логинди, сырсөздү жана администратордун аккаунтунун электрондук почтасын орнотобуз DrupalОшондой эле, аймактык жөндөөлөрдө өлкөнү жана убакыт алкагын орнотобуз. Андан кийин, "Сактоо жана улантуу" баскычын чыкылдатуу менен орнотууну аягына чыгарыңыз.
Андан кийин, сиз түзүлгөн администратордун логини жана сырсөзү менен башкаруу панелине өтө аласыз. Drupal.
HTTPS жөндөөсү (милдеттүү эмес)
HTTPS конфигурациялоо үчүн, VDS жарактуу DNS аталышына ээ болушу керек, ичинде көрсөтүңүз
/etc/nginx/nginx.confсервер бөлүмүндө сервердин аталышы (мисалы):
server_name domainname.ru;Nginxти кайра иштетүү:
service nginx restartcertbot баштайлы:
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-apcuNginx жана php-fpmди кайра иштетиңиз:
service nginx restart
service php-fpm restartЭгер сиз орус тилин жана кэш үчүн сунушталган эстутум өлчөмү менен APCu колдонсоңуз, башкаруу панелинен кэш үчүн бөлүнгөн эстутумдун көлөмү сунуш кылынгандан башкача экендиги жөнүндө эскертүүнү көрө аласыз, бирок чындыгында баары туура иштейт, жана туура эмес эскертүү кийинки жаңыртууларда оңдолот.
Же эскертүү көздү оорутса, колдоно аласыз .
Сиз дагы биз үчүн образ жасай ала турганыңызды эскертебиз
Кантип катышуунун үч варианты бар.
Сүрөттү өзүңүз даярдап, балансыңызга 3000 рубль алыңыз
Эгер сиз дароо согушка шашылууга жана өзүңүзгө жетишпеген образды түзүүгө даяр болсоңуз, анда биз сизге ички балансыңызга 3000 рубль кошуп беребиз - аны серверлерге жумшасаңыз болот.
Сүрөтүңүздү кантип түзүү керек:
- Биз менен аккаунт түзүңүз
- Колдоого сүрөттөрдү түзүп, сынап жатканыңызды айтыңыз
- Биз сизге 3000 рубль төлөп, сүрөт тартуу мүмкүнчүлүгүн беребиз
- Таза операциялык тутуму бар виртуалдык серверге заказ кылыңыз
- Бул VPSке программаны орнотуп, аны орнотуңуз
- Программаны жайылтуу үчүн нускамаларды же сценарийди жазыңыз
- Конфигурацияланган сервер үчүн сүрөттү түзүңүз
- "Сервер үлгүсү" ачылуучу тизмеден мурда түзүлгөн сүрөттү тандоо менен жаңы виртуалдык серверге буйрутма бериңиз
- Сервер ийгиликтүү түзүлгөн учурда, 6-кадамда алынган материалдарды техникалык колдоого өткөрүп бериңиз
- Ката болгон учурда, анын себебин колдоо менен текшерип, орнотууну кайталасаңыз болот.
Бизнес ээлери үчүн: программаңызды сунуштаңыз
Эгер сиз VPSде орнотулган жана колдонулган программалык камсыздоону иштеп чыгуучу болсоңуз, анда биз сизди базарга кошо алабыз. Мына ушундай жол менен биз сизге жаңы кардарларды, трафикти жана көрүнүштү тартууга жардам бере алабыз.
Кайсы сүрөттү сагынганыңызды комментарийлерде бизге айтыңыз?
Анан өзүбүз даярдайбыз
Source: www.habr.com
