Ստեղծելով VPS ձևանմուշ Drupal 9-ով Centos 8-ում

Մենք շարունակում ենք ընդլայնել մեր շուկան։ Վերջերս մենք ձեզ պատմեցինք, թե ինչպես ստեղծել է Gitlab-ի պատկեր, և այս շաբաթ Drupal-ը հայտնվեց մեր շուկայում։

Մենք ձեզ կպատմենք, թե ինչու ենք նրան ընտրել և ինչպես է ստեղծվել կերպարը։

Ստեղծելով VPS ձևանմուշ Drupal 9-ով Centos 8-ում

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

Եկեք կիրառենք նոր firewall կանոնները.

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

Եկեք տեղադրենք Drupal-ի աշխատանքի համար անհրաժեշտ 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-ի համար ձևանմուշ ենք պատրաստում, և դրանք կարող են դանդաղ լինել, մենք կավելացնենք 30 վայրկյան mysqld-ի գործարկման ուշացում, հակառակ դեպքում կարող են խնդիրներ առաջանալ սերվերի մեկնարկի հետ համակարգի սկզբնական բեռնման ժամանակ։

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 sessions դիրեկտորիայի սեփականատիրոջը՝ դարձնելով այն 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

Եկեք տեղադրենք certbot-ը տեղադրելու համար անհրաժեշտ wget-ը։

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

Եկեք միացնենք գաղտնաբառի վավերացուցիչը.

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_հասցե
Այս հասցեում մենք կտեսնենք Drupal-ի տեղադրման էջ։

Եկեք ընտրենք օգտագործելու լեզուն։ Օրինակ՝ ռուսերեն։ Սեղմեք «Պահպանել և շարունակել»

Եկեք ընտրենք տեղադրման պրոֆիլը (ցուցադրությունը օգտագործվում է բացառապես համակարգին ծանոթանալու համար): Մեր դեպքում, թող այն լինի «ստանդարտ»։

Հաջորդ էջում մենք տվյալների բազային կտանք անուն, օրինակ՝ «drupal»։ Եկեք նշենք տվյալների բազայի root օգտատիրոջ անունը և դրա համար նշված գաղտնաբառը mysql_secure_installation-ը գործարկելիս։ Սեղմեք «Պահպանել և շարունակել»:

Սպասեք մինչև տեղադրումն ավարտվի և թարգմանությունները թարմացվեն (գործընթացը կարող է տևել մի քանի րոպե):

Մենք կնշենք կայքի անունը, կսահմանենք կայքի էլ. փոստը (որից կուղարկվեն կայքի ծանուցումները), Drupal-ի ադմինիստրատորի հաշվի մուտքը, գաղտնաբառը և էլ. փոստը։ Մենք նաև կսահմանենք երկիրը և ժամային գոտին տարածաշրջանային կարգավորումներում։ Եվ մենք կավարտենք տեղադրումը՝ սեղմելով «Պահպանել և շարունակել» կոճակը։

Դրանից հետո դուք կարող եք մուտք գործել կառավարման վահանակ՝ օգտագործելով ստեղծված Drupal ադմինիստրատորի մուտքանունը և գաղտնաբառը:

HTTPS-ի կարգավորում (ըստ ցանկության)

HTTPS-ը կարգավորելու համար VDS-ը պետք է ունենա վավեր DNS անուն, նշեք

/etc/nginx/nginx.conf

սերվերի բաժնում սերվերի անունը (օրինակ՝):

server_name  domainname.ru;

Եկեք վերագործարկենք nginx-ը։

service nginx restart

Եկեք գործարկենք certbot-ը։

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

Մուտքագրեք ձեր էլ. փոստի հասցեն, համաձայնեք ծառայության պայմաններին (A), բաժանորդագրվեք փոստային ցուցակին (ըստ ցանկության) (N), ընտրեք այն դոմեյն անունները, որոնց համար ցանկանում եք տրամադրել վկայական (Enter for all):

Եթե ​​ամեն ինչ անցավ առանց սխալների, մենք կտեսնենք հաղորդագրություն վկայականների հաջող տրամադրման և սերվերի կարգավորման մասին.

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 վերնագրի հարձակումները կանխելու համար (երբ ձեր կայքը կարծում է, որ դա ուրիշի կողմից է):

Դա անելու համար դուք պետք է նշեք կայքի վստահելի դոմեյնային անունները կարգավորումների ֆայլում։

Ֆայլում

/usr/share/nginx/html/sites/default/settings.php Եկեք մեկնաբանությունը հանենք կամ ավելացնենք կարգավորումներ՝ կայքի ներկայիս անունների ձևանմուշներով, օրինակ՝

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

PHP APCu-ի տեղադրում (ԽՈՐՀՈՒՐԴ Է ՏԱԼԻՍ)

Drupal-ը աջակցում է APCu-ին՝ 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 ռուբլի. այն կարող եք ծախսել սերվերների վրա։

Ինչպես ստեղծել ձեր սեփական պատկերը.

  1. Ստեղծեք հաշիվ մեզ մոտ՝ Առցանց
  2. Տեղեկացրեք աջակցության ծառայությանը, որ դուք պատրաստվում եք ստեղծել և փորձարկել պատկերներ։
  3. Մենք ձեզ կփոխանցենք 3000 ռուբլի և կտրամադրենք լուսանկարներ ստեղծելու հնարավորություն։
  4. Պատվիրեք վիրտուալ սերվեր մաքուր օպերացիոն համակարգով
  5. Տեղադրեք ծրագիրը այս VPS-ի վրա և կարգավորեք այն
  6. Ստեղծեք հրահանգներ կամ սկրիպտ ծրագրակազմի տեղակայման համար
  7. Ստեղծեք snapshot կարգավորված սերվերի համար
  8. Պատվիրեք նոր վիրտուալ սերվեր՝ ընտրելով նախկինում ստեղծված լուսանկարը «Սերվերի ձևանմուշ» իջնող ցանկից։
  9. Եթե ​​սերվերը հաջողությամբ ստեղծվել է, խնդրում ենք 6-րդ քայլում ստացված նյութերը ներկայացնել տեխնիկական աջակցությանը։
  10. Սխալի դեպքում կարող եք ստուգել պատճառը աջակցության ծառայության հետ և կրկնել կարգավորումը։

Բիզնեսի սեփականատերերի համար՝ առաջարկեք ձեր ծրագրակազմը

Եթե ​​դուք VPS-ի վրա տեղակայվող և օգտագործվող ծրագրային ապահովման մշակող եք, մենք կարող ենք ձեզ ներառել շուկայում։ Այսպիսով, մենք կարող ենք օգնել ձեզ ներգրավել նոր հաճախորդներ, այցելուներ և ճանաչելիություն։ Գրեք մեզ

Մեկնաբանություններում մեզ ասեք, թե որ պատկերն եք բաց թողել։

Եվ մենք այն ինքներս կպատրաստենք։

Ստեղծելով VPS ձևանմուշ Drupal 9-ով Centos 8-ում

Ստեղծելով VPS ձևանմուշ Drupal 9-ով Centos 8-ում

Source: www.habr.com