نشر تطبيق C++ على VPS: المستوى المتقدم (دليل خطوة بخطوة)

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

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

ابدأ الدورة

مقدمة: من البناء المحلي إلى إصدار الإنتاج لتطبيق C++

\n

تطوير تطبيق C++ هو نصف المهمة فقط. النصف الثاني، الذي لا يقل أهمية، هو النشر الموثوق والآمن على خادم بعيد (VPS). في هذه المقالة، سنتناول نهجًا متقدمًا لنشر تطبيقات C++ يتجاوز مجرد نسخ الملف الثنائي. ستتعلم كيفية إعداد البناء التلقائي، تشغيل التطبيق كخدمة نظام، تنظيم reverse proxy عبر Nginx، وتطبيق المراقبة الأساسية.

\n

المقالة موجهة للمطورين الذين هم على دراية بالفعل بـ C++ وأساسيات العمل مع Linux. سنستخدم أدوات حديثة: CMake، systemd، Nginx و Git.

\n\n

1. أتمتة البناء وإعداد البيئة على VPS

\n

1.1. تثبيت التبعيات والمترجم

\n

قبل النشر، تأكد من تثبيت مترجم حديث (g++ أو clang) والمكتبات الضرورية على الخادم. لخادم الإنتاج، يُوصى باستخدام الربط الثابت أو الحاويات، لكن في إطار هذه المقالة سنتناول النهج التقليدي.

\n
# تحديث الحزم\nsudo apt update && sudo apt upgrade -y\n\n# تثبيت المترجم وأدوات البناء\nsudo apt install build-essential cmake git -y\n\n# تثبيت المكتبات الإضافية (مثال لـ Boost)\nsudo apt install libboost-all-dev -y
\n\n

1.2. إنشاء سكريبت بناء باستخدام CMake

\n

استخدم CMake لإدارة عملية البناء. سيضمن ذلك قابلية النقل ويبسط التكامل مع CI/CD. مثال لملف CMakeLists.txt:

\n
cmake_minimum_required(VERSION 3.16)\nproject(MyCppApp VERSION 1.0.0 LANGUAGES CXX)\n\nset(CMAKE_CXX_STANDARD 17)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# تحسين لبناء الإنتاج\nset(CMAKE_BUILD_TYPE Release)\n\n# البحث عن المكتبات الخارجية\nfind_package(Boost REQUIRED COMPONENTS system filesystem)\n\n# بناء الملف التنفيذي\nadd_executable(${PROJECT_NAME} src/main.cpp src/server.cpp)\ntarget_link_libraries(${PROJECT_NAME} PRIVATE Boost::system Boost::filesystem pthread)\n\n# تثبيت الملف الثنائي في النظام\ninstall(TARGETS ${PROJECT_NAME} DESTINATION /usr/local/bin)
\n

بعد إنشاء CMakeLists.txt، قم بتنفيذ البناء على الخادم:

\n
cd /opt/myapp\nmkdir build && cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake -j$(nproc)\nsudo make install
\n\n

2. إعداد systemd لإدارة العملية

\n

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

\n\n

2.1. إنشاء ملف الوحدة (unit-file)

\n

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

\n
[Unit]\nDescription=تطبيق C++ للإنتاج\nAfter=network.target\n\n[Service]\nType=simple\nUser=www-data\nGroup=www-data\nWorkingDirectory=/opt/myapp\nExecStart=/usr/local/bin/MyCppApp --config /etc/myapp/config.json\nRestart=always\nRestartSec=5\nStandardOutput=journal\nStandardError=journal\n\n# الأمان\nNoNewPrivileges=true\nProtectSystem=full\nProtectHome=true\n\n[Install]\nWantedBy=multi-user.target
\n\n

2.2. تشغيل الخدمة والتحقق منها

\n
sudo systemctl daemon-reload\nsudo systemctl enable myapp.service\nsudo systemctl start myapp.service\nsudo systemctl status myapp.service
\n

الآن سيتم تشغيل تطبيق C++ الخاص بك تلقائيًا عند بدء تشغيل النظام وإعادة تشغيله في حالة حدوث عطل.

\n\n

3. Reverse proxy عبر Nginx وإعداد HTTPS

\n

الوصول المباشر إلى منفذ التطبيق غير آمن وغير مريح. استخدم Nginx كـ reverse proxy لمعالجة الملفات الثابتة، إنهاء SSL، والموازنة.

\n\n

3.1. تثبيت وإعداد Nginx

\n
sudo apt install nginx certbot python3-certbot-nginx -y
\n

أنشئ التكوين /etc/nginx/sites-available/myapp:

\n
server {\n    listen 80;\n    server_name myapp.example.com;\n\n    location / {\n        pr                

المدونات

توصيات الكتب