انشر تطبيقًا لديك بالفعل باستخدام 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 في Dockerfilerun.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. وأي شيء آخر يفتحه أثناء التشغيل يجب أن يكون في تلك القائمة.

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