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

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

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

ابدأ الدورة

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



غالبًا ما ينتهي التطوير بلغة C++ بمرحلة النشر — نقل التطبيق الجاهز إلى خادم بعيد (VPS). على عكس اللغات المفسرة، تتطلب C++ ترجمة للهندسة المعمارية المستهدفة، وإعداد البيئة بشكل صحيح، وتنظيم التشغيل التلقائي. في هذه المقالة، سنستعرض الدورة الكاملة: من إعداد VPS إلى تشغيل الإصدار الإنتاجي من تطبيق C++ باستخدام systemd و Nginx.



1. إعداد VPS وتثبيت الأدوات اللازمة



قبل النشر، تأكد من أن VPS الخاص بك يعمل بنظام Ubuntu 20.04/22.04 أو Debian 11/12. اتصل عبر SSH:



ssh root@your-server-ip


قم بتحديث قاعدة الحزم وتثبيت المترجم g++، ونظام البناء CMake، ومدير العمليات screen (لحالات التصحيح):



apt update && apt upgrade -yapt install build-essential cmake screen git -y


تحقق من إصدار المترجم:



g++ --version


إذا كنت تستخدم مكتبات (مثل Boost، OpenSSL)، فقم بتثبيتها مسبقًا:



apt install libboost-all-dev libssl-dev -y


2. ترجمة تطبيق C++ لبيئة الخادم



انقل الكود المصدري إلى VPS. أسهل طريقة هي عبر Git:



git clone https://github.com/your-repository/project.gitcd project


أنشئ مجلد البناء وقم بالترجمة مع تحسينات للإنتاج:



mkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemake -j$(nproc)


العلامة -j$(nproc) تسرع عملية البناء باستخدام جميع أنوية المعالج. بعد الترجمة الناجحة، سيظهر ملف تنفيذي (مثل app). تحقق من عمله:



./app


إذا كان التطبيق يستخدم ملفات تكوين أو موارد، فانسخها إلى المجلد بجانب الملف الثنائي أو قم بتعيين المسارات في الكود عبر argv.



3. إعداد التشغيل التلقائي عبر systemd



لكي يبدأ التطبيق عند تشغيل النظام ويعاد تشغيله تلقائيًا عند الأعطال، قم بإنشاء خدمة systemd.



أنشئ ملف /etc/systemd/system/myapp.service:



nano /etc/systemd/system/myapp.service


أدخل المحتوى التالي (استبدل المسارات بمساراتك):



[Unit]Description=My C++ ApplicationAfter=network.target

[Service]ExecStart=/root/project/build/appWorkingDirectory=/root/project/buildRestart=alwaysRestartSec=5User=rootGroup=rootEnvironment="APP_ENV=production"

[Install]WantedBy=multi-user.target


شرح المعاملات:

  • Restart=always — إعادة التشغيل عند أي إنهاء (باستثناء الإيقاف عبر systemctl stop).
  • RestartSec=5 — توقف لمدة 5 ثوانٍ قبل إعادة التشغيل.
  • Environment — تمرير متغيرات البيئة (مثل التكوين).


قم بتفعيل وبدء الخدمة:



systemctl daemon-reloadsystemctl enable myappsystemctl start myapp


تحقق من الحالة:



systemctl status myapp


يجب أن ترى active (running). إذا تعطل التطبيق، سيقوم systemd تلقائيًا بإعادة تشغيله بعد 5 ثوانٍ.



4. إعداد Nginx كوكيل عكسي (اختياري)



إذا كان تطبيق C++ الخاص بك يستمع إلى HTTP (مثل REST API على المنفذ 8080)، فمن المفيد وضع Nginx أمامه لإنهاء SSL، والتوازن، والملفات الثابتة.



قم بتثبيت Nginx:



apt install nginx -y


أنشئ تكوينًا لنطاقك (أو IP) في /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 H

المدونات

توصيات الكتب