د هیسټیا سی پی سره د اپاچی 2 ډیری وختونه ټکرونه؟ د مانیټ اتوماتیک څارنې او ستونزو حل کولو لارښود (د بشپړ ترتیب سره)

د هیسټیا سی پی چاپیریال کې د اپاچی 2 ډیری وختونه ټکر کیږي یا د مانیټ اتوماتیک بیا پیل ناکامي؟ دا مقاله د مونیټ سره د اپاچی 2 څارنه کولو پرمهال د عامو ستونزو څخه مخنیوي لپاره عملي لارښود چمتو کوي، د PID لارې غلط تنظیم او د اجازې بندولو په څیر عام مسلو ژور تحلیل کوي، او د تولید درجې مونیټ اتوماتیک ترتیب فایلونه وړاندې کوي. اوس د لوړ شتون سرور ساتنې تخنیکونو ماسټر کړئ او د ناکامیو څخه د دوهمې کچې اتوماتیک رغونه ترلاسه کړئ!

هغه ستونزې چې ما د اپاچی 2 څارنې لپاره د مونیټ کارولو پرمهال ورسره مخ شوم

تېره جمعه، سرور ماته د شپې په نیمایي کې د مونیټ خبرتیا راکړه.

ما په حیرانتیا سره پینل ته وکتل، او د apache2 حالت په کالم کې، یو سور وخت پای و.

د هیسټیا سی پی سره د اپاچی 2 ډیری وختونه ټکرونه؟ د مانیټ اتوماتیک څارنې او ستونزو حل کولو لارښود (د بشپړ ترتیب سره)

ما د یو څه وخت لپاره په دې اړه فکر وکړ. ما یوازې د ورځې په جریان کې سرور ته د مونیټ څارنه اضافه کړه، او ما د آنلاین ټیوټوریل څخه ترتیب کاپي او پیسټ کړ. کومه ستونزه باید نه وي، سمه ده؟

بله سهار، بیا وخت پای ته ورسېد. د دریم ځل وروسته، مانیټر په ساده ډول پریښود، او پینل "څارل شوی نه دی" ښودلی.

زه...

زه اعتراف کوم، ما په لومړي سر کې دا جدي نه و اخیستی. د Apache2 څارنه؟ تاسو کولی شئ په انټرنیټ کې ډیری ټیمپلیټ ترتیبات ومومئ، یوازې کاپي او پیسټ کړئ. مګر د پیسټ کولو پروسې واقعیا ما غوسه کړ.

د هیسټیا سی پی د ډیفالټ معمارۍ او مونیټ بندرونو ترمنځ د شخړې اصلي لامل

اجازه راکړئ لومړی تاسو ته هغه ترتیب وښیم چې ما ته یې دومره ستونزې رامینځته کړې، نو تاسو کولی شئ وګورئ چې دا په سمه توګه د هغه نسخې سره ورته دی چې تاسو یې لیدلی دی.

check process apache2 with pidfile /var/run/apache2/apache2.pid
    start program = "/usr/sbin/service apache2 start"
    stop program  = "/usr/sbin/service apache2 stop"
    if failed host 127.0.0.1 port 80 protocol http then restart
    if 5 restarts within 5 cycles then timeout

دا ښه ښکاري، سمه ده؟ دا پورټ ۸۰ چک کوي، او که خراب شي، بیا پیل کیږي. که چیرې دا د 5 بیا پیل وروسته هم خراب شي، نو وخت یې پای ته رسیږي.

ستونزه دا ده چې ستاسو اپاچی 2 حتی په پورټ 80 کې هم نه چلیږي.

دا د هیسټیا سي پي یوه تېروتنه ده، او د ډېرو خلکو د رالوېدو اصلي لامل دی. د هیسټیا سي پي ډیفالټ جوړښت د نګینکس + اپاچی۲ برعکس پراکسي ده، چې نګینکس په مخ کې ۸۰ او ۴۴۳ پورټونه لري، او اپاچی۲ په شا کې په محلي پورټ ۸۰۸۱ کې روان دی.

که تاسو له مونیټ څخه وغواړئ چې په پورټ ۸۰ کې د اپاچی۲ ژوندۍ والی وڅېړي، نو دا د مکډونالډ ته د KFC موندلو په څیر دی. سرور تاسو ته په خالي سترګو ګوري، او تاسو دواړه یو بل ته ګورئ. په پای کې، مونیټ پریکړه کوي چې تاسو ښکته یاست او په ویره سره بیا پیل پیل کوي.

د بیا چالانولو وروسته، پورټ لاهم ۸۰۸۱ دی. بیا مونیټ هڅه کوي چې پورټ ۸۰ وپلټي، کوم چې هم ناکامیږي، نو بیا بیا پیل کیږي. دا دوره تر هغه وخته پورې تکرار کیږي تر څو چې مونیټ پریکړه وکړي چې دا د ترمیم څخه بهر دی او وخت پای ته رسیږي.

کله چې ما لومړی ځل له دې سره مخ شوم، زه په ریښتیا حیران شوم. له لسو څخه نهه ټیوټوریلونه مې آنلاین وموندل چې پورټ ۸۰ یې کارولی و. که تاسو یې تعقیب کړی وي، ستونزه ستاسو سره نه وه، بلکې د معلوماتو سرچینې سره وه.

د هیسټیا سی پی سره د اپاچی 2 ډیری وختونه ټکرونه؟ د مانیټ اتوماتیک څارنې او ستونزو حل کولو لارښود (د بشپړ ترتیب سره)

د Apache2 PID فایل فاسد شوی و چې مونیټ یې په غلطۍ سره پروسه د نه شتون په توګه وپیژندله.

د پورټ له ۸۰ څخه ۸۰۸۱ ته بدلولو وروسته، مونیټ باید په تیوریکي توګه وکولی شي دا کشف کړي، سمه ده؟

خو، په حقیقت کې، دا لاهم کله ناکله د "اعدام ناکام " راپور ورکوي.

د اوږدې مودې لپاره له مبارزې وروسته، ما بالاخره وموندله چې دلیل یې ساده و: د PID فایل فاسد شوی و.

فکر وکړئ، مونیټ په لیونتوب سره اپاچی 2 بیا پیل کاوه، هر ځل یې په زور سره وژل او بیا پیل کول، څو ځله یې مخ په وړاندې تلل. د دې پروسې په جریان کې، د /var/run/apache2/apache2.pid فایل ممکن 0 بایټ شي.

په بل عبارت، فایل لاهم هلته دی، مګر خالي دی.

کله چې مونیټ دا فایل لولي، نو هیڅ شی نه مومي. دا ستاسو اپاچی 2 نه پیژني، حتی که ستاسو اپاچی 2 په شالید کې په بشپړ ډول ښه روان وي؛ مونیټ فکر نه کوي چې دا پروسه شتون لري.

کله چې ما دا ولیدل، زه د یوې شیبې لپاره بې غږه شوم.

دا یو بند حالت دی. مانیټ د اپاچي ۲ نمونې په کشفولو کې پاتې راځي، اپاچي ۲ بیا پیلوي، د بیا پیلولو پروسې په جریان کې د PID فایل فاسد کوي، بل کشف ناکاموي، او بیا پیل کوي. دا دوره تر هغه وخته پورې دوام کوي تر څو چې یو وخت پای ته ورسیږي.

په هیسټیا سی پی چاپیریال کې د اپاچی 2 څارنې لپاره د ستونزو حل او ترمیم مرحلې

په ریښتیا سره، د پلټنې پروسه پیچلې نه ده، مګر تاسو اړتیا لرئ چې پوه شئ چې کوم لوري ته پلټنه وکړئ.

لومړی ګام دا دی چې معلومه کړئ چې ستاسو Apache2 په کوم پورټ کې اوري. په ساده ډول په ټرمینل کې یو قومانده ولیکئ.

netstat -tulpn | grep apache2

په بدیل سره، تاسو کولی شئ د `ss` قومانده وکاروئ؛ اغیزه ورته ده.

ss -tulpn | grep apache2

تاسو به دې ته ورته محصول وګورئ.

tcp  0  0 127.0.0.1:8081       0.0.0.0:*  LISTEN  2942372/apache2

دا تایید شوې ده چې ۸۰۸۱ ده، نه ۸۰. دا د ستونزې ریښه ده.

دوهم ګام د فاسد PID فایل ترمیم کول دي. دا خورا ساده دی.

monit unmonitor apache2
systemctl restart apache2
cat /var/run/apache2/apache2.pid

لومړی، د مونیټ څارنه ودروئ ترڅو د شیانو د سمولو پرمهال د مداخلې مخه ونیسي. بیا، Apache2 بیا پیل کړئ ترڅو دا د پاک PID بیا لیکلو ته اجازه ورکړي. په پای کې، د فایل مینځپانګې چک کولو لپاره `cat` وکاروئ؛ دا باید د شمیرو یوه تار ولري، نه خالي تار.

کله چې دا ګام بشپړ شي، ستونزه په بنسټیز ډول حل کیږي.

د هیسټیا سی پی سره د اپاچی 2 ډیری وختونه ټکرونه؟ د مانیټ اتوماتیک څارنې او ستونزو حل کولو لارښود (د بشپړ ترتیب سره)

د مونیټ دودیز تطبیقي او تیریدونکي محافظتي تشکیلاتو مقایسوي تحلیل

د Monit سره د Apache2 تنظیم کولو په اړه آنلاین ښوونې عموما په دوه کټګوریو کې راځي.

یو ډول یې "دودیز تطابق ډول" دی، کوم چې د "خدمت" قوماندې څخه کار اخلي ترڅو خدمات اداره کړي او محلي پورټونه وګوري پرته لدې چې ډیر پیچلي محدودیتونه اضافه کړي. دا ترتیب په HestiaCP کې په ساده ډول د پورټ بدلولو سره کارول کیدی شي، او دا نسبتا مستحکم دی.

بله طریقه د "تیري کوونکې محافظت" طریقه ده، کوم چې د خدماتو اداره کولو لپاره systemctl کاروي، د ماشومانو پروسې محدودیتونه اضافه کوي، او د کشف کولو سخت منطق کاروي. دا ښه ښکاري، مګر دا یو وژونکی نیمګړتیا لري: د کارول شوي بند قومانده `killall -9` ده.

د `killall-9` معنی څه ده؟ دا پدې مانا ده چې په زور سره وسیله ووژنئ پرته له دې چې دا څه کوي. دا د وحشي ځواک عملیات کولی شي په اسانۍ سره فاسد PID فایلونه پریږدي، کوم چې هغه ستونزه ده چې ما یې یادونه وکړه.

زما شخصي تجربه دا ده چې په یوه بریدګر ترتیب کې د ماشومانو پروسو شمیر محدودول واقعیا ګټور دي. کله چې ستاسو Apache2 د CC برید لخوا ډوب شي، د ماشومانو پروسو شمیر محدودول کولی شي د سرور د حافظې له ختمیدو څخه مخنیوی وکړي. په هرصورت، د `killall -9` طریقه په ریښتیا سره د کارولو وړ نه ده.

نو په پای کې ما جوړجاړی وکړ او د دواړو تشکیلاتو ګټې مې سره یوځای کړې.

د هیسټیا سی پی اپاچی 2 مانیټ غوره عمل ترتیب

د /etc/monit/conf.d/apache2 فایل د لاندې منځپانګې سره بدل کړئ.

check process apache2 with pidfile /var/run/apache2/apache2.pid
    start program = "/bin/systemctl start apache2"
    stop program  = "/bin/systemctl stop apache2"
    if children > 120 for 2 cycles then restart
    if failed host 127.0.0.1 port 8081 protocol http for 2 cycles then restart
    if 5 restarts within 10 cycles then timeout

اجازه راکړئ چې د دې څو کرښو ترتیب تر شا منطق په لنډه توګه تشریح کړم.

د هیسټیا سی پی د ریورس پراکسي جوړښت سره په سمه توګه د سمون لپاره پورټ ۸۰۸۱ ولیکئ؛ په احمقانه ډول د پورټ ۸۰ لیکل ودروئ.

د PID فایل د بندولو لپاره د `killall -9` پر ځای د `systemctl stop` کمانډ وکاروئ، ترڅو یې فاسد نه شي.

د ماشومانو د پروسې حد اضافه شوی دی: که چیرې د ماشومانو شمیر له ۱۲۰ څخه ډیر شي، نو پروسه به د CC بریدونو مخنیوي لپاره د دوو پرله پسې دورو وروسته بیا پیل شي، مګر دا ډیره تیریدونکې نه ده.

د ناکامیو د کشفولو منطق د "دوه دورو لپاره" طریقې کارولو لپاره تعدیل شوی، پدې معنی چې بیا پیل یوازې د دوه پرله پسې ناکامیو وروسته پیل کیږي، چې غلط مثبت کموي. پخوانی ترتیب، چې یوازې د یوې کشف وروسته بیا پیل شو، په ریښتیا سره یو څه ډیر حساس و.

د وروستي وخت پای حد د 10 دورو په اوږدو کې 5 بیا پیلونو ته آرام شوی، چې د غلطۍ زغم کافي پاتې کیږي.

HestiaCP د څارنې څارنهد ترتیب ستونزې حل لنډیز او د تجربې شریکول

د تشکیلاتو د بدلونونو وروسته، ما apache2 وڅارله، او پینل په پای کې شنه "OK" شاخص وښود.

په هغه وخت کې خپل احساسات څنګه بیان کړم؟ دا داسې وه لکه دوه ورځې چې د یوې ناروغۍ سره په مبارزه کې تیرې کړم، یوازې د لامل موندلو لپاره د ترتیب یوه کرښه وه چې غلطه وه. دا دواړه مایوسه کونکي او هم خندا وړ وه.

مانیټ په خپل ذات کې یو ښه شی دی، او د ډیمونونو څارنه هغه څه دي چې هر سرور یې باید وکړي. مګر ستونزه دا ده چې ډیری آنلاین ټیوټوریلونه د دې انګیرنې پراساس دي چې "Apache2 په ځانګړي ډول پورټ 80 کاروي،" پداسې حال کې چې HestiaCP یو برعکس پراکسي کاروي، پدې معنی چې دا انګیرنه ریښتیا نه ده.

که تاسو لارښوونې تعقیب کړئ، ستونزه تاسو نه یاست؛ دا ده چې ټیوټوریل ستاسو په پرتله په بل سناریو کې پلي کیږي.

نو که تاسو هم د HestiaCP کاروئ او د Apache2 د څارنې لپاره د Monit سره لوبې کوئ، یوازې دوه شیان په یاد ولرئ: پورټ 8081 ته بدل کړئ، او د `systemctl` قوماندې څخه کار واخلئ ترڅو یې ودروئ، نه `killall -9`. که تاسو دا دوه شیان ترسره کوئ، نو تاسو باید د نورو ستونزو څخه مخنیوی وکړئ.


څرنګه چې تاسو تر دې دمه لوستلي دي، که تاسو ګټور وموندل، مهرباني وکړئ خوښ یې کړئ او شریک یې کړئ. که تاسو غواړئ لومړی تازه معلومات ترلاسه کړئ، تاسو کولی شئ ما تعقیب کړئ!

زما د مقالې د لوستلو لپاره مننه. بل ځل به سره ګورو.

هیله ده، مقاله "HestiaCP Apache2 مکرر ټکرونه؟ د مانیټ اتومات څارنې او ستونزو حل کولو لارښود (د بشپړ ترتیب سره)" چې د چن ویلیانګ په بلاګ ( https://www.chenweiliang.com/ ) کې شریکه شوې ستاسو لپاره به ګټوره وي.

د دې مقالې لینک شریکولو لپاره وړیا احساس وکړئ: https://www.chenweiliang.com/cwl-34457.html

د نورو پټو چلونو د خلاصولو لپاره، زموږ د ټیلیګرام چینل سره یوځای کیدو ته ښه راغلاست!

که مو خوښه شوه لایک او شریک کړئ! ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!

 

评论 评论

您的邮箱地址不会被公开。必填项已用*标注

پاس شئ