CentOS 8 վրայ վեբ սերվեր php7, node.js և redis-ով

Ներածություն

Երկու օր առաջ հրապարակվեց CentOS օպերացիոն համակարգի նոր 버сийը, մասնավորապես, CentOS 8։ Իսկ առայժմ ցանցում բավական քիչ հոդվածներ կան, թե ինչպես անել այստեղ ինչ-որ բան, ուստի որոշեցի լրացնել այս բացը։ Ի դեպ, ես կպատմեմ ոչ միայն այն մասին, թե ինչպես տեղադրել այս երկու ծրագրերը, այլև այն մասին, թե ինչպես ես ընդհանուր առմամբ տեսնում եմ Linux-ի տեղադրումը վիրտուալ միջավայրում ժամանակակից աշխարհում, ներառյալ տախտակների բաժանումը և այլն։

Բայց սկզբում ուզում եմ կարճ խոսել այն մասին, թե ինչու արժե անցնել այս տարբերակին բոլորից։ Դա ունի երկու պատճառ․

  1. php7! Նախկին տարբերակում CentOS-ում տեղադրվում էր «אַפּոստոլիկ» php5.4…

    Լավ, եթե քիչ լուրջ ենք խոսում, ապա շատ փաթեթներ անցել են մի քանի տարբերակներով։ Մենք (redhat-անման ОС-ի երկրպագուները) վերջապես մտանք, եթե ոչ ապագան, ապա пон至少 ներկայիս: Եվ Ubuntu-ի طرفի կողմնակիցները այլևս չեն ծաղրի մեզ ու մատով չեն ցույց տա, լավ… пон至少 մի քանի ժամանակ ;).

  2. yum-ից dnf-ի անցում։ Առաջին տարբերությունը այն է, որ այժմ պաշտոնապես աջակցվում է միանգամից մի քանի տարբերակներով աշխատելը։ Այժմ որը այս վեցերորդն է, ինձ դեռ չի եղել, բայց անհավատալի հնչում է.

Վիրտուալ մեքենայի ստեղծում

Հիպերզորները կարող են տարբեր լինել, և իմ նպատակն է այցելել ընթերցողին կոնկրետին, ես կպատմեմ ընդհանուր սկզբունքների մասին։

Հիշողություն

Առաջին… CentOS համակարգի տեղադրելու համար սկսած 7-ից, իսկ ինձ կարծես որ 6-ում էլ так было («բայց դա չի ճշգրիտ»), անհրաժեշտ է ամենաքիչ 2 ԳԲ օժանդակ հիշողություն։ Ուստի խորհուրդ եմ տալիս սկզբում այդքան տրամադրել։

Բայց եթե ինչ-որ բան լինի, տեղադրելուց հետո հիշողության ծավալը կարելի է նվազեցնել։ 1 ԳԲ-ի անկեղծ համակարգը լավ գործում է, ես проверено եմ։

Դիսք

Լավ տեղադրելու համար անհրաժեշտ է ստեղծել 20-30 ԳԲ ծավալով վիրտուալ սկավառակ։ Սա համակարգի համար բավական է։ Իսկ երկրորդ սկավառակը տվյալների համար։ Այն կարելի է ավելացնել թե վիրտուալ մեքենայի ստեղծման փուլում, և թե ճակատից։ Ես սովորաբար ավելացնում եմ հետո։

Համագործակցություն

Մեկ միջուկի վրա այն պարզ համակարգը չի тормозит։ Եվ քանի որ ռեսուրսները ազատ զարտում են, տրամադրել ավելին տեղադրման փուլում իմաստ չունի (եթե դուք իդեալ իմանում եք պահանջները և ժանգոտ եք կրկին գնալ կոֆիգուրատորի)։

Իսկ մնացածը սովորաբար կարելի է թողնել ըստ մնում, ըստ սովորույթների։

Իսկ ինքը տեղադրումն է

Այժմ… Ներդնում ենք տեղադրողը… Ինձ համար նոր եմ միայն նման ծառայությունները միայն վիրտուալ մեքենաներով, այնպես որ այնտեղ բաշխագրերի միջազգային նկարագրությունն չեմ բացատրելու — պարզապես մոնտաժում եմ ISO-ն որպես CD-դիսկ իմ սիրելի հիպերզորում, բեռնվեք և գնացեք։

Բազային տեղադրումը անցնում է բավականին սովորական, ես միայն մի քանի պահերին կդադարվեմ։

Աղթանշանի ընտրություն

Յանդեքսի երրորդ տարբերակի թողարկումից ի վեր, այն օրեր է, ինչ այն արդեն ընկած է։ Այսինքն, այն ժամանակ առ ժամանակ վեր բարձրանում է, բայց հետո կրկին սկսում է ցույց տալ սխալ։ Ես համոզուած եմ, որ պատճառը ծառայող բարձր ծանրաբեռնվածությունն է։ Դրա համար անձամբ իմ համար աղբյուրին հղում ունենալու համար ստիպված եղա սովորական հասցեն մտնելու փոխարեն գնալ : DEX-ի կարևորագույն ցուցանիշ:, ընտրել այնտեղ այն հայելուն, որն ինձ դուր է գալիս և ձեռքով մուտքագրել հասցեն տեղադրողի լուսանցում։ Կարևոր է հիշել, որ անհրաժեշտ է նշել այն թղթի ճանապարհը, որտեղ գտնվում է repodata. Օրինակ, mirror.corbina.net/pub/Linux/centos/8/BaseOS/x86_64/os.

Տարածքի բաժանում

Այս հարցը, իմ կարծիքով, ավելի հոգևոր հարց է։ Յուրաքանչյուր ադմին ունի իր դիրքորոշումն այս հարցում։ Բայց ես, այնուամենայնիվ, կկիսեմ իմ կարծիքը այս հարցի վերաբերյալ։

Այո, հիմքում կարելի է ամբողջ տեղը հատկացնել արմատին, և այն կաշխատի, առավելագույնը բավական լավ։ Ինչու՞ դեռ պատրաստել տարբեր բաժիններ։ Ես կարծում եմ, որ հիմնական պատճառները 2 են. չափումները և փոխադրելիությունը։

Օրինակ, եթե ինչ-որ բան լավ չի ընթանում և հիմնական բաժնում տվյալների շուրջ սխալներ են առաջացել, ցանկություն կա, որպեսզի կարողանանք համակարգը վերարտադրել և հետագա գործողություններ կատարել։ Դրա համար ես անձամբ հատկացնում եմ առանձին բաժին `/boot`։ Այստեղ գտնվում է կերիս և բեռնորդը։ Ը généralement, 500 մեգաբայթը բավարար է, բայց հազվադեպ դեպքերում դա կարող է ավելի շատ պահանջվել, ու հաշվի առնելով, որ մենք արդեն սովորել ենք չափել տարածքը տերաբայթներով, ես հաստատում եմ 2 ԳԲ այս բաժնի համար։ Եվ այստեղ կարևոր է, որ այն չի կարելի անել lvm:

Հաջորդը գնում է համակարգի արմատը։ Նորմալ տեղադրման համար ինձ նման ավելի քան 4 ԳԲ չի պահանջվել միայն համակարգի համար, բայց պլանավորած գործողությունների ժամանակ ես հաճախ օգտագործում եմ `/tmp` կատալոգը դիստրիբուցիաների պատրաստման համար, և առանձնացված բաժին հիմնելը իմ կարծիքով չէ ավելորդ — ժամանակակից համակարգերում այն ​​ինքնաբերաբար մաքրվում է, ուստի չի լցվում։ Այնպես որ, արմատին ես հատկացնում 8 ԳԲ։

Swap... Ընդհանուր առմամբ, նրանից շատ քիչ գործնական օգուտ կա։ Եթե ձեր սերվերում սկսեցին օգտագործել swaп-ը, այսօր իրական աշխարհում դա միայն նշանակում է, որ սերվերին անհրաժեշտ է ավելացնել ավելի շատ օպերատիվ հիշողություն։ Այլապես, արագության հետ կապված խնդիրները երաշխավորված են (կամ մի ծրագրի «հասում է» հիշողությունը)։ Հետևաբար, սա բաժինը միայն շինարարության համար է անհրաժեշտ։ Ահա թե ինչու 2 ԳԲ-ը գերազանց թիվ է։ Այո, անկախ նրանից, թե որքան հիշողություն կա սերվերում։ Այո, ես կարդացել եմ բոլոր այն հոդվածները, որտեղ խոսվում է հիշողության ծավալը և swap-ի ծավալը… ԻՄԽՕ, նրանք հին են։ 10 տարվա փորձից ինձ դա երբեք չի պետք եղել։ 15 տարի առաջ ես դրանք կիրառում էի, այո։

Անհրաժեշտ է արդյոք /home-ը առանձնացնել առանձին բաժին՝ ԻՄԽՕ այդ հարցը յուրաքանչյուրը կարող է ինքնուրույն որոշել։ Եթե ոմանք ակտիվորեն կօգտագործեն այդ կատալոգը սերվերում, ավելի լավ է առանձնացնել։ Եթե ոչ ոք, ապա աննշան է։

Հետո, /var։ Իմ կարծիքով սա unbedingt առանձնացնել պետք է։ Իրականում, կարելի է սահմանափակվել 4 ԳԲ թվով, իսկ հետո ինչպես կլինի։ Եվ այո, երբ ասում եմ «ինչպես կլինի», ես նկատի ունեմ, որ

  1. Առաջին, միշտ կարելի է միացնել այլ սկավառակ /var ենթադրում (ինչը ես ավելի ուշ ցույց կտամ օրինակով)
  2. Երկրորդ, իսկ մեզ մոտ lvm ‒ միշտ կարելի է ավելացնել։ Իսկ ավելացնել սովորաբար պետք է, երբ չափազանց շատ գրանցումներ սկսում են туда․․․ բայց ես երբեք չեմ կարողանում կանխատեսել այդ թվերը, այնպես որ սկսում եմ 2 ԳԲ-ից, իսկ հետո տեսնում եմ։

Չօրակարգված տարածությունը կմնա ազատ խմբի տոմսերում, դա կարելի է օգտագործել հետո։

CEPH

Բոլորը արևներ, բացի /boot-ի համար, հաստատ անհրաժեշտ է անել LVM-ում։ Խնդիր չունի, այդ թվում՝ swap։ Այո, swap-ի մասին բոլոր խորհուրդները պետք է լինեն սկավառակի սկիզբը, իսկ LVM-ի դեպքում դրա տեղը սկզբունքորեն չի կարելի որոշել։ Բայց ինչպես արդեն նշել եմ, ձեր համակարգը չի պարտավոր swap-ի համար ընդհանրապես չօգտվել։ Ուստի, կարևոր չէ, թե որտեղ է այն գտնվում։ Բայց չէ՞ որ մենք 95 թվականին չենք ապրում, անկեղծ ասած!

Հետո, LVM-ում կա մի քանի հիմնական մարմիններ, որոնց հետ ես պետք է սովորեմ ապրել՝

  • ֆիզիկական տոմս
  • տոմսերի խումբ
  • լոգիկական տոմս

Ֆիզիկական տոմսերը միանում են խմբերի, մինչդեռ յուրաքանչյուր ֆիզիկական տոմս կարող է լինել միայն մեկ խմբում, իսկ группа կարող է լինել միանգամից մի քանի ֆիզիկական տոմսերում։
Մինչդեռ լոգիկական տոմսերը գտնվում են յուրաքանչյուր խմբում։

Բայց․․․ Մենք, բլին, կրկին 21-րդ դարում ենք։ Եվ վիրտուալ սերվերներ են։ Անթույլատրելի է կիրառել նույն մեխանիզմները, որոնք կիրառվել են ֆիզիկականների նկատմամբ։ Եվ ահա, վիրտուալներին շատ կարևոր է ունենալ տվյալները համակարգից առանձին! Սա շատ կարևոր է հատկապես տվյալների արագ միացման համար այլ վիրտուալ մեքենայի (օրինակ նոր ОС-ի անցման դեպքում) և ընդհանուր օգտակար առավելությունների (հատուկ բեքափ, բաժանված համակարգերի միջոցով гипервизор-ի օրինակով) համար։ Ուստի, մեկ volume group-ը օգտագործվում է համակարգի համար, իսկ անպայման մեկ ուրիշը օգտագործվում է տվյալների համար։ Դա տրամաբանական բաժանումը շատ օգնում է կյանքում!

Եթե դուք վիրտուալ մեքենա ստեղծելիս ստեղծել եք միայն մեկ վիրտուալ կոշտ սկավառակ, ապա այս կոնֆիգուրացիան վերջանում է այստեղ։ Իսկ եթե երկուսն են, ապա պարզապես մինչ երկրորդի մասին դեռ չբաժանեք։

Սկսենք տեղադրումը։

Պոստ տեղադրում

Այժմ վերջապես բեռնվեց նոր տեղադրված համակարգ։ Առաջին բանը, որը պետք է ստուգել ՝ ինտերնետ կա թե ոչ։

ping ya.ru

Պատասխան կա՞ ‒ Դ отлично, սեղմեք Ctrl-C։
Եթե ոչ ‒ գնացեք կարգավորելու ցանցը, առանց этого կյանք չկա, բայց իմ հոդվածը այդ մասին չէ։

Այժմ եթե մենք դեռ չենք մտնում ռութ, մտնում ենք ռութի տակ, օրինակի համար գրելու այսպիսին փոքր նշումներով sudo-ի ստվարագուն թիվը անձամբ ինձ համար հոգնածություն է առաջացնում (և թող ինձ ներեն պարանոյիկ ադմինները):

sudo -i

Այժմ առաջին հերթին տպում ենք

dnf -y update

Եվ եթե դուք կարդում եք այս հոդվածը 2019 թվականին, ամենայն հավանականությամբ ոչինչ չի տեղի ունենա, բայց փորձելը արժե։

Այժմ կազմավորենք մնացած սկավառակը

فرض کنیم بخش سیستم ما xvda بود، بنابراین دیسک داده‌ها xvdb خواهد بود. اوکی.

بیشتر توصیه‌ها با عبارت «fdisk را راه‌اندازی کنید و یک بخش ایجاد کنید...» آغاز می‌شود.

بنابراین، این غلط است.!

یک بار دیگر تکرار می‌کنم، چرا که این مهم است! در این مورد، برای کار با LVM، که یک دیسک مجازی کامل را اشغال می‌کند، ایجاد بخش بر روی آن مضر است! هر واژه در این جمله مهم است. اگر بدون LVM کار می‌کنیم — باید. اگر روی دیسک سیستم و داده‌ها داریم — باید. اگر به هر دلیلی بخواهیم نیمی از دیسک را خالی بگذاریم — هم باید. اما معمولاً تمام این فرض‌ها صرفاً نظری هستند. زیرا اگر بخواهیم فضایی به بخش موجود اضافه کنیم، این کار به راحت‌ترین شکل با چنین پیکربندی انجام می‌شود. و راحتی در مدیریت به قدری بر سایر مسائل غلبه می‌کند که ما عمدی به سمت این پیکربندی می‌رویم.

و راحتی در این است که اگر بخواهید بخش داده‌ها را گسترش دهید، به سادگی فضای بیشتری به بخش مجازی اضافه می‌کنید، سپس گروه را با استفاده از vgextend گسترش می‌دهید و تمام! در موارد نادر ممکن است به چیز دیگری نیاز باشد، اما حداقل نیازی نیست بخش منطقی را در ابتدا گسترش دهید که از این لحاظ خوشایند است. زیرا برای گسترش این بخش خاص توصیه می‌شود ابتدا آن را حذف کنید و سپس یک جدید روی آن بسازید... که چندان خوشایند به نظر نمی‌رسد و نمی‌توان آن را به‌صورت زنده انجام داد، اما گسترش بر اساس سناریویی که من اشاره کردم می‌تواند «به‌صورت زنده» انجام شود حتی بدون اینکه بخش را از حالت اجرایی خارج کنید.

در نتیجه، ابتدا یک پیکربندی فیزیکی ایجاد می‌کنیم، سپس یک گروه از پیکربندی‌ها که شامل آن است و سپس بخشی برای سرورمان:

pvcreate /dev/xvdb
vgcreate data /dev/xvdb
lvcreate -n www -L40G data
mke2fs -t ext4 /dev/mapper/data-www

در اینجا می‌توانید به جای حرف بزرگ «L» (و اندازه به GB) از حرف کوچک استفاده کنید و در این صورت به جای اندازه مطلق، اندازه نسبی را مشخص کنید، برای مثال، برای استفاده از نیمی از فضای خالی موجود در گروه پیکربندی، باید «-l +50%FREE» را مشخص کنید.

و آخرین فرمان به فرمت‌بندی بخش در سیستم فایل ext4 مربوط می‌شود (که در تجربه من بیشترین ثبات را نشان می‌دهد در صورتی که همه چیز خراب شود، بنابراین من این را ترجیح می‌دهم).

حالا بخش را در مکان مورد نظر مونت می‌کنیم. برای این کار، خط صحیحی را در /etc/fstab اضافه می‌کنیم:

/dev/mapper/data-www    /var/www                ext4    defaults        1 2

و وارد می‌کنیم

mount /var/www

اگر خطایی رخ داد — زنگ خطر را به صدا درآورید! زیرا این به معنای وجود خطا در /etc/fstab است. و اینکه در صورت راه‌اندازی مجدد بعدی ما با مشکلات بسیار بزرگی روبرو خواهیم بود. سیستم حتی ممکن است به‌طور کلی بارگذاری نشود که برای خدمات ابری غالباً بسیار ناامیدکننده است. بنابراین باید یا فوراً آخرین خط نوشته شده را اصلاح کنیم، یا آن را به‌طور کامل حذف کنیم! به همین دلیل بود که ما نتوانستیم دستور مونت را به‌صورت دستی بنویسیم — در این صورت چنین فرصت فوق‌العاده‌ای برای بررسی پیکربندی مطابق این زمان را نمی‌داشتیم.

Սկսենք հենց ամենը, ինչ ուզում էինք, և բացենք պորտերը վեբի համար:

dnf groupinstall "Development Tools"
dnf -y install httpd @nodejs @redis php
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent

Պատվերով կարելի է նաև DB տեղադրել, բայց անձամբ ես փորձում եմ պահել այն առանձին վեբ սերվերից: Չնայած, մոտակա պահելը ավելի արագ է: վիրտուալ ցանցային ադապտերների արագությունը սովորաբար շուրջ մեկ գիգաբիտ է, իսկ նույն մեքենայի վրա աշխատելիս դիմումները տեղի են ունենում գրեթե ակնթարթորեն: Բայց ի տարբերություն, ավելի քիչ անվտանգ է: Այստեղ յուրաքանչյուրը պետք է հաշվի առնի, ինչը ավելի կարևոր է:

Հիմա ավելացնում ենք պարամետր կարգավորման ֆայլում (նոր ստեղծում ենք, ժամանակակից գաղափարը CentOS-ի այդպիսին է)

echo "vm.overcommit_memory = 1" > /etc/sysctl.d/98-sysctl.conf

Փոփոխեք սերվերը:
Մեկ մեկնաբանությունում ինձ չարաճճիացան SeLinux-ը անջատելու վերաբերյալ, այդ իսկ պատճառով ես ուղղում եմ ինձ և գրում, որ հետո չպետք է մոռանալ կարգավորել SeLinux-ը:
Իհարկե, շահույթ! 🙂

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster