Laravel munkasorok kezelése Beanstalk és Supervisor segítségével az Ubuntu 16.04-en

A Beanstalk egy gyors és egyszerű munkasor. Lehetővé teszi időigényes feladatok aszinkron futtatását, például e-mailek küldését, külső API-khoz való csatlakozást vagy képek feldolgozását. Ezzel csökkenti a webalkalmazások várakozási idejét. A Laravel azonnali támogatást biztosít a következőhöz: beanstalkd.

Ebben az oktatóanyagban telepítünk beanstalkd, beállítunk egy demó Laravel alkalmazást, és kezeljük a sormunkásokat a Supervisoron keresztül . A demóalkalmazás megkapja a Vultr API- ból elérhető operációs rendszerek listáját, és véletlenszerűen kiválaszt egyet.

Feltételezzük, hogy a Supervisor már telepítve van a rendszerén. Ha nem, olvassa el a következő oktatóanyagot a Supervisor beállításáról: A Supervisor telepítése és konfigurálása az Ubuntu 16.04 rendszeren

Azt is feltételezzük, hogy rendelkezik SSH-hozzáféréssel a Vultr-példányhoz.

Beanstalk telepítése

Az első lépés a telepítés beanstalkd.

sudo apt-get update
sudo apt-get install beanstalkd

Indítsa el a szolgáltatást.

sudo systemctl start beanstalkd

Azt is engedélyezheti, hogy a szolgáltatás elinduljon a rendszer inicializálása után.

sudo systemctl enable beanstalkd

Ellenőrizze a szolgáltatás állapotát a következő parancs kiadásával.

sudo systemctl status beanstalkd

Alapértelmezés szerint beanstalkda porton figyel 11300. A Beanstalk egy egyszerű szövegalapú protokollt használ, amelyet a github tárolójában ismertetnek . A protokoll futtatásával tesztelheti a protokollt telnet.

telnet localhost 11300

Írja be a következőket, és nyomja meg a gombot ENTER.

list-tubes

Látnia kell a szerveren elérhető csövek listáját:

OK 14
---
- default

A kapcsolat bezárásához egyszerűen írja be quit, majd nyomja meg a gombot ENTER.

A Beanstalk csövek munkasorokat jelentenek. A babszem alapvetően termelőkből , fogyasztókból , munkahelyekből és csövekből áll . A termelők egy csőbe helyezik a munkahelyeket, amelyeket tetszőleges számú fogyasztó elfogyaszt (feldolgozhat). Vegye figyelembe, hogy mind a gyártók, mind a fogyasztók egyszerűen a Beanstalk szerver ügyfelei, és teljesen függetlenek egymástól. Gyakorlatilag ez azt jelenti, hogy a Beanstalk használatával elkészítheti a feladatait a PHP alkalmazásban, és feldolgozhatja azokat például egy NodeJS alkalmazásban. Szerencsére a Laravel mindezt elvonatkoztatja, és egy nagyon egyszerű API-t biztosít számunkra a feladatok feladásához és kezeléséhez, amint azt a továbbiakban látni fogjuk.

Mintaprojekt

Mintaprojektünk felépítéséhez először telepítenünk kell a függőségeit. Telepíteni fogjuk a PHP-t és a Composert.

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

Most hozza létre a projektet a Laravel 5.5 alapján.

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

Tovább cda nemrég létrehozott mappába. Ezentúl ebben a könyvtárban fogunk dolgozni. Erre a mappára később mint PROJECT_ROOT.

cd vultr/

A Beanstalk használatához a Laravelben még egy függőséget kell telepítenünk, a PHP Beanstalk klienst.

composer require pda/pheanstalk ~3.0

Létre kell hoznunk egy Munkaképviseletet is. A Laravelben ez egy osztály a app/Jobsmappán belül . A Laravelnek van egy konzolparancsa, amely segít nekünk egy Job osztály létrehozásában. Hozzuk létre a mintamunkánkat.

php artisan make:job FindFavoriteOS

Frissítse a app/Jobs/FindFavoriteOS.phpfájlt a következőre.

<?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']);
    }
}

A kezelési módszer az, ami hatékonyan végrehajtódik, amikor a feladat elfogy. Itt lekérjük az adatokat a Vultr API-ból, véletlenszerűen kiválasztunk egy operációs rendszert, és beírjuk a kiválasztott operációs rendszert a naplófájlba. A naplófájl a következő helyen található: storage/logs/laravel.log.

Már telepítettük a Beanstalk-ot, és meghatároztuk az általa végrehajtandó feladatot. Itt az ideje, hogy megmondjuk a Laravelnek, hogy a Beanstalk-ot használja alapértelmezett munkasorként. Másolja a .envLaravel telepítés által biztosított alapértelmezett fájlt.

cp .env.example .env

Most nyissa meg a .envfájlt, és frissítse azt a sort, ahol a sorillesztő van megadva.

QUEUE_DRIVER=beanstalkd

Végül generáljon egy alkalmazáskulcsot.

php artisan key:generate

Most már készen állunk a feladatok elküldésére a Beanstalk munkasorba.

Feladási és lebonyolítási munkák

Az állás feladása Laravelben meglehetősen egyszerű. Frissítse a routes/web.phpfájlt.

<?php

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

    return '50 Jobs dispatched!';
});

Annak ellenére, hogy nem ajánlott a beépített szerver éles futtatása, a rövidség kedvéért itt fogjuk használni.

php artisan serve --host 0.0.0.0 --port 8000

Most egy webböngészőben keresse meg a következőt: http://[vultr-instance-ip]:8000. A következő üzenetet fogja látni.

50 Jobs dispatched!

Nyisson meg egy új SSH-kapcsolatot a szerverével, és a projektünk gyökérjében hajtsa végre a következőket.

php artisan queue:work --once

Ez a várt kimenet:

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

Erősítse meg, hogy a napló létrejött.

cat storage/logs/laravel.log

Felügyelő konfigurálása

Ahhoz, hogy ne kelljen manuálisan feldolgozni a sorban fogjuk használni supervisord. Hozza létre a következő programkonfigurációt a /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

Figyelje meg, hogy a Supervisor konfigurációs fájl elhelyezésének megfelelő elérési útja a beállítástól függ. Ne felejtse el lecserélni [PROJECT_ROOT]a teljes elérési utat PROJECT_ROOTa rendszeren.

Itt beállítjuk a Supervisor-t, hogy automatikusan elkezdje feldolgozni a sort, és a szkript megszakadása esetén újraindítsa azt. Azt is vegye figyelembe, hogy nem egyetlen dolgozót, hanem 8 folyamatot példányosítunk. Ön szabadon példányosíthat, bármennyi folyamatot szükségesnek talál az alkalmazásától függően.

Ahhoz, hogy a Felügyelő kezelhesse a dolgozónkat, kényszerítse a konfiguráció újraolvasására.

sudo supervisorctl reread
sudo supervisorctl update

Ha a Supervisor szolgáltatás még nem indult el, sokaknak el kell indítania.

sudo systemctl start supervisord

Most nézzük meg, hogy a munkák feldolgozása folyamatban van-e.

tail -f storage/logs/laravel.log

Egy webböngészőben keresse meg a következőt: http://[vultr-instance-ip]:8000. Látni fogja a naplókat a konzolon.

Következtetés

Sikeresen konfiguráltunk egy Laravel alkalmazást, hogy a Beanstalk-ot munkasorként használja. Azt is bemutattuk, hogyan használható a Supervisor a dolgozók menedzselésére.


Telepítse a Plesket a CentOS 7 rendszeren

Telepítse a Plesket a CentOS 7 rendszeren

Más rendszert használ? A Plesk egy szabadalmaztatott webtárhely-vezérlőpult, amely lehetővé teszi a felhasználók számára, hogy adminisztrálják személyes és/vagy ügyfeleik webhelyeit, adatbázisait

A Cacti beállítása a Debian Jessie-n

A Cacti beállítása a Debian Jessie-n

Bevezetés A Cacti egy nyílt forráskódú megfigyelő és grafikus eszköz, amely teljes mértékben az RRD adatokon alapul. A Cactuson keresztül szinte bármilyen típusú eszközt felügyelhet

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Bevezetés A Lets Encrypt egy hitelesítésszolgáltató szolgáltatás, amely ingyenes TLS/SSL-tanúsítványokat kínál. A telepítés folyamatát a Certbot leegyszerűsíti,

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Más rendszert használ? Mi az a Tekkit Classic? A Tekkit Classic egy modpack ahhoz a játékhoz, amelyet mindenki ismer és szeret; Minecraft. Tartalmaz néhányat a ver

Az iRedMail beállítása a Debian Wheezy rendszeren

Az iRedMail beállítása a Debian Wheezy rendszeren

Más rendszert használ? Ez az oktatóanyag megmutatja, hogyan telepítheti a csoportmunka iRedMail programot a Debian Wheezy friss telepítésére. Használnia kell egy szervát

Jekyll blog létrehozása Ubuntu 16.04-en

Jekyll blog létrehozása Ubuntu 16.04-en

Más rendszert használ? A Jekyll nagyszerű alternatíva a WordPress helyett blogíráshoz vagy tartalommegosztáshoz. Nem igényel adatbázist, és nagyon egyszerű i

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Más rendszert használ? Ha Debian szervert vásárol, akkor mindig rendelkeznie kell a legújabb biztonsági javításokkal és frissítésekkel, akár alszik, akár nem

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP és a kapcsolódó csomagok a leggyakrabban használt összetevők a webszerverek telepítésekor. Ebben a cikkben megtudjuk, hogyan kell beállítani a PHP 7.0 vagy PHP 7.1 o verzióját

A Squid Proxy telepítése a CentOS rendszeren

A Squid Proxy telepítése a CentOS rendszeren

A Squid egy népszerű, ingyenes Linux-program, amely lehetővé teszi továbbítási webproxy létrehozását. Ebben az útmutatóban megtudhatja, hogyan telepítheti a Squid-et a CentOS rendszerre, hogy megfordítsa

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

Bevezetés A Lighttpd az Apache forkja, amely sokkal kevésbé erőforrás-igényes. Könnyű, innen kapta a nevét, és meglehetősen egyszerű a használata. Telepítés

Három ingyenes szervervezérlő panel (gyors telepítés)

Három ingyenes szervervezérlő panel (gyors telepítés)

1. Virtualmin/Webmin A Virtualmin egy hatékony és rugalmas web hosting vezérlőpanel Linux és UNIX rendszerek számára, amely a jól ismert nyílt forráskódú webbázison alapul.

Yii alkalmazás beállítása Ubuntu 14.04-en

Yii alkalmazás beállítása Ubuntu 14.04-en

A Yii egy PHP-keretrendszer, amely lehetővé teszi alkalmazások gyorsabb és egyszerűbb fejlesztését. A Yii telepítése Ubuntura egyszerű, amint azt pontosan megtudhatja

A képernyő használata Ubuntu 14.04-en

A képernyő használata Ubuntu 14.04-en

A Screen egy olyan alkalmazás, amely lehetővé teszi a terminálmunkamenetek többszöri használatát egy ablakon belül. Ez lehetővé teszi több terminálablak szimulálását, ahol ez ma

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Ez az oktatóanyag elmagyarázza, hogyan állíthat be DNS-kiszolgálót a Bind9 használatával Debian vagy Ubuntu rendszeren. A cikkben ennek megfelelően helyettesítse be a saját-domain-neve.com címet. TH-nál

A Logrotate használata naplófájlok kezelésére

A Logrotate használata naplófájlok kezelésére

Bevezetés A Logrotate egy Linux segédprogram, amely leegyszerűsíti a naplófájlok kezelését. Általában naponta egyszer fut egy cron-feladaton keresztül, és kezeli a naplóbázist

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A VULTR a közelmúltban változtatásokat hajtott végre a saját oldalukon, és most már mindennek jól kell működnie, ha a NetworkManager engedélyezve van. Ha szeretné letiltani

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 egy hatékony felügyeleti rendszer, és mester-kliens modellben használva helyettesítheti az NRPE-alapú felügyeleti ellenőrzések szükségességét. A mester-kliens

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

Más rendszert használ? A Red5 egy Java nyelven megvalósított nyílt forráskódú médiaszerver, amely lehetővé teszi többfelhasználós Flash-alkalmazások, például élő streamin futtatását.

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Ebben a cikkben látni fogjuk, hogyan fordíthatja le és telepítheti az Nginx fővonalat az Nginx hivatalos forrásaiból a PageSpeed ​​modullal, amely lehetővé teszi a

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Más rendszert használ? Az Apache Cassandra egy ingyenes és nyílt forráskódú NoSQL adatbázis-kezelő rendszer, amelyet úgy terveztek, hogy biztosítsa a méretezhetőséget,

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

Az Apple a közelmúltban kiadott egy kiegészítést a macOS Catalina 10.15.4-hez a problémák megoldására, de úgy tűnik, hogy a frissítés több problémát okoz, ami a Mac gépek blokkolásához vezet. További információért olvassa el ezt a cikket