उबंटू में 16.04 पर बीनस्टॉक और पर्यवेक्षक के साथ लारवेल कार्य कतारों का प्रबंधन करना

बीनस्टॉक एक तेज और सरल काम कतार है। यह आपको समय-उपभोक्ता कार्यों को अतुल्यकालिक रूप से चलाने की अनुमति देता है, जैसे ईमेल भेजना, बाहरी एपीआई से कनेक्ट करना या छवियों को संसाधित करना। ऐसा करने से, आप अपने वेब ऐप की विलंबता कम कर देंगे। लारवेल के लिए आउट-ऑफ-द-बॉक्स समर्थन प्रदान करता है beanstalkd

इस ट्यूटोरियल में हम beanstalkdएक डेमो लारवेल एप्लिकेशन को स्थापित करेंगे , और पर्यवेक्षक के माध्यम से कतार के कर्मचारियों को प्रबंधित करेंगे । डेमो एप्लिकेशन को वल्चर एपीआई से उपलब्ध ओएस की एक सूची मिलेगी और बेतरतीब ढंग से एक का चयन करेंगे।

यह माना जाता है कि आपके पास पहले से ही पर्यवेक्षक आपके सिस्टम पर स्थापित है। यदि आप नहीं करते हैं, तो आपको पर्यवेक्षक को सेटअप करने के तरीके के बारे में निम्नलिखित ट्यूटोरियल पढ़ना चाहिए: Ubuntu 16.04 पर पर्यवेक्षक को स्थापित करना और कॉन्फ़िगर करना

यह भी माना जाता है कि आपके Vultr उदाहरण के लिए आपके पास SSH है।

बीनस्टॉक स्थापित करना

स्थापित करने के लिए पहला कदम है beanstalkd

sudo apt-get update
sudo apt-get install beanstalkd

सेवा शुरू करें।

sudo systemctl start beanstalkd

आप सिस्टम इनिशियलाइज़ेशन पर शुरू करने के लिए सेवा को सक्षम कर सकते हैं।

sudo systemctl enable beanstalkd

निम्नलिखित आदेश जारी करके सेवा की स्थिति की जाँच करें।

sudo systemctl status beanstalkd

डिफ़ॉल्ट रूप से, beanstalkdपोर्ट पर सुनता है 11300। बीनस्टॉक एक साधारण पाठ-आधारित प्रोटोकॉल का उपयोग करता है जिसका वर्णन यह गितुब भंडार में किया गया है । आप इसे चलाकर प्रोटोकॉल का परीक्षण कर सकते हैं telnet

telnet localhost 11300

निम्नलिखित लिखें और हिट करें ENTER

list-tubes

आपको सर्वर पर उपलब्ध ट्यूबों की एक सूची देखनी चाहिए:

OK 14
---
- default

कनेक्शन को बंद करने के लिए बस टाइप करें quitऔर फिर दबाएं ENTER

बीनस्टॉक में ट्यूब काम की कतारों का प्रतिनिधित्व करते हैं। बीनस्टॉक मूल रूप से उत्पादकों , उपभोक्ताओं , नौकरियों और ट्यूबों से बना है । निर्माता किसी भी संख्या में उपभोक्ताओं द्वारा उपभोग की जाने वाली (प्रसंस्कृत) ट्यूब को काम में लेते हैं। ध्यान दें कि निर्माता और उपभोक्ता दोनों ही बीनस्टॉक सर्वर के ग्राहक हैं और एक दूसरे से पूरी तरह से स्वतंत्र हैं। व्यावहारिक रूप से इसका मतलब यह है कि बीनस्टॉक का उपयोग करके आप अपने PHP एप्लिकेशन में अपनी नौकरियों का उत्पादन कर सकते हैं और उदाहरण के लिए इसे नोडोड्स एप्लिकेशन में संसाधित किया है। सौभाग्य से, लारवेल इस सबको अमूर्त करता है और हमें एक बहुत ही सरल एपीआई प्रदान करता है, जिससे हम आगे काम देखेंगे और संभालेंगे।

नमूना परियोजना

हमारी नमूना परियोजना के निर्माण के लिए, हमें सबसे पहले इसकी निर्भरता स्थापित करने की आवश्यकता है। हम PHP और संगीतकार को स्थापित करने जा रहे हैं।

sudo apt-get install php php-mbstring php-xml php-common php-zip composer

अब, Laravel 5.5 पर आधारित परियोजना बनाएं।

composer create-project --prefer-dist laravel/laravel vultr "5.5.*"

अगला cdहाल ही में बनाया फ़ोल्डर में। हम अभी से इस निर्देशिका में काम करेंगे। इस फ़ोल्डर को बाद में संदर्भित किया जा सकता है PROJECT_ROOT

cd vultr/

लारवेल में बीनस्टॉक का उपयोग करने के लिए हमें एक और निर्भरता, पीएचपी बीनस्टॉक क्लाइंट स्थापित करने की आवश्यकता है।

composer require pda/pheanstalk ~3.0

हमें जॉब रिप्रेजेंटेशन बनाने की भी जरूरत है। लारवेल में, यह app/Jobsफ़ोल्डर के अंदर एक वर्ग है । लारवेल में एक जॉब क्लास बनाने में हमारी मदद करने के लिए एक कंसोल कमांड है। चलो अपना नमूना नौकरी बनाएँ।

php artisan make:job FindFavoriteOS

app/Jobs/FindFavoriteOS.phpफ़ाइल को निम्न में अपडेट करें ।

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;

class FindFavoriteOS implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $rawData = file_get_contents('https://api.vultr.com/v1/os/list');
        $list = json_decode($rawData, true);
        shuffle($list);
        $key = array_rand($list);
        $favorite = $list[$key];
        Log::info('My Favorite OS is: ' . $favorite['name']);
    }
}

संभाल विधि वह है जो प्रभावी रूप से निष्पादित होगी जब नौकरी का उपभोग किया जाएगा। यहाँ, हम Vultr API से डेटा प्राप्त करते हैं, एक बेतरतीब ढंग से OS चुनते हैं और चुने हुए OS को लॉग फाइल में लिखते हैं। लॉग फ़ाइल पर स्थित है storage/logs/laravel.log

हमने पहले ही बीनस्टॉक स्थापित कर लिया है और इसे निष्पादित करने के लिए नौकरी को परिभाषित किया है। अब समय आ गया है कि लारवेल को बीनस्टॉक को डिफ़ॉल्ट कार्य कतार के रूप में उपयोग करने के लिए कहा जाए। .envलारवेल इंस्टालेशन द्वारा दी गई डिफॉल्ट फाइल को कॉपी करें ।

cp .env.example .env

अब .envफ़ाइल खोलें और उस पंक्ति को अपडेट करें जहां कतार चालक निर्दिष्ट है।

QUEUE_DRIVER=beanstalkd

अंत में, एक एप्लिकेशन कुंजी जेनरेट करें।

php artisan key:generate

अब हम बीनस्टॉक काम कतार में नौकरी भेजने के लिए तैयार हैं।

डिस्पैच करना और नौकरी चलाना

लारवेल में नौकरी भेजना काफी सरल है। routes/web.phpफ़ाइल को अपडेट करें ।

<?php

Route::get('/', function () {
    for ($i = 0; $i < 50; $i++) {
        \App\Jobs\FindFavoriteOS::dispatch();
    }

    return '50 Jobs dispatched!';
});

निर्माण में प्रदान किए गए सर्वर को चलाने के लिए अनुशंसित नहीं होने के बावजूद, हम इसका उपयोग यहां संक्षिप्तता के लिए करेंगे।

php artisan serve --host 0.0.0.0 --port 8000

अब एक वेब ब्राउज़र में, पर नेविगेट करें http://[vultr-instance-ip]:8000। आपको निम्न संदेश दिखाई देगा।

50 Jobs dispatched!

अपने सर्वर और हमारे प्रोजेक्ट रूट के अंदर एक नया SSH कनेक्शन खोलें, निम्नलिखित पर अमल करें।

php artisan queue:work --once

यह अपेक्षित आउटपुट है:

[2018-02-14 00:03:52] Processing: App\Jobs\FindFavoriteOS
[2018-02-14 00:03:53] Processed:  App\Jobs\FindFavoriteOS

पुष्टि करें कि लॉग उत्पन्न किया गया था।

cat storage/logs/laravel.log

सुपरवाइजर को कॉन्फ़िगर करना

कतार को मैन्युअल रूप से संसाधित करने की आवश्यकता से बचने के लिए, हम उपयोग करेंगे supervisord। में निम्नलिखित प्रोग्राम कॉन्फ़िगरेशन बनाएँ /etc/supervisor/conf.d/vultr.conf

[program:vultr]
process_name=%(program_name)s_%(process_num)02d
command=php [PROJECT_ROOT]/artisan queue:work
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
stdout_logfile=/var/log/worker.log

ध्यान दें कि सुपरवाइज़र कॉन्फ़िगरेशन फ़ाइल डालने का सही तरीका आपके सेटअप पर निर्भर करेगा। इसके अलावा, अपने सिस्टम पर [PROJECT_ROOT]पूर्ण पथ से बदलने के लिए याद रखें PROJECT_ROOT

यहां हम पर्यवेक्षक को स्वचालित रूप से कतार को संसाधित करने के लिए कॉन्फ़िगर कर रहे हैं और स्क्रिप्ट को तोड़ने के मामले में, इसे पुनः आरंभ करने के लिए। यह भी ध्यान दें कि हम किसी एक कार्यकर्ता को नहीं, बल्कि 8 प्रक्रियाओं को दोहरा रहे हैं। आप अपने आवेदन के आधार पर आवश्यक कई प्रक्रियाओं को तुरंत प्राप्त करने के लिए स्वतंत्र हैं।

पर्यवेक्षक को हमारे कार्यकर्ता को प्रबंधित करने की अनुमति देने के लिए, इसके कॉन्फ़िगरेशन को फिर से बनाने के लिए मजबूर करें।

sudo supervisorctl reread
sudo supervisorctl update

यदि पर्यवेक्षक सेवा शुरू नहीं की गई है, तो आपको इसे शुरू करने की आवश्यकता है।

sudo systemctl start supervisord

अब देखते हैं कि नौकरियों पर कार्रवाई हो रही है या नहीं।

tail -f storage/logs/laravel.log

वेब ब्राउज़र पर, पर नेविगेट करें http://[vultr-instance-ip]:8000। आप अपने कंसोल पर लॉग को जेनरेट होते देखेंगे।

निष्कर्ष

हमने बीनस्टॉक को काम की कतार के रूप में उपयोग करने के लिए एक लारवेल एप्लिकेशन को सफलतापूर्वक कॉन्फ़िगर किया है। इसके अलावा, हमने यह प्रदर्शित किया कि श्रमिकों का प्रबंधन करने के लिए पर्यवेक्षक का उपयोग कैसे किया जाए।



Leave a Comment

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

LiteCart PHP, jQuery और HTML में लिखा गया एक स्वतंत्र और ओपन सोर्स शॉपिंग कार्ट प्लेटफॉर्म है। यह ई-कॉमर्स सॉफ्टवेअर का उपयोग करने के लिए एक सरल, हल���का और आसान है

डेबियन पर सेटअप NFS शेयर

डेबियन पर सेटअप NFS शेयर

एनएफएस एक नेटवर्क-आधारित फाइल सिस्टम है जो कंप्यूटरों को कंप्यूटर नेटवर्क पर फाइलों तक पहुंचने की अनुमति देता है। यह मार्गदर्शिका बताती है कि आप एनएफ पर फ़ोल्डर्स को कैसे उजागर कर सकते हैं

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

एक अलग प्रणाली का उपयोग? माटोमो (पूर्व में पिविक) एक ओपन सोर्स एनालिटिक्स प्लेटफॉर्म है, जो गूगल एनालिटिक्स का एक खुला विकल्प है। Matomo स्रोत को होस्ट किया गया है

Linux पर एक TeamTalk Server सेटअप करें

Linux पर एक TeamTalk Server सेटअप करें

टीमटॉक एक कॉन्फ्रेंसिंग प्रणाली है जो उपयोगकर्ताओं को उच्च-गुणवत्ता वाले ऑडियो / वीडियो वार्तालाप, टेक्स्ट चैट, स्थानांतरण फ़ाइलें और स्क्रीन साझा करने की अनुमति देती है। यह मैं

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

परिचय यह आलेख बताएगा कि विंडोज सर्वर 2012 पर गारस मोड सर्वर को कैसे डाउनलोड और इंस्टॉल किया जाए। यह गाइड गहराई में होने के लिए बनाया गया है।

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

एक अलग प्रणाली का उपयोग? परिचय CyberPanel बाजार पर पहला नियंत्रण पैनल है जो दोनों खुला स्रोत है और OpenLiteSpeed ​​का उपयोग करता है। क्या थी?

CentOS पर FFmpeg कैसे स्थापित करें

CentOS पर FFmpeg कैसे स्थापित करें

FFmpeg ऑडियो और वीडियो रिकॉर्ड करने, कन्वर्ट करने और स्ट्रीम करने के लिए एक लोकप्रिय ओपन सोर्स समाधान है, जो सभी प्रकार की ऑनलाइन स्ट्रीमिंग सेवाओं में व्यापक रूप से उपयोग किया जाता है। मैं

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

एलयूकेएस (लिनक्स यूनिफाइड की सेटअप) लिनक्स के लिए उपलब्ध विभिन्न डिस्क एन्क्रिप्शन प्रारूपों में से एक है जो प्लेटफॉर्म एग्नॉस्टिक है। यह ट्यूटोरियल आपको बुद्धि प्रदान करेगा

अपने Vultr VPS को कैसे एक्सेस करें

अपने Vultr VPS को कैसे एक्सेस करें

Vultr अपने VPS को कॉन्फ़िगर करने, स्थापित करने और उपयोग करने के लिए कई अलग-अलग तरीके प्रदान करता है। क्रेडेंशियल एक्सेस करें आपके VPS के लिए डिफ़ॉल्ट एक्सेस क्रेडेंशियल ar

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

अक्टूबर एक खुला स्रोत सामग्री प्रबंधन प्रणाली है जो लारवेल PHP फ्रेमवर्क पर आधारित है। एक सुरुचिपूर्ण इंटरफ़ेस और एक संक्षिप्त मॉड्यूलर वास्तुकला के साथ