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
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.
İ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 beanstalkd
olarak, 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 quit
yazı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 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 cd
son 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/Jobs
klasö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.php
Dosyayı 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. .env
Laravel kurulumu tarafından sağlanan varsayılan dosyayı kopyalayın .
cp .env.example .env
Şimdi .env
dosyayı 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.
Laravel'de bir iş göndermek oldukça basittir. routes/web.php
Dosyayı 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
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.
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.
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
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
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:
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)
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,
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
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
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
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
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
Ö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
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.
Ç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
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
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
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
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)
Ö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
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
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 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 sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.
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.
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
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.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
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, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?