نشر تطبيق C++ على VPS: دليل خطوة بخطوة
تطوير تطبيق C++ هو نصف المهمة فقط. لجعل تطبيقك متاحًا للمستخدمين، يجب نشره على خادم. في هذه المقالة، سنشرح بالتفصيل عملية نشر تطبيق C++ على VPS (خادم خاص افتراضي) يعمل بنظام Linux. ستتعلم كيفية تجهيز الخادم، وترجمة الكود، وإعداد التشغيل التلقائي، وضمان الأمان. المادة موجهة للمطورين الذين لديهم معرفة أساسية بـ C++ و Linux.
1. تجهيز VPS وتثبيت الأدوات اللازمة
قبل تحميل الكود، تأكد من أن VPS الخاص بك جاهز للعمل. سنستخدم Ubuntu 22.04 LTS (أو أحدث) - وهو التوزيع الأكثر استقرارًا وشعبية لخوادم الويب.
1.1. الاتصال بالخادم
بعد شراء VPS، ستحصل على عنوان IP واسم مستخدم (عادةً root) وكلمة مرور. اتصل عبر SSH:
ssh root@عنوان_IP_الخاص_بكلأغراض الأمان، يُوصى بإنشاء مستخدم منفصل وتعطيل تسجيل الدخول عبر root، ولكن للنشر الأول يمكنك العمل كمستخدم root.
1.2. تحديث النظام وتثبيت المترجم
سنقوم بتحديث مدير الحزم وتثبيت الأدوات اللازمة لبناء C++:
apt update && apt upgrade -yapt install build-essential cmake git -y- build-essential — مجموعة من المترجمات (g++, gcc) والأدوات المساعدة.
- cmake — نظام بناء يبسط عملية الترجمة.
- git — لاستنساخ المستودع.
تحقق من التثبيت:
g++ --versioncmake --version2. ترجمة وبناء تطبيق C++
لنفترض أن تطبيقك موجود في مستودع Git. سنقوم باستنساخه على الخادم وبنائه.
2.1. استنساخ المستودع
cd /optgit clone https://github.com/اسم_المستخدم_خاصتك/تطبيقك.gitcd تطبيقكيُوصى بوضع المشاريع في الدليل /opt أو /var/www، وليس في المجلد الرئيسي.
2.2. البناء عبر CMake
سنقوم بإنشاء دليل منفصل للبناء وتشغيل CMake:
mkdir build && cd buildcmake ..make -j$(nproc)العلامة -j$(nproc) تسرّع الترجمة باستخدام جميع أنوية المعالج. بعد البناء الناجح، سيظهر الملف التنفيذي في مجلد build.
2.3. اختبار التطبيق
قم بتشغيل التطبيق يدويًا للتأكد من أنه يعمل:
./تطبيقكإذا كان التطبيق خادم HTTP، فاختبره عبر curl:
curl http://localhost:80803. إعداد التشغيل التلقائي عبر systemd
لكي يعمل التطبيق تلقائيًا عند بدء تشغيل الخادم ويعاد تشغيله في حالة حدوث عطل، سنقوم بإنشاء خدمة systemd.
3.1. إنشاء ملف الوحدة
أنشئ ملفًا باسم /etc/systemd/system/myapp.service:
nano /etc/systemd/system/myapp.serviceألصق المحتوى التالي (استبدل المسارات واسم المستخدم):
[Unit]Description=تطبيق C++ الخاص بيAfter=network.target
[Service]ExecStart=/opt/تطبيقك/build/تطبيقكWorkingDirectory=/opt/تطبيقك/buildRestart=alwaysRestartSec=5User=www-dataGroup=www-data
[Install]WantedBy=multi-user.target- ExecStart — المسار الكامل للملف التنفيذي.
- Restart=always — إعادة التشغيل التلقائي عند التعطل.
- User/Group — يُوصى باستخدام مستخدم غير مميز (مثل
www-data).
3.2. تشغيل الخدمة
systemctl daemon-reloadsystemctl enable myapp.servicesystemctl start myapp.serviceتحقق من الحالة:
sys