Elinizdeki bir uygulamayı erpc worker import ile dağıtın

erpc worker import, elinizde olan bir uygulamayı olduğu gibi alır. Uygulamanın erpc.toml dosyasını yazar ve kodunun hiçbir kısmını değiştirmez.
Bu sayfada bir ön sürüm olan ERPC CLI v0.1.0-rc.4 anlatılır.

İçe aktarın ve dağıtın

Uygulama, bugün systemd veya Docker altında çalışan bir bot ya da başka bir dilde yazılmış bir servis olabilir. import, uygulamanın dizinini okur ve dizinin tarif ettiği erpc.toml dosyasını yazar. Uygulamaya başka hiçbir şey yazılmaz, içindeki hiçbir şey çalıştırılmaz ve kodu değiştirilmez. erpc, init komutunda olduğu gibi, uygulamayı kendi listesine ekler.
bash
cd my-bot                                   # a Cargo package
erpc worker import                          # writes erpc.toml from what is there
erpc worker check                           # what it describes, and what is missing
erpc worker deploy                          # your VPS, or a new hourly one

cd my-go-service && make linux              # any other toolchain: build the Linux binary your way
erpc worker import --binary dist/service --port 8080 --health /healthz
erpc worker deploy
  • Bir Cargo paketi, init ile oluşturulan bir uygulama gibi cargo build --release ile derlenir. --name başka bir ad vermedikçe uygulama, paketin adını alır; paketin birden çok binary'si olduğunda --bin binary'yi seçer. Bir workspace kökü reddedilir: import komutunu pakete yöneltin.
  • Herhangi bir yerde, herhangi bir dilde derlenmiş bir Linux binary'si de --binary <PATH> ile aynı şekilde dağıtılır ve olduğu gibi gönderilir. erpc, binary'nin başlığını okur ve bir sunucunun çalıştıramayacağı bir binary'yi reddeder: bir macOS veya Windows binary'si, bir betik, paylaşılan bir kütüphane, yarıda kesilmiş bir dosya ya da build.target dışında bir mimari için derlenmiş bir binary. Binary statik olmalı ya da yükleyicisi olağan yolda bulunan glibc'ye bağlanmış olmalıdır. Binary uygulamanın bir dosyasıdır: bu ad altında, uygulamanın dizininin dışına çıkan bir link reddedilir. Kullanılamaz bir binary'de dağıtım, bir sunucu satın alınmadan önce durur. Bir değişikliği taşıması gereken bir dağıtımdan önce binary'yi yeniden derleyin.

import neleri okur

Dizindeimport bununla ne yapar
.env.example ve benzeri örnek dosyalarHer ad, bir ayar olabiliyorsa ayar olur: büyük harf, rakam ve _ dışında karakter içeren ya da rakamla başlayan bir ad veya erpc'nin ya da sunucunun kendisinin ayarladığı bir ad (ERPC_WORKER_…, LD_…) dışarıda bırakılır. Düz bir ad, örnekteki değeriyle [vars] içine girer. Adından gizli bir değer gibi görünen ya da değeri bir kimlik bilgisi taşıyan bir ad, onu saklayacak komutla birlikte belirtilir ve değeri kopyalanmaz
.envBağlantı noktası numarası dışında yalnızca adlar okunur
PORT, API_PORT, bir Dockerfile'daki EXPOSE--port vermedikçe run.port. --health <PATH>, bu bağlantı noktasında sağlık kontrolünü ekler
GRPC_ENDPOINT, SHREDS_ENDPOINT ve bir veri hattının sağladığı diğer ayarlar[vars] dışında bırakılır: bunları deploy üzerindeki hattın bayrağı ayarlar
wallet.json, id.json, *keypair.jsonAnahtarı erpc worker'ın okuduğu yerde saklayıp dosyayı silen erpc worker key import <FILE> --wipe komutuyla birlikte belirtilir
Redis veya PostgreSQL içeren bir compose dosyası[services]; böylece deploy bunları sunucuya kurar
Dockerfile, compose dosyasının kendisiUygulamayı çalıştırmak için kullanılmaz: erpc worker binary'yi sıkılaştırılmış bir systemd birimi altında kendisi çalıştırır
import --chain, uygulamanın hangi zincir için olduğunu belirtir; varsayılan solana zinciridir.

import bir dizini nasıl okur

Dizin bir dakika önce klonladığınız bir dizin olabilir; bu yüzden import onu dikkatle okur.
  • erpc.toml yeni oluşturulur. O yolda herhangi bir şey varsa import yazmayı reddeder: hiçbir zaman bir dosyanın üzerine ya da bir link üzerinden yazmaz.
  • Dizinin içindeki normal dosyaları, her biri en fazla 1 MiB olmak üzere okur. Dizinin dışına çıkan bir link, bir pipe, bir aygıt, daha büyük bir dosya ve UTF-8 olmayan bir dosya okunmaz ve her biri bildirilir.
  • Gizli değer saydığı hiçbir değer kopyalanmaz. Kimlik bilgilerini biçimlerine göre arar; bu yüzden bu kontrol bir kanıt değil, bir süzgeçtir: tanımadığı bir biçimdeki gizli değer, herhangi bir değer gibi kopyalanır. erpc.toml dosyasını commit etmeden önce okumak size düşer.
  • erpc worker check, import komutunun geri tuttuğundan daha az türde uyarı verir. [vars] altındaki, yolunda anahtar bulunan bir RPC URL'si ya da bir kurtarma ifadesi hakkında hiçbir şey söylemez: bunları erpc worker secret put ile saklayın.

Uygulamanızın sunucuda bulduğu ortam

  • Ayarlar, [vars] ve [secrets] için aynı şekilde, ortam değişkenleri olarak gelir. Sunucuda .env yoktur ve bir dotenv kütüphanesiyle .env dosyası okuyan bir uygulama çalışmaya devam eder.
  • Uygulamanın kendi dizini salt okunurdur. Yazdığı dosyalar, ERPC_WORKER_STATE_DIR değişkeninin belirttiği dizinin (aynı zamanda HOME dizini) altına gider; bu dizini bir dağıtım korur ve erpc worker backup yedekler.
  • Trading anahtarı bir dosyada değil, bir pipe üzerinden gelir: uygulama başladığında bir kez, ERPC_WORKER_KEY_FD değişkeninin belirttiği dosya tanımlayıcısında 64 bayt olarak gelir; açık anahtar ise ERPC_WORKER_PUBKEY içindedir. Bir anahtar dosyası okuyan bir uygulamada değiştirilecek olan, o tek okumadır; pumpfun şablonunun src/wallet.rs dosyası bunu gösterir.
  • Uygulama tek bir binary ve run.files listesindeki dosyalardan oluşur. Çalışma zamanında açtığı başka her şeyin bu listede olması gerekir.

Sonraki adımlar