2.3 Linux kurulumu

<< İçindekileri Görüntülemek İçin Tıklayın >>

Yer:  Teknik Kılavuzlar > Netsim System Agent Kurulum ve Yönetim Kılavuzu > 2. Kurulum >

2.3 Linux kurulumu

Dağıtım düzeni Windows'la aynıdır: tek dizin, öneri /usr/local/netsim/Agent. Kurulum yine ajanın kendi komutuyla yapılır; -INSTALL systemd birim dosyasını /etc/systemd/system/<hizmet adı>.service altında üretir, ardından systemctl daemon-reload ve systemctl enable çalıştırır — yani birimi açılışta başlayacak biçimde kaydeder ama başlatmaz; başlatmak ayrı bir adımdır. -UNINSTALL ise systemctl disable --now ve systemctl daemon-reload çalıştırır; hiçbir dosyayı silmez. Birim dosyası yerinde kalır — gövdesi elle düzenlenmiş olabileceği için kaldırma işlemi ona dokunmaz. Sonucu şudur: hizmet durur ve açılışta başlamaz, ama systemd birimi görmeye devam eder, dolayısıyla yeniden -INSTALL gerekmeden systemctl enable ile geri açılabilir. Tümüyle temizlemek isteyen operatör dosyayı kendisi siler:

sudo rm /etc/systemd/system/<hizmet adi>.service
sudo systemctl daemon-reload

Paket ZIP olarak açıldıysa çalıştırılabilir dosyaların çalıştırma izni kaybolmuş olabilir; kurulumdan önce verin (libonnxruntime.so için gerekmez):

chmod +x NetsimSystemAgent msql
sudo ./NetsimSystemAgent -INSTALL
sudo ./NetsimSystemAgent -START
systemctl status netsim-system-agent   # ya da kurulan hizmet adiyla

Dört hizmet komutu (-INSTALL, -UNINSTALL, -START, -STOP) sonucu standart çıkışa yazar; bir hata olursa iletisi de oraya gider. Çıktı görünmüyorsa komutu bir terminalden çalıştırdığınızdan emin olun — çıktı yönlendirilmişse ileti yönlendirilen yere yazılır.

Üretilen birim Type=simple, Restart=on-failure, RestartSec=30 taşır, WorkingDirectory'yi ikilinin dizininden alır ve LogsDirectory=<hizmet adı> yazar — bu satır sayesinde systemd /var/log/<hizmet adı> dizinini kendisi oluşturur, User= verildiyse ona devreder ve günlüğün yeri o dizin olur (bkz. 7.1). ExecStart'taki ikili yolu tırnaklı, WorkingDirectory tırnaksız yazılır (systemd bu anahtarda satırın geri kalanını olduğu gibi yol sayar); kurulum dizininde boşluk olması birimi bozmaz. Hesap verilmediyse User= yazmaz ve hizmet root olarak koşar — Windows'taki LocalSystem'in simetriği budur; var olmayan bir hesap adı öndeğer olarak uydurulsa systemctl start başarısız olurdu.

-SERVICE_USER ile ayrıcalığı kurulum anında düşürebilirsiniz — hesabın önceden var olması gerekir:

sudo useradd --system --no-create-home --shell /usr/sbin/nologin netsim
sudo ./NetsimSystemAgent -INSTALL -SERVICE_USER netsim

Birime yalnızca User=netsim satırı eklenir; Group= yazılmaz, çünkü systemd yalnızca User= verildiğinde grubu o hesabın birincil grubuna ayarlar. -SERVICE_PASSWORD bu platformda kullanılmaz (systemd bir hesabın parolasını istemez); verilirse yok sayılır ve günlüğe bir uyarı düşer. Üretilen birimdeki AmbientCapabilities=CAP_NET_BIND_SERVICE satırı tam bu an için oradadır: ayrıcalık düşürüldüğünde yapılandırmadaki 82 portu o satır olmadan bağlanamaz hale gelirdi.

Daha ileri sertleştirme dağıtımın işidir. Birim gövdesi koddan üretilir; üretilen birimde şu satırlar bulunur:

SatırNe için
User=<hesap>Yalnızca -INSTALL -SERVICE_USER <hesap> verildiğinde yazılır. Ayrıcalık düşürme; hesabın önceden var olması gerekir. Group= yazılmaz, systemd hesabın birincil grubunu kullanır.
AmbientCapabilities=CAP_NET_BIND_SERVICE1024 altı portlar için şart. Bu yetki olmadan ayrıcalıksız koşan ajan örneğin 82'ye bağlanamaz, 8082'ye bağlanır. Alternatif, portu 1024 üstüne almaktır.

Bunun ötesindeki sertleştirmeyi (StateDirectory, ProtectSystem, Environment= ile paylaşılan bellek boyutu gibi) üretilen birimi elle düzenleyerek ya da bir systemctl edit katmanı ekleyerek yapın; systemctl daemon-reload unutulmamalıdır. Ajanı yeniden kurmak (-INSTALL) üretilen gövdeyi yeniden yazar ve düzenlemelerinizi geri alır — systemctl edit katmanı bundan etkilenmez, o yüzden kalıcı sertleştirme için katman yeğlenir.