Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İşletme

Nasıl yapılır

Bir Linux düğümü kurun

Bir Ubuntu düğümünü bootstrap-node.sh ile hazırlayın ve install.sh ile etiketli bir Cluster ERP sürümünü kurun veya yükseltin.

Bu kılavuz etiketli bir Cluster ERP sürümünü staging veya üretim için tek bir Linux düğümüne kurar ve daha sonra aynı komutla yükseltir. İşletim sistemi için deploy/bootstrap-node.sh, uygulama için deploy/install.sh izlenir. Staging ile üretim ayrımının gerekçeleri ortamlar ve terfi sayfasındadır.

Ön koşullar

  • Root erişimli, temiz bir Ubuntu 24.04 düğümü; hazırlık betiği başka sistemleri reddeder (deploy/bootstrap-node.sh:52-55).
  • Yöneticinin OpenSSH açık anahtar dosyası (deploy/bootstrap-node.sh:46-51).
  • Düğümde bir PostgreSQL 16 sunucusu. install.sh yalnız PostgreSQL istemcisini kurar (deploy/install.sh:114) ve pg-tune.sh, PostgreSQL 16 yapılandırma dizini yoksa durur (deploy/pg-tune.sh:23-31).
  • Uzak depoda bulunan bir sürüm etiketi ve düğümden o uzak depoya okuma erişimi (deploy/install.sh:47-54, deploy/install.sh:85-90).
  • Üretim için: aynı commit üzerinde staging-ok/<tag> terfi kaydı (deploy/install.sh:101-107).

Adımlar

  1. İşletim sistemini root olarak bir kez hazırlayın. Kaynak: deploy/bootstrap-node.sh:8-23, deploy/bootstrap-node.sh:36-44.

bash bash bootstrap-node.sh --admin <name> --pubkey <public-key-file> --admin-cidr <cidr>

--admin-cidr isteğe bağlıdır; verilmezse SSH bağlantı noktası her adrese açık kalır ve betik bir not yazar (deploy/bootstrap-node.sh:139-145). Betik gözetimsiz güvenlik güncellemelerini açar, saati NTP ile UTC'ye ayarlar, yöneticiyi sudo yetkisi ve anahtarla oluşturur, her ayrıcalıklı oturumu kaydeder, SSH'yi yalnız anahtara geçirir ve güvenlik duvarında yalnız SSH, HTTP ve HTTPS'yi açar (deploy/bootstrap-node.sh:57-149).

  1. Root oturumunu kapatmadan önce anahtarla yeni bir oturum açın. 1. adımdan sonra root girişi ve parolalar kapalıdır (deploy/bootstrap-node.sh:151-154).

  2. Deponun bir kopyasından PostgreSQL'i düğümün belleğine ve işlemci sayısına göre ayarlayın. Betik tek bir yapılandırma dosyası yazar ve PostgreSQL'i yeniden başlatır. Kaynak: deploy/pg-tune.sh:20, deploy/pg-tune.sh:48-69.

bash sudo deploy/pg-tune.sh

  1. deploy/postgres-roles.sql içindeki iki parola yer tutucusunu değiştirin, sonra uygulama rolünü ve yedek rolünü oluşturun. Kaynak: deploy/postgres-roles.sql:1-11. Bkz. PostgreSQL rolleri ve ayarı.

bash psql -U postgres -f deploy/postgres-roles.sql

  1. Kurucuyu etiket, genel ana makine adı ve rolle çalıştırın. Kaynak: deploy/install.sh:11-13.

bash sudo deploy/install.sh --tag <tag> --domain erp.example.com --role staging

Ortam dosyası olmayan bir düğümde betik deploy/env.example dosyasını 0640 kipinde yerine kopyalar ve dosya hâlâ <...> yer tutucuları içerdiği için durur (deploy/install.sh:171-179).

  1. Ortam dosyasındaki her yer tutucu değeri doldurun. Değişkenler yapılandırma başvurusunda listelenir.

  2. Düğümün henüz TLS sertifikası yoksa betiğin yazdığı komutla bir sertifika alın. Kaynak: deploy/install.sh:204-209.

bash certbot certonly --webroot -w /var/www/html -d erp.example.com -m <mailbox> --agree-tos -n

  1. Aynı install.sh komutunu yeniden çalıştırın. Artık sekiz adımın hepsini koşar: sistem paketleri, servis kullanıcısı ve dizinler, etiketteki kod, requirements.lock dosyasından hash'li sanal ortam, ortam dosyası denetimi, nginx sitesi ve cron tablosuyla systemd birimi, önce yedek alınan veritabanı göçü ve hazırlık denetimli başlatma veya yeniden yükleme (deploy/install.sh:26-34, deploy/install.sh:110-261).

  2. Düğüm bir üretim düğümüyse önce geçen staging bataryasını sürüm commit'i üzerinde kaydedin, sonra kurucuyu --role production ile çalıştırın. Kaynak: deploy/install.sh:20-21.

bash git tag -a staging-ok/<tag> <tag> -m "<battery log, date>" git push origin staging-ok/<tag> sudo deploy/install.sh --tag <tag> --domain erp.example.com --role production

  1. Daha sonra yükseltmek için aynı komutu yeni etiketle çalıştırın (deploy/install.sh:13). Betik çalışan servisi yeniden yükler. Ortam dosyası servis başladıktan sonra değiştiyse, birim dosyası değiştiyse veya requirements.lock değiştiyse bunun yerine servisi yeniden başlatır (deploy/install.sh:228-246).

Sonucu doğrulayın

  • Betik Cluster ERP <tag> is live on this <role> node (<domain>). satırıyla biter (deploy/install.sh:261). Bu satırı yalnız /ready beş dakika içinde HTTP 200 döndürdükten ve residency_check 0 koduyla çıktıktan sonra yazar (deploy/install.sh:247-259).
  • Hazırlık yanıtı her arka depoyu pass veya fail ile adlandırır (src/cluster_erp/server/app.py:1476-1504). Bkz. security.txt ve hazırlık.
  • Servis kullanıcısının cron tablosu deploy/cluster-erp.cron işlerini içerir (deploy/install.sh:210). Bkz. zamanlanmış işler ve saklama.

Sorun giderme

Belirti Koddaki neden Çözüm
--tag is required: production runs a tagged release, never a branch tip --tag bayrağı yok (deploy/install.sh:77) Var olan bir sürüm etiketi verin.
production refuses <tag>: no staging-ok/<tag> record Uzak depoda terfi etiketi yok (deploy/install.sh:104-105) Etiketi staging'e kurun, bataryayı koşun, terfi etiketini itin.
staging-ok/<tag> points at ... the promotion record does not belong to this release İki etiket farklı commit'lere çözülüyor (deploy/install.sh:106) Terfi etiketini sürüm commit'ine atın.
this node is recorded as '<role>' ... a node never changes role Rol, kayıtlı rolden farklı (deploy/install.sh:123-125) Düğümü temiz bir imajdan yeniden kurun.
... still contains <...> placeholders; the service is not started with a template Bir değer satırında hâlâ yer tutucu var (deploy/install.sh:177-179) Değeri doldurun ve betiği yeniden çalıştırın.
no certificate yet for <domain> Alan adı için sertifika dosyası yok (deploy/install.sh:204-209) Yazılan certbot komutunu, ardından betiği yeniden çalıştırın.
/ready did not answer 200 within 5 minutes Servis hazır olmadı; betik son günlük satırlarını yazar (deploy/install.sh:254-257) Günlük satırlarını okuyun; bkz. servis ve süreç yöneticisi.
residency_check reported findings Bir ayar beyan edilen ülkeyle çelişiyor (deploy/install.sh:258-259) Beyanı düzeltin; bkz. veri ikameti denetimi.
this script is written for Ubuntu 24.04 Başka bir işletim sistemi (deploy/bootstrap-node.sh:54-55) Bir Ubuntu 24.04 imajı kullanın.
sshd rejected the new configuration; passwords are still on SSH yapılandırma sınaması başarısız (deploy/bootstrap-node.sh:132) Koddan belirlenemedi. Betik yeni yapılandırma etkin olmadan durur.

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
ortam dosyası ENV_FILE deploy/env.example dosyasından kopyalanan ve servisle betiklerin ayarlarını okuduğu düğüm dosyası. ortam dosyası deploy/install.sh:45
servis kullanıcısı SERVICE_USER Çalışma kopyasının sahibi olan ve servisle cron işlerini koşan sistem hesabı. servis kullanıcısı deploy/install.sh:46
varlık damgası cluster_asset_stamp Gönderilen dosyalar değiştiğinde değişen, web uygulamasının varlık adreslerindeki kısa belirteç; sunucu onu dosyaların özeti olarak hesaplar, nginx ise sürüm etiketini alır. varlık damgası deploy/install.sh:197-200

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13