Ստեղծելով 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

Եկեք տեղադրենք 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

Snapshot-ից VDS-ը գործարկելուց հետո մենք կկատարենք MySQL սերվերի նախնական կարգավորումը՝ գործարկելով սկրիպտը.

mysql_secure_installation

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

Would you like to setup VALIDATE PASSWORD component? : y

Եկեք գաղտնաբառ սահմանենք 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_հասցե
Այս հասցեում մենք կտեսնենք 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), ընտրեք տիրույթի անունները, որոնց համար ցանկանում եք վկայական տալ (Մուտքագրեք բոլորի համար):

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

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 - PHP-ի այլընտրանքային օգտատերերի քեշը, 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. Ստեղծեք պատկեր կազմաձևված սերվերի համար
  8. Պատվիրեք նոր վիրտուալ սերվեր՝ «Սերվերի ձևանմուշ» բացվող ցանկում ընտրելով նախկինում ստեղծված նկարը
  9. Եթե ​​սերվերը հաջողությամբ ստեղծվել է, 6-րդ փուլում ստացված նյութերը փոխանցեք տեխնիկական աջակցությանը
  10. Եթե ​​սխալ կա, կարող եք աջակցությամբ ստուգել պատճառը և կրկնել կարգավորումը

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

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

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

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

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

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

Source: www.habr.com