---
title: "Triển khai ứng dụng bạn đã có bằng erpc worker import"
description: "erpc worker import đọc thư mục của ứng dụng và ghi erpc.toml, để package Cargo hay binary Linux bằng mọi ngôn ngữ được triển khai mà không sửa code."
canonical: "https://erpc.global/vi/doc/erpc-cli/worker-import/"
locale: "vi"
---

# 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ục | `import` 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 |
| `.env` | Chỉ đọc các tên, ngoại trừ số cổng |
| `PORT`, `API_PORT`, `EXPOSE` của Dockerfile | `run.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ấp | Bị 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 compose | Khô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

- [Khóa và secret](https://erpc.global/vi/doc/erpc-cli/worker-secrets/): Lưu các thiết lập mà `import` đã giữ lại, và khóa trading.
- [Tường lửa và WAF](https://erpc.global/vi/doc/erpc-cli/worker-firewall-and-waf/): Chọn ai được phép truy cập ứng dụng.
- [Hướng dẫn worker](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md): Mọi tệp mà `import` đọc, và các hình dạng thông tin xác thực mà nó tìm.
