تم كتابة كود Rust الخاص بك. ماذا بعد؟ تحليل كامل لاستراتيجيات النشر
\n\nلقد كتبت تطبيق Rust المثالي. إنه سريع، لا يتعطل، ولا يسرب الذاكرة. ولكن هناك مشكلة: إنه يعمل فقط على حاسوبك المحمول. وأنت تريد أن يراه العالم كله. هل هذا مألوف؟
\n\nنشر تطبيقات Rust هو تلك المرحلة التي يتعثر فيها العديد من المطورين. قد يبدو الأمر بسيطًا: قم بتجميع الملف الثنائي وانطلق. لكن الواقع أكثر تعقيدًا: متغيرات البيئة، المنافذ، التبعيات، الأمان، المراقبة. في هذه المقالة، سنستعرض ثلاثة مسارات رئيسية: VPS الكلاسيكي، Docker الحديث، والمنصات السحابية. ستتعلم ليس فقط "كيف"، ولكن أيضًا "لماذا" يجب اختيار نهج معين لمشروع Rust الخاص بك.
\n\nلماذا Rust مثالي للنشر (ولماذا ليس دائمًا بهذه البساطة)
\n\nRust هو حلم مهندس DevOps. ملف ثنائي ثابت واحد، لا تبعيات وقت تشغيل، استهلاك ضئيل للذاكرة. ولكن هناك فارق بسيط: النهج القياسي "قم بالتجميع والرفع" يعمل فقط في أبسط الحالات.
\n\nلنتخيل أنك تكتب خادم ويب باستخدام actix-web أو axum. يجب أن يقوم تطبيقك بما يلي:
- \n
- التشغيل عند بدء تشغيل النظام \n
- إعادة التشغيل عند التعطل \n
- تسجيل السجلات في مكان مركزي \n
- أن يكون معزولاً عن العمليات الأخرى \n
- التحديث دون توقف \n
وهنا تبدأ المتعة الحقيقية. دعنا نستعرض كل خيار.
\n\nالخيار 1: VPS — الكلاسيكي الذي يعمل
\n\nاختيار الاستضافة وإعداد الخادم
\n\nتطبيقات Rust لا تحتاج إلى خادم قوي. VPS رخيص بمعالج 1 vCPU و 1 جيجابايت رام سيكون كافياً. أوصي بـ DigitalOcean أو Vultr أو Hetzner. قم بتثبيت Ubuntu 22.04 LTS.
\n\nأولاً وقبل كل شيء — الأمان الأساسي:
\n# تحديث النظام\nsudo apt update && sudo apt upgrade -y\n\n# إنشاء مستخدم بدون صلاحيات الجذر\nsudo adduser deployer\nsudo usermod -aG sudo deployer\n\n# إعداد مفاتيح SSH\nssh-copy-id deployer@your-server-ip\n\nتجميع تطبيق Rust للإنتاج
\n\nنقطة رئيسية: يجب التجميع على نفس بنية الخادم، أو استخدام التجميع المتقاطع. أسهل طريقة هي التجميع على الخادم:
\n# تثبيت Rust على الخادم\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env\n\n# استنساخ المستودع\ngit clone https://github.com/your-username/your-project.git\ncd your-project\n\n# التجميع في وضع الإصدار\ncargo build --release\n\nالملف الثنائي موجود في target/release/your-project. الحجم؟ عادةً 5-15 ميجابايت. للمقارنة: تطبيق Node.js مع التبعيات يزن 200+ ميجابايت.
Systemd: لجعل التطبيق يعيش إلى الأبد
\n\nمجرد تشغيل الملف الثنائي فكرة سيئة. عند تعطل الخادم أو إعادة التشغيل، سيتعين عليك الركض وتشغيله يدويًا. قم بإنشاء خدمة systemd:
\nsudo nano /etc/systemd/system/rust-app.service\n\n[Unit]\nDescription=Rust Application\nAfter=network.target\n\n[Service]\nType=simple\nUser=deployer\nWorkingDirectory=/home/deployer/your-project\nExecStart=/home/deployer/your-project/target/release/your-project\nRestart=always\nRestartSec=10\nEnvironment=RUST_LOG=info\nEnvironment=DATABASE_URL=postgres://user:pass@localhost/db\n\n[Install]\nWantedBy=multi-user.target\n\nالآن سيعمل تطبيقك تلقائيًا عند بدء تشغيل النظام وسيعاد تشغيله عند التعطل:
\nsudo systemctl daemon-reload\nsudo systemctl enable rust-app\nsudo systemctl start rust-app\nsudo systemctl status rust-app\n\nالوكيل العكسي: Nginx كطبقة حماية
\n\nعادةً ما يستمع تطبيق Rust على 127.0.0.1:8080. يتولى Nginx إنهاء SSL، والملفات الثابتة، والموازنة:
sudo apt install nginx certbot python3-certbot-nginx\n\n# إعداد الموقع\