---
title: "انشر تطبيقًا لديك بالفعل باستخدام erpc worker import"
description: "يقرأ erpc worker import مجلد التطبيق ويكتب ملف erpc.toml الخاص به، فتُنشر حزمة Cargo أو ملف ثنائي لنظام Linux بأي لغة دون تغيير الكود الخاص به."
canonical: "https://erpc.global/ar/doc/erpc-cli/worker-import/"
locale: "ar"
---

# انشر تطبيقًا لديك بالفعل باستخدام erpc worker import

يستقبل `erpc worker import` تطبيقًا لديك بالفعل، كما هو. فهو يكتب ملف `erpc.toml` الخاص بالتطبيق ولا يغيّر شيئًا من الكود الخاص به.

تصف هذه الصفحة ERPC CLI `v0.1.0-rc.4`، وهو إصدار تمهيدي.

## الاستيراد والنشر

يمكن أن يكون التطبيق بوتًا يعمل اليوم تحت systemd أو Docker، أو خدمة بلغة أخرى. يقرأ `import` مجلد التطبيق ويكتب ملف `erpc.toml` الذي يصفه. لا يُكتب أي شيء آخر في التطبيق، ولا يُشغَّل أي شيء فيه، ولا يُغيَّر الكود الخاص به. ويضيف erpc التطبيق إلى قائمته الخاصة، كما يفعل `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
```

- **حزمة Cargo** تُبنى باستخدام `cargo build --release`، كما يُبنى التطبيق الذي ينشئه `init`. ويُسمّى التطبيق باسم الحزمة ما لم يحدد `--name` غير ذلك، ويختار `--bin` الملف الثنائي عندما تحتوي الحزمة على أكثر من واحد. ويُرفض جذر مساحة العمل: وجّه `import` إلى الحزمة.
- **ملف ثنائي لنظام Linux مبني في أي مكان، بأي لغة،** يُنشر بالطريقة نفسها باستخدام `--binary <PATH>`، ويُشحن كما هو. يقرأ erpc ترويسته ويرفض الملف الذي لا يستطيع الخادم تشغيله: ملف ثنائي لنظام macOS أو Windows، أو سكربت، أو مكتبة مشتركة، أو ملف مقطوع، أو ملف لبنية معمارية غير `build.target`. ويجب أن يكون الملف الثنائي مربوطًا ربطًا ثابتًا، أو مربوطًا بـ glibc مع وجود المحمِّل في مساره المعتاد. وهو ملف من ملفات التطبيق: يُرفض الرابط الذي يحمل هذا الاسم ويقود إلى خارج مجلد التطبيق. يتوقف النشر عند ملف ثنائي غير صالح للاستخدام قبل شراء خادم. أعد بناء الملف الثنائي قبل أي نشر يُفترض أن يحمل تغييرًا.

## ما يقرؤه import

| في المجلد | ما يفعله `import` به |
| --- | --- |
| `.env.example` وملفات الأمثلة المشابهة | يصبح كل اسم إعدادًا عندما يمكن أن يكون كذلك: يُستبعد الاسم الذي لا يتكون من أحرف كبيرة وأرقام و`_` (دون أن يبدأ برقم)، أو الاسم الذي يضبطه erpc أو الخادم بنفسه (`ERPC_WORKER_…` و`LD_…`). والاسم العادي يدخل في `[vars]` بقيمة المثال. أما الاسم الذي يبدو سرًّا من اسمه، أو الذي تحمل قيمته بيانات اعتماد، فيُذكر مع الأمر الذي يحفظه، ولا تُنسخ قيمته |
| `.env` | تُقرأ الأسماء فقط، باستثناء رقم المنفذ |
| `PORT` و`API_PORT` و`EXPOSE` في Dockerfile | `run.port`، ما لم يحدده `--port`. ويضيف `--health <PATH>` فحص الصحة على ذلك المنفذ |
| `GRPC_ENDPOINT` و`SHREDS_ENDPOINT` وغيرها من الإعدادات التي يوفرها خط بيانات | تُستبعد من `[vars]`: يضبطها خيار الخط على `deploy` |
| `wallet.json` و`id.json` و`*keypair.json` | تُذكر مع `erpc worker key import <FILE> --wipe`، الذي يحفظ المفتاح حيث يقرؤه erpc worker ويمسح الملف |
| ملف compose يحتوي على Redis أو PostgreSQL | `[services]`، ليضعها `deploy` على الخادم |
| `Dockerfile`، وملف compose نفسه | لا يُستخدمان لتشغيل التطبيق: يشغّل erpc worker الملف الثنائي بنفسه، ضمن وحدة systemd محصنة |

يحدد `import --chain` السلسلة التي صُمم لها التطبيق، والقيمة الافتراضية `solana`.

## كيف يقرأ import مجلدًا

قد يكون المجلد مجلدًا استنسخته قبل دقيقة، لذا يقرؤه `import` بحذر.

- **يُنشأ `erpc.toml` من جديد.** عندما يوجد أي شيء في ذلك المسار، يرفض `import` العمل: فهو لا يكتب أبدًا فوق ملف ولا عبر رابط.
- **يقرأ الملفات العادية داخل المجلد، حتى 1 MiB لكل ملف.** لا تُقرأ الروابط التي تقود إلى خارج المجلد، ولا الأنابيب، ولا ملفات الأجهزة، ولا الملفات الأكبر، ولا الملفات التي ليست بترميز UTF-8، ويُذكر كل منها.
- **لا تُنسخ أي قيمة يعدّها سرًّا.** فهو يبحث عن بيانات الاعتماد بحسب شكلها، لذا فإن الفحص شبكة التقاط وليس برهانًا: السر الذي يأتي بشكل لا يعرفه يُنسخ مثل أي قيمة. و`erpc.toml` ملفك لتقرأه قبل أن تودعه في المستودع.
- **يحذّر `erpc worker check` من أنواع أقل مما يمتنع `import` عن نسخه.** فهو لا يقول شيئًا عن عنوان URL لـ RPC يحمل مفتاحًا في مساره، ولا عن عبارة استرداد، ضمن `[vars]`: احفظ هذه القيم باستخدام `erpc worker secret put`.

## ما يجده تطبيقك على الخادم

- **تصل الإعدادات كمتغيرات بيئة**، `[vars]` و`[secrets]` على حد سواء. لا يوجد `.env` على الخادم، والتطبيق الذي يقرأ ملف `.env` بمكتبة dotenv يستمر في العمل.
- **مجلده الخاص للقراءة فقط.** الملفات التي يكتبها توضع تحت المجلد الذي يحدده `ERPC_WORKER_STATE_DIR` (وهو أيضًا `HOME` الخاص به)، والذي يحتفظ به النشر وينسخه `erpc worker backup` احتياطيًا.
- **يصل مفتاح التداول عبر أنبوب، لا في ملف:** 64 بايتًا على واصف الملف الذي يحدده `ERPC_WORKER_KEY_FD`، مرة واحدة، عند بدء التطبيق، مع المفتاح العام في `ERPC_WORKER_PUBKEY`. والتطبيق الذي يقرأ ملف مفتاح يحتاج إلى تغيير تلك القراءة الواحدة؛ ويوضح ذلك الملف `src/wallet.rs` في قالب pumpfun.
- **التطبيق ملف ثنائي واحد والملفات التي يسردها `run.files`.** وأي شيء آخر يفتحه أثناء التشغيل يجب أن يكون في تلك القائمة.

## الخطوات التالية

- [المفاتيح والأسرار](https://erpc.global/ar/doc/erpc-cli/worker-secrets/): احفظ الإعدادات التي امتنع `import` عن نسخها، ومفتاح التداول.
- [جدار الحماية وWAF](https://erpc.global/ar/doc/erpc-cli/worker-firewall-and-waf/): اختر من يمكنه الوصول إلى التطبيق.
- [دليل الـ worker](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md): كل ملف يقرؤه `import`، وأشكال بيانات الاعتماد التي يبحث عنها.
