مقدمة: لماذا Rust مثالي للإنتاج وكيفية نشره
Rust هي لغة برمجة أنظمة تجمع بين أداء C++ وأمان الذاكرة. بفضل عدم وجود جامع للقمامة وإمكانية التجميع إلى ملف ثنائي أصلي، فإن تطبيقات Rust مثالية للنشر على VPS (خادم خاص افتراضي). في هذه المقالة، سنمر بدورة النشر الكاملة: من بناء المشروع إلى إعداد الوكيل العكسي والمراقبة. ستتعلم كيفية تحويل تطبيق Rust الخاص بك إلى خدمة إنتاج مستقرة.
1. التحضير: بناء تطبيق Rust لـ VPS
الخطوة الأولى هي بناء ملف ثنائي محسّن. للقيام بذلك، سنحتاج إلى مجموعة أدوات Rust على جهازك المحلي (أو على الخادم).
1.1. التجميع في وضع الإصدار
في جذر المشروع، نفّذ الأمر التالي:
cargo build --releaseسينشئ هذا ملفًا ثنائيًا محسّنًا في مجلد target/release/. بالنسبة لتطبيقات الويب التي تستخدم actix-web أو rocket، قد يتراوح حجم الملف بين 5-15 ميجابايت. لتقليل الحجم، يمكنك إضافة ما يلي إلى Cargo.toml:
[profile.release]opt-level = 3lto = truecodegen-units = 1strip = true1.2. إعداد متغيرات البيئة
أنشئ ملفًا باسم .env.prod لتكوين الإنتاج. مثال لخادم ويب:
DATABASE_URL=postgres://user:pass@localhost:5432/mydbRUST_LOG=infoSERVER_HOST=0.0.0.0SERVER_PORT=80801.3. نقل الملفات إلى VPS
انسخ الملف الثنائي والملفات الثابتة والتكوين إلى الخادم. استخدم scp أو rsync:
scp target/release/myapp user@your-vps-ip:/home/user/app/scp -r static/ user@your-vps-ip:/home/user/app/static/scp .env.prod user@your-vps-ip:/home/user/app/.env2. إعداد الخادم: systemd و Nginx
للتشغيل التلقائي للتطبيق عند إعادة تشغيل الخادم وضمان الأمان، نستخدم systemd و Nginx.
2.1. إنشاء خدمة systemd
أنشئ ملفًا باسم /etc/systemd/system/myapp.service:
[Unit]Description=تطبيق ويب RustAfter=network.target
[Service]User=www-dataWorkingDirectory=/home/user/appExecStart=/home/user/app/myappRestart=alwaysRestartSec=10EnvironmentFile=/home/user/app/.env
[Install]WantedBy=multi-user.targetقم بتفعيل الخدمة:
sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp2.2. إعداد Nginx كوكيل عكسي
سيستمع تطبيق Rust إلى المنفذ 8080 (داخليًا)، بينما سيقبل Nginx الطلبات الخارجية على المنفذ 80/443. أنشئ التكوين /etc/nginx/sites-available/myapp:
server { listen 80; server_name your-domain.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
location /static/ { alias /home/user/app/static/; expires 30d; }}قم بتفعيل الموقع:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx2.3. إعداد HTTPS (اختياري)
قم بتثبيت Certbot واحصل على شهادة SSL:
sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your-domain.com3. إدارة قاعدة البيانات والترحيلات
إذا كان تطبيق Rust الخاص بك يستخدم قاعدة بيانات (مثل PostgreSQL مع diesel أو sqlx)، فقم بإعدادها على VPS.
3.1. تثبيت PostgreSQL
sudo apt updatesudo apt install postgresql postgres