Ubuntuda Laravel İş Kuyruklarını Beanstalk ve Supervisor ile Yönetme 16.04

Beanstalk hızlı ve basit bir çalışma kuyruğu. E-posta gönderme, harici API'lere bağlanma veya görüntüleri işleme gibi zaman alıcı görevleri eşzamansız olarak çalıştırmanıza olanak tanır. Böylece, web uygulamanızın gecikmesini azaltabilirsiniz. Laravel, kullanıma hazır destek sağlar beanstalkd.

Bu derste beanstalkd, bir Laravel uygulaması kuracak , kuracak ve kuyruk çalışanlarını Süpervizör aracılığıyla yöneteceğiz . Demo uygulaması Vultr API'sinden kullanılabilir işletim sistemlerinin bir listesini alır ve rastgele birini seçer.

Sisteminizde zaten bir Yönetici yüklü olduğu varsayılmaktadır. Bunu yapmazsanız, Süpervizörün nasıl kurulacağı ile ilgili aşağıdaki öğreticiyi okumalısınız: Ubuntu 16.04 Üzerinde Süpervizörü Kurmak ve Konfigüre Etmek

Ayrıca Vultr örneğinize SSH erişiminiz olduğu varsayılır.

Beanstalk Kurulumu

İlk adım, yüklemektir beanstalkd.

sudo apt-get update
sudo apt-get install beanstalkd

Hizmeti başlatın.

sudo systemctl start beanstalkd

Hizmetin sistem başlatıldıktan sonra başlamasını da sağlayabilirsiniz.

sudo systemctl enable beanstalkd

Aşağıdaki komutu vererek servis durumunu kontrol edin.

sudo systemctl status beanstalkd

Varsayılan beanstalkdolarak, bağlantı noktasını dinler 11300. Beanstalk, github deposunda açıklanan basit bir metin tabanlı protokol kullanır . Protokolünü çalıştırarak test edebilirsiniz telnet.

telnet localhost 11300

Aşağıdakileri yazın ve tuşuna basın ENTER.

list-tubes

Sunucuda bulunan tüplerin bir listesini görmelisiniz:

OK 14
---
- default

Bağlantıyı kapatmak için sadece quityazıp tuşuna basın ENTER.

Beanstalk'taki tüpler çalışma kuyruklarını temsil eder. Beanstalk temel olarak üreticiler , tüketiciler , işler ve tüplerden oluşur . Üreticiler, herhangi bir sayıda tüketici tarafından tüketilecek (işlenecek) bir tüpe iş koyarlar. Hem üreticilerin hem de tüketicilerin sadece Beanstalk sunucusunun müşterileri olduğunu ve birbirinden tamamen bağımsız olduklarını unutmayın. Pratik anlamda bu, Beanstalk kullanarak işlerinizi PHP uygulamanızda üretebileceğiniz ve örneğin bir NodeJS uygulamasında işleyebileceğiniz anlamına gelir. Neyse ki, Laravel tüm bunları özetler ve bize bir sonraki bölümde göreceğimiz gibi işleri göndermek ve işlemek için çok basit bir API sağlar.

Örnek proje

Örnek projemizi oluşturmak için önce bağımlılıklarını kurmamız gerekiyor. PHP ve Composer'ı kuracağız.

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

Şimdi, projeyi Laravel 5.5'e göre oluşturun.

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

Sonraki cdson oluşturulan klasöre. Bundan sonra bu dizinde çalışacağız. Bu klasöre daha sonra olarak referans verilebilir PROJECT_ROOT.

cd vultr/

Laravel'de Beanstalk kullanmak için, bir bağımlılık daha kurmamız gerekiyor, PHP Beanstalk istemcisi.

composer require pda/pheanstalk ~3.0

Ayrıca bir İş temsili de yaratmalıyız. Laravel'de bu, app/Jobsklasörün içindeki bir sınıftır . Laravel, bir Job sınıfı oluşturmamıza yardımcı olacak bir konsol komutuna sahiptir. Örnek İşimizi yaratalım.

php artisan make:job FindFavoriteOS

app/Jobs/FindFavoriteOS.phpDosyayı aşağıdaki şekilde güncelleyin .

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

Tanıtıcı yöntem, iş tüketildiğinde etkili bir şekilde yürütülecek yöntemdir. Burada, Vultr API'sinden veri alır, rastgele bir işletim sistemi seçer ve seçilen işletim sistemini günlük dosyasına yazarız. Günlük dosyası adresinde bulunur storage/logs/laravel.log.

Beanstalk'i zaten kurduk ve onun tarafından yürütülecek İşi tanımladık. Şimdi Laravel'e Beanstalk'u varsayılan çalışma kuyruğu olarak kullanmasını söylemenin zamanı geldi. .envLaravel kurulumu tarafından sağlanan varsayılan dosyayı kopyalayın .

cp .env.example .env

Şimdi .envdosyayı açın ve kuyruk sürücüsünün belirtildiği satırı güncelleyin.

QUEUE_DRIVER=beanstalkd

Son olarak, bir uygulama anahtarı oluşturun.

php artisan key:generate

Artık işleri Beanstalk çalışma kuyruğuna göndermeye hazırız.

İşleri gönderme ve çalıştırma

Laravel'de bir iş göndermek oldukça basittir. routes/web.phpDosyayı güncelleyin .

<?php

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

    return '50 Jobs dispatched!';
});

Yerleşik sağlanan sunucuyu üretimde çalıştırmanız tavsiye edilmemesine rağmen, burada kısaca olması için kullanacağız.

php artisan serve --host 0.0.0.0 --port 8000

Şimdi bir web tarayıcısında adresine gidin http://[vultr-instance-ip]:8000. Aşağıdaki mesajı göreceksiniz.

50 Jobs dispatched!

Sunucunuza yeni bir SSH bağlantısı açın ve proje kökümüzün içinde aşağıdakileri yürütün.

php artisan queue:work --once

Bu beklenen çıktıdır:

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

Günlüğün oluşturulduğunu doğrulayın.

cat storage/logs/laravel.log

Süpervizörü Yapılandırma

Kuyruğu manuel olarak işleme ihtiyacını ortadan kaldırmak için kullanacağız supervisord. İçinde aşağıdaki program yapılandırmasını oluşturun /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

Supervisor yapılandırma dosyasını koymak için doğru yolun kurulumunuza bağlı olduğuna dikkat edin. Ayrıca, sisteminizdeki [PROJECT_ROOT]tam yolla değiştirmeyi unutmayın PROJECT_ROOT.

Burada Süpervizörü kuyruğu otomatik olarak işlemeye başlayacak ve kod kopması durumunda yeniden başlatacak şekilde yapılandırıyoruz. Ayrıca, tek bir çalışanı değil, 8 süreci somutlaştırdığımızı unutmayın. Uygulamanıza bağlı olarak gerekli bulduğunuz birçok işlemi somutlaştırmakta serbestsiniz.

Süpervizörün çalışanımızı yönetmesine izin vermek için onu yapılandırmasını yeniden okumaya zorlayın.

sudo supervisorctl reread
sudo supervisorctl update

Supervisor hizmeti başlatılmadıysa, çoğunu başlatmanız gerekir.

sudo systemctl start supervisord

Şimdi işlerin işlenip işlenmediğine bakalım.

tail -f storage/logs/laravel.log

Bir web tarayıcısında adresine gidin http://[vultr-instance-ip]:8000. Konsolunuzda oluşturulan günlükleri göreceksiniz.

Sonuç

Laravel uygulamasını, Beanstalk'u çalışma kuyruğu olarak kullanacak şekilde başarıyla yapılandırdık. Ayrıca, Süpervizörün çalışanları yönetmek için nasıl kullanıldığını gösterdik.



Leave a Comment

CentOS 7de Tavşan Kümesini Kümeleme

CentOS 7de Tavşan Kümesini Kümeleme

RabbitMQ, AMQP, STOMP ve diğer iletişim teknolojilerini destekleyen açık kaynaklı bir mesaj aracısıdır. Kurumsal uygulamalarda yaygın olarak kullanılan bir

Debianda NFS Paylaşımı Ayarla

Debianda NFS Paylaşımı Ayarla

NFS, bilgisayarların bilgisayar ağı üzerindeki dosyalara erişmesine izin veren ağ tabanlı bir dosya sistemidir. Bu kılavuz, klasörleri NF üzerinden nasıl açığa çıkarabileceğinizi açıklar

GitBucket Ubuntu 16.04 Kurulumu

GitBucket Ubuntu 16.04 Kurulumu

Bu kılavuz, Ubuntu 16.04 çalıştıran bir Vultr örneği için GitBucketin temel kurulumunu ve kurulumunu kapsar ve komutları şu şekilde yürüttüğünüzü varsayar:

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Directus 6.4 CMS, geliştirici sağlayan güçlü ve esnek, ücretsiz ve açık kaynaklı Başsız İçerik Yönetim Sistemidir (CMS)

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Mattermost, Slack SAAS mesajlaşma servisine açık kaynaklı, kendi kendine barındırılan bir alternatiftir. Başka bir deyişle, Mattermost ile,

Linuxta TeamTalk Sunucusu Kurma

Linuxta TeamTalk Sunucusu Kurma

TeamTalk, kullanıcıların yüksek kaliteli sesli / görüntülü konuşmalara, metin sohbetine, dosya aktarımına ve ekranları paylaşmasına olanak tanıyan bir konferans sistemidir. Ben

Pagekit CMSyi CentOS 7ye Yükleme

Pagekit CMSyi CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Vultr, yeni bir örnek oluşturduktan sonra SSH anahtarlarını önceden yüklemenizi sağlayan bir özellik sağlar. Bu, sunucu kök kullanıcısına erişmenizi sağlar, ancak

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Farklı Bir Sistem mi Kullanıyorsunuz? Diaspora gizliliğe duyarlı, açık kaynaklı bir sosyal ağdır. Bu derste, bir Diaspora posının nasıl kurulacağını ve yapılandırılacağını öğreneceksiniz

Debian 9 Üzerinde Yakıt CMS Kurulumu

Debian 9 Üzerinde Yakıt CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Fuel CMS, CodeIgniter tabanlı bir içerik yönetim sistemidir. Kaynak kodu GitHubda barındırılmaktadır. Bu kılavuz size

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların önüne # ve bir

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Snipe-IT, BT varlık yönetimi için ücretsiz ve açık kaynaklı bir web uygulamasıdır. Laravel 5.2 çerçevesi ve kullanımı üzerine yazılmıştır.

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

Çok Güvenli FTP arka plan programı, ya da sadece vsFTPd, özelleştirme yeteneği olan hafif bir yazılım parçasıdır. Bu derste bir müttefikimiz olacak

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Ranger, VI anahtar bağlamaları olan komut satırı tabanlı bir dosya yöneticisidir. Dizin hiyerarşisi manzaralı minimalist ve hoş bir curses arayüzü sağlar

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Farklı Bir Sistem mi Kullanıyorsunuz? Brotli, GZIPden daha iyi bir sıkıştırma oranına sahip yeni bir sıkıştırma yöntemidir. Kaynak kodu bu Githuda herkese açık olarak barındırılıyor

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

Belirli durumlarda, Sistem Yöneticisinin bir kullanıcı hesabı oluşturması ve yalnızca kendi dosyalarını sFTP yoluyla yönetmek için erişimini kısıtlaması gerekebilir, ancak b

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Omeka Classic 2.4 CMS, digita paylaşımı için ücretsiz ve açık kaynaklı bir dijital yayıncılık platformu ve İçerik Yönetim Sistemidir (CMS)

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların başına # işareti gelir. th

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

SSH üzerinden kök girişine izin vermek, teknoloji endüstrisinde genellikle zayıf bir güvenlik uygulaması olarak kabul edilir. Bunun yerine, hassas yönetim gerçekleştirebilirsiniz

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? RabbitMQ, Erlang programlama dilinde yazılmış, yaygın olarak kullanılan açık kaynaklı bir mesaj aracısıdır. Mesaj odaklı bir ara katman yazılımı olarak

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?