نشر تطبيق Rust على VPS: دليل خطوة بخطوة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا Rust مثالي للإنتاج

Rust ليست مجرد لغة برمجة عصرية. مزاياها الرئيسية هي أمان الذاكرة، الأداء العالي، والسلوك المتوقع. عندما تكتب بلغة Rust، تحصل على ملف ثنائي يمكن تشغيله على أي خادم Linux دون الحاجة إلى تثبيت آلة افتراضية أو مفسر. وهذا يجعل نشر تطبيقات Rust على VPS بسيطًا وفعالًا بشكل لا يصدق.

في هذه المقالة، سنشرح العملية الكاملة: بدءًا من بناء المشروع وحتى إعداد بيئة الإنتاج مع Nginx و systemd. ستتعلم كيفية تجميع التطبيق بشكل صحيح، وإعداد التشغيل التلقائي، وضمان الأمان.

تحضير VPS والبيئة

اختيار الخادم وإعداده

لنشر تطبيق Rust، أي VPS يعمل بنظام Linux سيكون مناسبًا (Ubuntu 22.04 LTS هو الخيار الأمثل). الحد الأدنى من المتطلبات: 1 vCPU، 1 غيغابايت RAM، 20 غيغابايت SSD. هذا يكفي لمعظم خدمات الويب بلغة Rust.

أولاً، نتصل بالخادم عبر SSH:

ssh root@your-ip-address

نقوم بتحديث الحزم وتثبيت الأدوات اللازمة:

apt update && apt upgrade -y
apt install curl git build-essential pkg-config libssl-dev -y

تثبيت Rust على الخادم

على الرغم من أننا سنقوم ببناء الملف الثنائي محليًا، إلا أنه من المفيد أحيانًا التجميع مباشرة على الخادم. نقوم بتثبيت Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

نتحقق من التثبيت:

rustc --version
cargo --version

بناء تطبيق Rust للإنتاج

تحسين البناء

للإنتاج، تحتاج إلى بناء التطبيق باستخدام العلم --release. هذا يتضمن تحسينات تقلل من حجم الملف الثنائي وتسرع أداءه. أضف الإعدادات التالية إلى Cargo.toml:

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true
  • opt-level = 3 — أقصى تحسين للسرعة
  • lto = true — تحسين وقت الربط (Link Time Optimization)، يقلل الحجم ويسرع
  • codegen-units = 1 — يزيد وقت البناء ولكنه يحسن التحسين
  • strip = true — يزيل معلومات التصحيح، مما يقلل حجم الملف الثنائي بنسبة 30-50%

بناء الملف الثنائي

ننفذ الأمر على الجهاز المحلي (أو خادم CI):

cargo build --release

الملف الثنائي النهائي موجود في target/release/project-name. يجب أن يكون حجمه صغيرًا — من 2 إلى 10 ميغابايت لتطبيق ويب نموذجي.

نسخ الملف إلى الخادم

نستخدم scp أو rsync لنقل الملف:

scp target/release/your-app root@your-ip-address:/opt/app/

قم بإنشاء الدليل /opt/app على الخادم مسبقًا:

mkdir -p /opt/app
mkdir -p /opt/app/static   # إذا كانت هناك ملفات ثابتة

إعداد systemd للتشغيل التلقائي

إنشاء الخدمة

Systemd هو مدير الخدمات القياسي في Linux. سيقوم تلقائيًا بتشغيل تطبيقك بعد إعادة تشغيل الخادم وسيعيد تشغيله في حالة تعطله.

نقوم بإنشاء ملف الخدمة:

nano /etc/systemd/system/rust-app.service

نضيف التكوين:

[Unit]
Description=Rust Web Application
After=network.target

[Service]
Type=simple
User=www-data
Group=www-data
WorkingDirectory=/opt/app
ExecStart=/opt/app/your-app
Restart=always
RestartSec=5
Environment=RUST_LOG=info
Environment=DATABASE_URL=postgres://user:pass@localhost/dbname

[Install]
WantedBy=multi-user.target

المعلمات الهامة:

  • User — التشغيل كمستخدم غير مميز www-data
  • Restart=always — إعادة التشغيل التلقائي

المدونات

توصيات الكتب