Deploy aplikasi yang sudah Anda miliki dengan erpc worker import

erpc worker import mengambil aplikasi yang sudah Anda miliki, apa adanya. Perintah ini menulis erpc.toml milik aplikasi dan tidak mengubah kodenya sama sekali.
Halaman ini menjelaskan ERPC CLI v0.1.0-rc.4, versi pra-rilis.

Impor dan deploy

Aplikasi tersebut bisa berupa bot yang saat ini berjalan di bawah systemd atau Docker, atau layanan dalam bahasa lain. import membaca direktori aplikasi dan menulis erpc.toml yang digambarkan oleh direktori tersebut. Tidak ada hal lain yang ditulis di aplikasi, tidak ada yang dijalankan di dalamnya, dan kodenya tidak diubah. erpc menambahkan aplikasi ke daftarnya sendiri, seperti yang dilakukan init.
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
  • Package Cargo di-build dengan cargo build --release, sama seperti aplikasi yang dibuat oleh init. Aplikasi dinamai sesuai package kecuali --name menentukan lain, dan --bin memilih biner jika package memiliki beberapa biner. Root workspace ditolak: arahkan import ke package-nya.
  • Biner Linux yang di-build di mana saja, dalam bahasa apa pun, di-deploy dengan cara yang sama menggunakan --binary <PATH>, dan dikirim apa adanya. erpc membaca header-nya dan menolak biner yang tidak dapat dijalankan server: biner macOS atau Windows, skrip, shared library, file yang terpotong, atau arsitektur selain build.target. Biner harus statis, atau di-link ke glibc dengan loader-nya di path yang biasa. Biner ini adalah file milik aplikasi: link dengan nama tersebut yang mengarah keluar dari direktori aplikasi ditolak. Jika biner tidak dapat dipakai, deploy berhenti sebelum server dibeli. Build ulang biner sebelum deploy yang dimaksudkan untuk membawa perubahan.

Yang dibaca import

Di direktoriYang dilakukan import dengannya
.env.example dan file contoh serupaSetiap nama menjadi pengaturan jika memungkinkan: nama yang tidak terdiri dari huruf kapital, angka, dan _ (tidak diawali angka), atau nama yang ditetapkan sendiri oleh erpc atau server (ERPC_WORKER_…, LD_…), tidak dimasukkan. Nama biasa masuk ke [vars] dengan nilai dari contoh. Nama yang tampak seperti secret dari namanya, atau yang nilainya berisi kredensial, disebutkan beserta perintah yang menyimpannya, dan nilainya tidak disalin
.envHanya nama yang dibaca, kecuali nomor port
PORT, API_PORT, EXPOSE dari Dockerfilerun.port, kecuali --port menentukannya. --health <PATH> menambahkan health check di port tersebut
GRPC_ENDPOINT, SHREDS_ENDPOINT, dan pengaturan lain yang disediakan oleh line dataTidak dimasukkan ke [vars]: flag line tersebut pada deploy yang menetapkannya
wallet.json, id.json, *keypair.jsonDisebutkan, beserta erpc worker key import <FILE> --wipe, yang menyimpan kunci di tempat erpc worker membacanya, lalu menghapus bersih file tersebut
File compose dengan Redis atau PostgreSQL[services], sehingga deploy memasangnya di server
Dockerfile, file compose itu sendiriTidak dipakai untuk menjalankan aplikasi: erpc worker menjalankan biner itu sendiri, di bawah unit systemd yang diperketat
import --chain menyebutkan chain tujuan aplikasi, solana secara default.

Cara import membaca direktori

Direktori tersebut mungkin baru Anda clone semenit yang lalu, jadi import membacanya dengan hati-hati.
  • erpc.toml dibuat baru. Jika sudah ada sesuatu di path tersebut, import menolak: perintah ini tidak pernah menimpa file atau menulis melalui link.
  • Perintah ini membaca file biasa di dalam direktori, hingga 1 MiB per file. Link yang mengarah keluar dari direktori, pipe, device, file yang lebih besar, dan file yang bukan UTF-8 tidak dibaca, dan masing-masing disebutkan.
  • Tidak satu pun nilai yang dianggapnya secret disalin. Perintah ini mencari kredensial berdasarkan bentuknya, jadi pemeriksaan ini adalah jaring pengaman, bukan bukti: secret dalam bentuk yang tidak dikenalinya disalin seperti nilai lainnya. Andalah yang perlu membaca erpc.toml sebelum meng-commit-nya.
  • erpc worker check memperingatkan lebih sedikit jenis daripada yang ditahan oleh import. Perintah ini tidak memperingatkan apa pun tentang URL RPC dengan kunci di path-nya, atau tentang frasa pemulihan, di bawah [vars]: simpan keduanya dengan erpc worker secret put.

Yang ditemukan aplikasi Anda di server

  • Pengaturan diterima sebagai variabel lingkungan, baik [vars] maupun [secrets]. Tidak ada .env di server, dan aplikasi yang membaca file .env dengan library dotenv tetap berfungsi.
  • Direktori aplikasi itu sendiri bersifat read-only. File yang ditulisnya disimpan di bawah direktori yang disebut oleh ERPC_WORKER_STATE_DIR (juga HOME miliknya), yang dipertahankan saat deploy dan di-backup oleh erpc worker backup.
  • Kunci trading tiba melalui pipe, bukan di file: 64 byte pada file descriptor yang disebut oleh ERPC_WORKER_KEY_FD, sekali, saat aplikasi mulai berjalan, dengan kunci publik di ERPC_WORKER_PUBKEY. Aplikasi yang membaca file kunci perlu mengubah satu pembacaan tersebut; src/wallet.rs milik template pumpfun menunjukkan caranya.
  • Aplikasi ini terdiri dari satu biner dan file yang dicantumkan di run.files. Apa pun lainnya yang dibukanya saat berjalan harus ada di daftar tersebut.

Langkah Selanjutnya

  • Kunci dan secret: Simpan pengaturan yang ditahan oleh import, serta kunci trading.
  • Firewall dan WAF: Tentukan siapa yang boleh menjangkau aplikasi.
  • Panduan worker: Setiap file yang dibaca oleh import, dan bentuk kredensial yang dicarinya.