Triển khai ứng dụng bạn đã có bằng erpc worker import

erpc worker import tiếp nhận một ứng dụng bạn đã có, giữ nguyên như hiện tại. Nó ghi erpc.toml của ứng dụng và không thay đổi chút code nào của ứng dụng.
Trang này mô tả ERPC CLI v0.1.0-rc.4, một bản pre-release.

Nhập và triển khai

Ứng dụng có thể là một bot hiện đang chạy dưới systemd hoặc Docker, hoặc một dịch vụ viết bằng ngôn ngữ khác. import đọc thư mục của ứng dụng và ghi erpc.toml theo những gì thư mục đó mô tả. Không có gì khác được ghi vào ứng dụng, không có gì trong đó được chạy, và code của nó không bị thay đổi. erpc thêm ứng dụng vào danh sách của chính nó, giống như 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
  • Một package Cargo được build bằng cargo build --release, giống như ứng dụng do init tạo. Ứng dụng được đặt tên theo package, trừ khi --name chỉ định khác, và --bin chọn binary khi package có nhiều binary. Thư mục gốc của workspace sẽ bị từ chối: hãy trỏ import vào package.
  • Một binary Linux được build ở bất kỳ đâu, bằng bất kỳ ngôn ngữ nào, được triển khai theo cùng cách với --binary <PATH>, và được gửi đi nguyên trạng. erpc đọc header của binary và từ chối binary mà server không chạy được: binary macOS hoặc Windows, một script, một thư viện dùng chung, một tệp bị cắt cụt, hoặc binary cho kiến trúc khác với build.target. Binary phải là static, hoặc được liên kết với glibc, với loader nằm ở đường dẫn thông thường. Nó là một tệp của ứng dụng: một link mang tên đó nhưng dẫn ra ngoài thư mục của ứng dụng sẽ bị từ chối. Nếu binary không dùng được, lần triển khai sẽ dừng lại trước khi mua server. Hãy build lại binary trước một lần triển khai cần mang theo thay đổi.

Những gì import đọc

Trong thư mụcimport làm gì với nó
.env.example và các tệp ví dụ tương tựMỗi tên trở thành một thiết lập khi có thể: tên không chỉ gồm chữ in hoa, chữ số và _ (với ký tự đầu không phải chữ số), hoặc tên mà erpc hay server tự đặt (ERPC_WORKER_…, LD_…), sẽ bị bỏ qua. Một tên thông thường được đưa vào [vars] cùng giá trị trong tệp ví dụ. Một tên mà xét theo tên thì trông giống secret, hoặc có giá trị chứa thông tin xác thực, sẽ được nêu kèm lệnh để lưu nó, và giá trị của nó không được sao chép
.envChỉ đọc các tên, ngoại trừ số cổng
PORT, API_PORT, EXPOSE của Dockerfilerun.port, trừ khi --port cung cấp giá trị này. --health <PATH> thêm health check trên cổng đó
GRPC_ENDPOINT, SHREDS_ENDPOINT và các thiết lập khác do một đường truyền dữ liệu cung cấpBị bỏ khỏi [vars]: flag của đường truyền trên deploy sẽ đặt chúng
wallet.json, id.json, *keypair.jsonĐược nêu tên, kèm erpc worker key import <FILE> --wipe, lệnh này lưu khóa vào nơi erpc worker đọc khóa, rồi xóa sạch tệp
Một tệp compose có Redis hoặc PostgreSQL[services], để deploy đặt chúng lên server
Dockerfile, chính tệp composeKhông được dùng để chạy ứng dụng: erpc worker tự chạy binary, dưới một unit systemd đã được gia cố
import --chain chỉ định chain mà ứng dụng hướng tới, mặc định là solana.

Cách import đọc một thư mục

Thư mục đó có thể là thư mục bạn vừa clone một phút trước, nên import đọc nó một cách cẩn thận.
  • erpc.toml được tạo mới. Khi đã có bất cứ thứ gì ở đường dẫn đó, import từ chối: nó không bao giờ ghi đè lên một tệp hay ghi xuyên qua một link.
  • Nó đọc các tệp thông thường bên trong thư mục, tối đa 1 MiB mỗi tệp. Một link dẫn ra ngoài thư mục, một pipe, một thiết bị, một tệp lớn hơn và một tệp không phải UTF-8 sẽ không được đọc, và từng trường hợp đều được thông báo.
  • Không giá trị nào mà nó coi là secret được sao chép. Nó tìm thông tin xác thực theo hình dạng, nên bước kiểm tra này là một tấm lưới, không phải một bằng chứng: một secret có hình dạng mà nó không biết sẽ được sao chép như mọi giá trị khác. erpc.toml là tệp của bạn, hãy đọc nó trước khi commit.
  • erpc worker check cảnh báo ít loại hơn những gì import giữ lại. Nó không nói gì về một URL RPC có khóa trong path, hay về một cụm từ khôi phục, nằm dưới [vars]: hãy lưu những thứ đó bằng erpc worker secret put.

Ứng dụng của bạn có gì trên server

  • Thiết lập đến dưới dạng biến môi trường, cả [vars] lẫn [secrets]. Trên server không có .env, và một ứng dụng đọc tệp .env bằng thư viện dotenv vẫn tiếp tục hoạt động.
  • Thư mục riêng của ứng dụng là chỉ đọc. Các tệp nó ghi sẽ nằm dưới thư mục mà ERPC_WORKER_STATE_DIR chỉ định (cũng là HOME của nó); thư mục này được giữ lại khi triển khai và được erpc worker backup sao lưu.
  • Khóa trading đến qua một pipe, không phải trong một tệp: 64 byte trên file descriptor mà ERPC_WORKER_KEY_FD chỉ định, một lần, khi ứng dụng khởi động, cùng khóa công khai trong ERPC_WORKER_PUBKEY. Một ứng dụng đọc tệp khóa chỉ cần sửa đúng một chỗ đọc đó; src/wallet.rs của template pumpfun cho thấy cách làm.
  • Nó là một binary cùng các tệp mà run.files liệt kê. Mọi thứ khác nó mở khi chạy đều phải có trong danh sách đó.

Bước tiếp theo