Ubuntu 16.04 Üzerinde Süpervizör Kurulumu ve Konfigürasyonu

Süpervizör, bir dizi UNIX işlemini, daha spesifik olarak bir proje veya müşteri ile ilgili işlemleri kontrol etmek için kullanılan bir istemci / sunucu sistemidir. Örneğin, web uygulamanızın gelişigüzel sayıda çalışan kuyruğunu oluşturmak ve izlemek için amir kullanabilirsiniz.

Bu sistemin bileşenleri:

  • süpervizör: Sistemin sunucu parçası.
  • supervisorctl: Sunucuyla etkileşim kurmak için kullanılan komut satırı arabirimi.
  • Web sunucusu: Supervisorctl ile karşılaştırıldığında basit bir web sunucusu ve temel işlevselliğe sahip bir web kullanıcı arayüzü .
  • XML-RPC Arabirimi: Web istemcisi tarafından kullanılan aynı HTTP sunucusu, denetim programlarını denetlemek için kullanılabilen bir XML-RPC Arabirimi sunar.

Bu derste, süpervizörün en güncel sürümünü kuracağız, programların nasıl oluşturulacağını ve yönetileceğini göstereceğiz ve programlarımızı supervisorctlyönetmek için bir web arayüzü yapılandıracağız.

Kurulum ve temel yapılandırma

easy_installPython'un kurulum araçlarının bir özelliği aracılığıyla süpervizör kuruyoruz .

İlk olarak, yerel paketler listenizi güncelleyin ve ardından python yükleyin setuptools.

sudo apt-get update && sudo apt-get install python-setuptools

Şimdi süpervizörü kurabiliriz.

sudo easy_install supervisor

Yükleme tamamlandığında, yapılandırma dosyamızı oluşturmalıyız. supervisorİçinde bir klasör oluşturun /etc.

sudo mkdir /etc/supervisor

Ve sonra aşağıdakileri yürütün.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

rootKullanıcı ile oturum açmadıysanız, bir Permission deniedhata alabilirsiniz (ile bile sudo). Bunun nedeni yönlendirme. Bunun üstesinden gelmek için root olarak giriş yapın.

sudo su

Sonra komutu tekrar çalıştırabilirsiniz.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Artık rootkullanıcıyı exitkomutla bırakabilirsiniz . echo_supervisord_confKomut bizim gözetmen kurulumu tarafından sağlandı.

Temel yapılandırma

/etc/supervisor/supervisord.confDosyayı açın ve içeriğini kontrol edin. Bu yapılandırma dosyasının INIsözdizimine uygun olduğunu ve bölümlere ayrıldığını (köşeli parantez içinde olduğu gibi temsil eder [section-name]) not edeceksiniz .

Süpervizör tarafından yönetilecek programlar eklemek için sadece uygun [program]bölümleri oluşturmanız gerekir . Ancak, her program eklemek (veya değiştirmek) gerektiğinde ana yapılandırma dosyasıyla uğraşmaktan kaçınmak için [include]bölümü kullanacağız . Bu bölümü bulun, uncomment ve ardından aşağıdaki gibi görünecek şekilde düzenleyin.

[include]
files=conf.d/*.conf

Şimdi eklemek istediğimiz her program .iniiçin /etc/supervisor/conf.d/dizinde bir dosya oluşturacağız . Bu klasörü oluşturalım.

sudo mkdir /etc/supervisor/conf.d

Denetim sunucusunu başlatma

Daha önce belirtildiği gibi, süpervizör bir sunucu ve ona bağlanan istemcilerden oluşur. Programları yönetebilmek ve kontrol edebilmek için sunucuyu başlatmamız gerekiyor. Bunun systemdiçin sunucunun sistem başlangıcında başlatılmasını sağlamak üzere yönetici sunucuyu kaydettireceğiz .

Bunu yapmak için, adlı bir dosya oluşturmak supervisord.serviceiçinde /etc/systemd/systemdizine.

sudo touch /etc/systemd/system/supervisord.service

Aşağıdaki içeriği dosyaya ekleyin.

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

Süpervizör servisini etkinleştirin.

sudo systemctl start supervisord.service

Hizmet dosyası /etc/systemd/systemdizinde bulunduğu sürece , sistem başlatıldığında otomatik olarak başlatılır.

Hizmetin durumunu kontrol edebilirsiniz.

systemctl status supervisord.service

Ayrıca günlükleri kontrol edebilirsiniz.

sudo journalctl -u supervisord.service

Program ekleme

Süpervizör tarafından kontrol edilen programlar [program]konfigürasyondaki farklı bölümler tarafından verilir . Yönetmek istediğimiz her program için, komut yürütülebilir yolunu, çevresel değişkenleri, kapatma durumunda nasıl gerçekleştirileceğini bildiren bağımsız bir yapılandırma dosyası oluşturacağız.

İlk olarak, zaman damgasını kaydeden basit bir komut dosyası oluşturalım. Adlı bir dosya oluşturun hello_supervisor.sh(dilediğiniz her yerde bu komut dosyasının tam yoluna başvuruyoruz).

touch hello_supervisor.sh

Şimdi, aşağıdaki içeriği içine koyun

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

Şimdi çalıştırılabilir yapın

chmod +x hello_supervisor.sh

Pratik anlamda bu senaryo neredeyse işe yaramaz. Ancak bunu amirinin gücünü göstermek için kullanabiliriz. Aşağıdakileri çalıştırarak ilgili yapılandırma dosyasını oluşturun.

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

Şimdi aşağıdaki içeriği bu dosyaya yerleştirin.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Not: Kullanıcı adınızla değiştirdiğinizden emin olun USER.

Bu yapılandırmayı adım adım inceleyeceğiz.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

İlk olarak, yapılandırma hello_supervisor adında bir program tanımlayarak başlar . Ayrıca çalıştırılacak yürütülebilir dosyanın tam yolunu bildirir.

autostart=true

Bu satır, süpervizör başlatıldığında bu programın otomatik olarak başlatılması gerektiğini belirtir.

autorestart=true

Program herhangi bir nedenle kapanırsa, bu satır süpervizöre işlemi otomatik olarak yeniden başlatmasını bildirir.

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Bu satırlar sırasıyla stderrve için günlük dosyası konumunu tanımlar stdout.

Programları yönetme

Artık süpervizörü kurup yapılandırdığımıza göre süreçlerimizi yönetebiliyoruz.

Yeni bir program ekledikten sonra, sunucuya yapılandırma dosyalarını yeniden okuma ve değişiklikleri uygulama konusunda bilgilendirmek için aşağıdaki iki komutu çalıştırmalıyız.

sudo supervisorctl reread
sudo supervisorctl update

Şimdi supervisorctlistemciyi çalıştırın .

sudo supervisorctl

Kayıtlı işlemlerin bir listesi ile karşılaşacaksınız. Durumu hello_supervisorolan bir işlem göreceksiniz RUNNING.

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

Kullanılabilir helpkomutların bir listesini yazın.

supervisor> help

default commands (type help <topic>):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

Özetle, biz start, stopve restartilgili komuta bağımsız değişken olarak programın adını geçirerek programları.

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

tailKomut ile program çıktısına da bakabiliriz .

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

İçin stderrçıkış kullanabileceğiniz tailkuyu olarak.

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

statusKomutu çağırarak, kayıtlı tüm programların durumunu görüntüleyebilirsiniz.

İşiniz bittiğinde bırakabilirsiniz.

supervisor> quit

Web sunucusu istemcisi

Supervisord web sunucusuna erişime izin vermek için supervisord yapılandırma dosyasını açın ve [inet_http_server]bölümü bulun .

nano /etc/supervisor/supervisord.conf

Şimdi bu bölümün yapılandırmasını aşağıdakilerle güncelleyin.

[inet_http_server]
port=*:9001
username=your_username
password=your_password

Değiştir your_usernameve your_passwordsizin değişiklik ve yeniden başlatma supervisord hizmeti tasarrufu, istediğiniz kimlik bilgileriyle.

sudo systemctl restart supervisord.service

Güvenlik duvarınızdaki TCPbağlantı noktasına 9001erişime ve ardından http://{server-ip}:9001tarayıcınızdan erişime izin vermeyi unutmayın . Sorulduğunda, usernameve öğenizi sağlayın password. Artık süreçlerinizi web'den kontrol edebilirsiniz.

Sonuç

Süpervizörün en güncel sürümünü yükledik, sistemd ile sistem otomatik başlatma için nasıl yapılandırılacağını öğrendik ve temel kullanımını inceledik supervisorctl. Daha gelişmiş yapılandırma ve kullanım durumları için resmi gözetim belgelerine başvurabilirsiniz .



Leave a Comment

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?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun