ترقية XOOPS
يغطي هذا الدليل ترقية XOOPS من الإصدارات الأقدم إلى أحدث إصدار مع الحفاظ على بيانات التخصيصات الخاصة بك.
معلومات الإصدار
- مستقر: XOOPS 2.5.11
- بيتا: XOOPS 2.7.0 (اختبار)
- مستقبلي: XOOPS 4.0 (قيد التطوير - انظر خريطة الطريق)
قائمة التحقق قبل الترقية
Section titled “قائمة التحقق قبل الترقية”قبل بدء الترقية، تحقق من:
- تم توثيق إصدار XOOPS الحالي
- تم تحديد إصدار XOOPS المستهدف
- تم إكمال النسخة الاحتياطية الكاملة للنظام
- تم التحقق من النسخة الاحتياطية للقاعدة البيانات
- تم تسجيل قائمة الوحدات المثبتة
- تم توثيق التعديلات المخصصة
- بيئة الاختبار متاحة
- تم فحص مسار الترقية (بعض الإصدارات تتخطى الإصدارات الوسيطة)
- تم التحقق من موارد الخادم (مساحة قرص وذاكرة كافية)
- تم تفعيل وضع الصيانة
دليل مسار الترقية
Section titled “دليل مسار الترقية”مسارات ترقية مختلفة حسب الإصدار الحالي:
graph LR A[2.3.x] -->|يتطلب 2.4.x| B[2.4.x] B -->|مباشر أو عبر 2.5.x| C[2.5.x] A -->|عبر 2.4.x| C C -->|مستقر| D[2.5.11] E[2.5.0-2.5.10] -->|مباشر| D D -->|بيتا| F[2.7.0]مهم: لا تتخطَ أبداً الإصدارات الرئيسية. إذا كنت تقوم بالترقية من 2.3.x، قم بالترقية أولاً إلى 2.4.x، ثم إلى 2.5.x.
الخطوة 1: النسخة الاحتياطية الكاملة للنظام
Section titled “الخطوة 1: النسخة الاحتياطية الكاملة للنظام”النسخة الاحتياطية للقاعدة البيانات
Section titled “النسخة الاحتياطية للقاعدة البيانات”استخدم mysqldump لعمل نسخة احتياطية من قاعدة البيانات:
# Full database backupmysqldump -u xoops_user -p xoops_db > /backups/xoops_db_backup_$(date +%Y%m%d_%H%M%S).sql
# Compressed backupmysqldump -u xoops_user -p xoops_db | gzip > /backups/xoops_db_backup_$(date +%Y%m%d_%H%M%S).sql.gzأو باستخدام phpMyAdmin:
- حدد قاعدة بيانات XOOPS الخاصة بك
- انقر على علامة التبويب “تصدير”
- اختر صيغة “SQL”
- حدد “حفظ كملف”
- انقر على “تنفيذ”
تحقق من ملف النسخة الاحتياطية:
# Check backup sizels -lh /backups/xoops_db_backup*.sql
# Verify backup integrity (uncompressed)head -20 /backups/xoops_db_backup_*.sql
# Verify compressed backupzcat /backups/xoops_db_backup_*.sql.gz | head -20النسخة الاحتياطية لنظام الملفات
Section titled “النسخة الاحتياطية لنظام الملفات”عمل نسخة احتياطية من جميع ملفات XOOPS:
# Compressed file backuptar -czf /backups/xoops_files_$(date +%Y%m%d_%H%M%S).tar.gz /var/www/html/xoops
# Uncompressed (faster, requires more disk space)tar -cf /backups/xoops_files_$(date +%Y%m%d_%H%M%S).tar /var/www/html/xoops
# Show backup progresstar -czf /backups/xoops_files_$(date +%Y%m%d_%H%M%S).tar.gz --verbose /var/www/html/xoops | tailتخزين النسخ الاحتياطية بشكل آمن:
# Secure backup storagechmod 600 /backups/xoops_*ls -lah /backups/
# Optional: Copy to remote storagescp /backups/xoops_* user@backup-server:/secure/backups/اختبار استعادة النسخة الاحتياطية
Section titled “اختبار استعادة النسخة الاحتياطية”حرج: اختبر دائماً أن النسخة الاحتياطية الخاصة بك تعمل:
# Verify tar archive contentstar -tzf /backups/xoops_files_*.tar.gz | head -20
# Extract to test locationmkdir /tmp/restore_testcd /tmp/restore_testtar -xzf /backups/xoops_files_*.tar.gz
# Verify key files existls -la xoops/mainfile.phpls -la xoops/install/الخطوة 2: تفعيل وضع الصيانة
Section titled “الخطوة 2: تفعيل وضع الصيانة”منع المستخدمين من الوصول إلى الموقع أثناء الترقية:
الخيار 1: لوحة مسؤول XOOPS
Section titled “الخيار 1: لوحة مسؤول XOOPS”- سجل الدخول إلى لوحة المسؤول
- انتقل إلى System > Maintenance
- فعّل “وضع صيانة الموقع”
- عيّن رسالة الصيانة
- احفظ
الخيار 2: وضع الصيانة اليدوي
Section titled “الخيار 2: وضع الصيانة اليدوي”أنشئ ملف صيانة في جذر الويب:
<!DOCTYPE html><html><head> <title>Under Maintenance</title> <style> body { font-family: Arial; text-align: center; padding: 50px; } h1 { color: #333; } p { color: #666; margin: 20px 0; } </style></head><body> <h1>Site Under Maintenance</h1> <p>We're currently upgrading our site.</p> <p>Expected time: approximately 30 minutes.</p> <p>Thank you for your patience!</p></body></html>قم بتكوين Apache لعرض صفحة الصيانة:
# In .htaccess or vhost configErrorDocument 503 /maintenance.html
# Redirect all traffic to maintenance page<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.100$ # Your IP RewriteRule ^(.*)$ - [R=503,L]</IfModule>الخطوة 3: تحميل الإصدار الجديد
Section titled “الخطوة 3: تحميل الإصدار الجديد”قم بتحميل XOOPS من الموقع الرسمي:
# Download latest versioncd /tmpwget https://xoops.org/download/xoops-2.5.8.zip
# التحقق من المجموع الاختباري (إن وُجد)sha256sum xoops-2.5.8.zip# قارن مع بصمة SHA256 الرسمية
# استخراج إلى موقع مؤقتunzip xoops-2.5.8.zipcd xoops-2.5.8الخطوة 4: تحضير الملفات قبل الترقية
Section titled “الخطوة 4: تحضير الملفات قبل الترقية”تحديد التعديلات المخصصة
Section titled “تحديد التعديلات المخصصة”تحقق من ملفات النواة المخصصة:
# ابحث عن الملفات المعدلة (الملفات ذات mtime أحدث)find /var/www/html/xoops -type f -newer /var/www/html/xoops/install.php
# تحقق من المظاهر المخصصةls /var/www/html/xoops/themes/# لاحظ أي مظاهر مخصصة
# تحقق من الوحدات المخصصةls /var/www/html/xoops/modules/# لاحظ أي وحدات مخصصة أنشأتهاتوثيق الحالة الحالية
Section titled “توثيق الحالة الحالية”أنشئ تقرير ترقية:
cat > /tmp/upgrade_report.txt << EOF=== XOOPS Upgrade Report ===Date: $(date)Current Version: 2.5.6Target Version: 2.5.8
=== Installed Modules ===$(ls /var/www/html/xoops/modules/)
=== Custom Modifications ===[Document any custom theme or module modifications]
=== Themes ===$(ls /var/www/html/xoops/themes/)
=== Plugin Status ===[List any custom code modifications]
EOFالخطوة 5: دمج الملفات الجديدة مع التثبيت الحالي
Section titled “الخطوة 5: دمج الملفات الجديدة مع التثبيت الحالي”الإستراتيجية: الحفاظ على الملفات المخصصة
Section titled “الإستراتيجية: الحفاظ على الملفات المخصصة”استبدل ملفات XOOPS الأساسية لكن احفظ:
mainfile.php(تكوين قاعدة البيانات الخاصة بك)- المظاهر المخصصة في
themes/ - الوحدات المخصصة في
modules/ - تحميلات المستخدم في
uploads/ - بيانات الموقع في
var/
عملية الدمج اليدوي
Section titled “عملية الدمج اليدوي”# Set variablesXOOPS_OLD="/var/www/html/xoops"XOOPS_NEW="/tmp/xoops-2.5.8"BACKUP="/backups/pre-upgrade"
# Create pre-upgrade backup in placemkdir -p $BACKUPcp -r $XOOPS_OLD/* $BACKUP/
# Copy new files (but preserve sensitive files)# Copy everything except protected directoriesrsync -av --exclude='mainfile.php' \ --exclude='modules/custom*' \ --exclude='themes/custom*' \ --exclude='uploads' \ --exclude='var' \ --exclude='cache' \ --exclude='templates_c' \ $XOOPS_NEW/ $XOOPS_OLD/
# التحقق من الملفات الحرجة المحفوظةls -la $XOOPS_OLD/mainfile.phpاستخدام upgrade.php (إن توفر)
Section titled “استخدام upgrade.php (إن توفر)”بعض إصدارات XOOPS تتضمن سكريبت ترقية آلي:
# نسخ الملفات الجديدة مع المثبتcp -r /tmp/xoops-2.5.8/* /var/www/html/xoops/
# تشغيل معالج الترقية# تفضل بزيارة: http://your-domain.com/xoops/upgrade/أذونات الملفات بعد الدمج
Section titled “أذونات الملفات بعد الدمج”استعد الأذونات الصحيحة:
# Set ownershipchown -R www-data:www-data /var/www/html/xoops
# Set directory permissionsfind /var/www/html/xoops -type d -exec chmod 755 {} \;
# Set file permissionsfind /var/www/html/xoops -type f -exec chmod 644 {} \;
# Make writable directorieschmod 777 /var/www/html/xoops/cachechmod 777 /var/www/html/xoops/templates_cchmod 777 /var/www/html/xoops/uploadschmod 777 /var/www/html/xoops/var
# Secure mainfile.phpchmod 644 /var/www/html/xoops/mainfile.phpالخطوة 6: نقل البيانات
Section titled “الخطوة 6: نقل البيانات”مراجعة تغييرات قاعدة البيانات
Section titled “مراجعة تغييرات قاعدة البيانات”تحقق من ملاحظات الإصدار XOOPS لتغييرات هيكل قاعدة البيانات:
# استخراج ومراجعة ملفات نقل SQLfind /tmp/xoops-2.5.8 -name "*.sql" -type f# توثيق جميع ملفات .sql الموجودةتشغيل تحديثات قاعدة البيانات
Section titled “تشغيل تحديثات قاعدة البيانات”الخيار 1: التحديث الآلي (إن توفر)
Section titled “الخيار 1: التحديث الآلي (إن توفر)”استخدم لوحة المسؤول:
- سجل الدخول إلى لوحة المسؤول
- انتقل إلى System > Database
- انقر على “فحص التحديثات”
- استعرض التغييرات المعلقة
- انقر على “تطبيق التحديثات”
الخيار 2: تحديثات قاعدة البيانات اليدوية
Section titled “الخيار 2: تحديثات قاعدة البيانات اليدوية”تنفيذ ملفات نقل SQL:
# Connect to databasemysql -u xoops_user -p xoops_db
# View pending changes (varies by version)SELECT * FROM xoops_config WHERE conf_name LIKE '%version%';
# Run migration scripts manually if neededSOURCE /tmp/xoops-2.5.8/migrate_2.5.6_to_2.5.8.sql;التحقق من قاعدة البيانات
Section titled “التحقق من قاعدة البيانات”تحقق من تكامل قاعدة البيانات بعد التحديث:
-- Check database consistencyREPAIR TABLE xoops_users;OPTIMIZE TABLE xoops_users;
-- Verify key tables existSHOW TABLES LIKE 'xoops_%';
-- Check row counts (should increase or stay same)SELECT COUNT(*) FROM xoops_users;SELECT COUNT(*) FROM xoops_posts;الخطوة 7: التحقق من الترقية
Section titled “الخطوة 7: التحقق من الترقية”فحص الصفحة الرئيسية
Section titled “فحص الصفحة الرئيسية”زر صفحة XOOPS الرئيسية:
http://your-domain.com/xoops/المتوقع: تحميل الصفحة بدون أخطاء، وتعرض بشكل صحيح
فحص لوحة المسؤول
Section titled “فحص لوحة المسؤول”الوصول إلى لوحة المسؤول:
http://your-domain.com/xoops/admin/تحقق من:
- تحميل لوحة المسؤول
- عمل التنقل
- عرض لوحة التحكم بشكل صحيح
- عدم وجود أخطاء قاعدة البيانات في السجلات
التحقق من الوحدات
Section titled “التحقق من الوحدات”تحقق من الوحدات المثبتة:
- انتقل إلى Modules > Modules في لوحة المسؤول
- تحقق من تثبيت جميع الوحدات
- تحقق من أي رسائل خطأ
- فعّل أي وحدات تم تعطيلها
فحص ملف السجل
Section titled “فحص ملف السجل”استعرض سجلات النظام للبحث عن الأخطاء:
# فحص سجل خطأ خادم الويبtail -50 /var/log/apache2/error.log
# فحص سجل خطأ PHPtail -50 /var/log/php_errors.log
# فحص سجل نظام XOOPS (إن توفر)# في لوحة المسؤول: System > Logsاختبار الوظائف الأساسية
Section titled “اختبار الوظائف الأساسية”- تسجيل الدخول / تسجيل الخروج يعمل
- تسجيل المستخدم يعمل
- وظائف تحميل الملفات
- إرسال إشعارات البريد الإلكتروني
- وظيفة البحث تعمل
- وظائف المسؤول تعمل
- وظيفة الوحدات سليمة
الخطوة 8: تنظيف ما بعد الترقية
Section titled “الخطوة 8: تنظيف ما بعد الترقية”إزالة الملفات المؤقتة
Section titled “إزالة الملفات المؤقتة”# إزالة دليل الاستخراجrm -rf /tmp/xoops-2.5.8
# مسح ذاكرة تخزين النموذج (آمن للحذف)rm -rf /var/www/html/xoops/templates_c/*
# مسح ذاكرة تخزين الموقعrm -rf /var/www/html/xoops/cache/*إزالة وضع الصيانة
Section titled “إزالة وضع الصيانة”إعادة تفعيل الوصول العادي للموقع:
# إزالة إعادة توجيه وضع الصيانة من .htaccess# أو حذف ملف maintenance.htmlrm /var/www/html/maintenance.htmlتحديث الوثائق
Section titled “تحديث الوثائق”قم بتحديث ملاحظات الترقية الخاصة بك:
# Document successful upgradecat >> /tmp/upgrade_report.txt << EOF
=== Upgrade Results ===Status: SUCCESSUpgrade Date: $(date)New Version: 2.5.8Duration: [time in minutes]
Post-Upgrade Tests:- [x] Homepage loads- [x] Admin panel accessible- [x] Modules functional- [x] User registration works- [x] Database optimized
EOFاستكشاف أخطاء الترقيات
Section titled “استكشاف أخطاء الترقيات”المشكلة: شاشة بيضاء فارغة بعد الترقية
Section titled “المشكلة: شاشة بيضاء فارغة بعد الترقية”الأعراض: الصفحة الرئيسية لا تعرض شيء
الحل:
# فحص أخطاء PHPtail -f /var/log/apache2/error.log
# تفعيل وضع التصحيح مؤقتاًecho "define('XOOPS_DEBUG', 1);" >> /var/www/html/xoops/mainfile.php
# فحص أذونات الملفاتls -la /var/www/html/xoops/mainfile.php
# استعادة من النسخة الاحتياطية إذا لزم الأمرcp /backups/xoops_files_*.tar.gz /tmp/cd /tmp && tar -xzf xoops_files_*.tar.gzالمشكلة: خطأ في الاتصال بقاعدة البيانات
Section titled “المشكلة: خطأ في الاتصال بقاعدة البيانات”الأعراض: رسالة “لا يمكن الاتصال بقاعدة البيانات”
الحل:
# التحقق من بيانات اعتماد قاعدة البيانات في mainfile.phpgrep -i "database\|host\|user" /var/www/html/xoops/mainfile.php
# اختبار الاتصالmysql -h localhost -u xoops_user -p xoops_db -e "SELECT 1"
# فحص حالة MySQLsystemctl status mysql
# تحقق من وجود قاعدة البياناتmysql -u xoops_user -p -e "SHOW DATABASES" | grep xoopsالمشكلة: لوحة المسؤول غير قابلة للوصول
Section titled “المشكلة: لوحة المسؤول غير قابلة للوصول”الأعراض: لا يمكن الوصول إلى /xoops/admin/
الحل:
# فحص قواعد .htaccesscat /var/www/html/xoops/.htaccess
# التحقق من وجود ملفات المسؤولls -la /var/www/html/xoops/admin/
# فحص تفعيل mod_rewriteapache2ctl -M | grep rewrite
# إعادة تشغيل خادم الويبsystemctl restart apache2المشكلة: الوحدات لا تتحمل
Section titled “المشكلة: الوحدات لا تتحمل”الأعراض: الوحدات تعرض أخطاء أو معطلة
الحل:
# التحقق من وجود ملفات الوحدةls /var/www/html/xoops/modules/
# فحص أذونات الوحدةls -la /var/www/html/xoops/modules/*/
# فحص تكوين الوحدة في قاعدة البياناتmysql -u xoops_user -p xoops_db -e "SELECT * FROM xoops_modules WHERE module_status = 0"
# إعادة تفعيل الوحدات في لوحة المسؤول# System > Modules > انقر على الوحدة > حدّث الحالةالمشكلة: أخطاء رفض الإذن
Section titled “المشكلة: أخطاء رفض الإذن”الأعراض: رسالة “رفض الإذن” عند التحميل أو الحفظ
الحل:
# فحص ملكية الملفls -la /var/www/html/xoops/ | head -20
# إصلاح الملكيةchown -R www-data:www-data /var/www/html/xoops
# إصلاح أذونات المجلدfind /var/www/html/xoops -type d -exec chmod 755 {} \;
# اجعل ذاكرة التخزين المؤقت/التحميلات قابلة للكتابةchmod 777 /var/www/html/xoops/cachechmod 777 /var/www/html/xoops/templates_cchmod 777 /var/www/html/xoops/uploadschmod 777 /var/www/html/xoops/varالمشكلة: تحميل الصفحات ببطء
Section titled “المشكلة: تحميل الصفحات ببطء”الأعراض: تحميل الصفحات بطيئة جداً بعد الترقية
الحل:
# مسح جميع ذاكرة التخزين المؤقتrm -rf /var/www/html/xoops/cache/*rm -rf /var/www/html/xoops/templates_c/*
# تحسين قاعدة البياناتmysql -u xoops_user -p xoops_db << EOFOPTIMIZE TABLE xoops_users;OPTIMIZE TABLE xoops_posts;OPTIMIZE TABLE xoops_config;ANALYZE TABLE xoops_users;EOF
# فحص سجل أخطاء PHP بحثاً عن تحذيراتgrep -i "deprecated\|warning" /var/log/php_errors.log | tail -20
# زيادة حد الذاكرة / وقت التنفيذ PHP مؤقتاً# تحرير php.ini:memory_limit = 256Mmax_execution_time = 300إجراء التراجع
Section titled “إجراء التراجع”إذا فشلت الترقية بشكل حرج، استعد من النسخة الاحتياطية:
استعادة قاعدة البيانات
Section titled “استعادة قاعدة البيانات”# استعادة من النسخة الاحتياطيةmysql -u xoops_user -p xoops_db < /backups/xoops_db_backup_YYYYMMDD_HHMMSS.sql
# أو من النسخة الاحتياطية المضغوطةgunzip < /backups/xoops_db_backup_YYYYMMDD_HHMMSS.sql.gz | mysql -u xoops_user -p xoops_db
# التحقق من الاستعادةmysql -u xoops_user -p xoops_db -e "SELECT COUNT(*) FROM xoops_users"استعادة نظام الملفات
Section titled “استعادة نظام الملفات”# إيقاف خادم الويبsystemctl stop apache2
# إزالة التثبيت الحاليrm -rf /var/www/html/xoops/*
# استخراج النسخة الاحتياطيةcd /var/www/htmltar -xzf /backups/xoops_files_YYYYMMDD_HHMMSS.tar.gz
# إصلاح الأذوناتchown -R www-data:www-data xoops/find xoops -type d -exec chmod 755 {} \;find xoops -type f -exec chmod 644 {} \;chmod 777 xoops/cache xoops/templates_c xoops/uploads xoops/var
# بدء خادم الويبsystemctl start apache2
# التحقق من الاستعادة# تفضل بزيارة http://your-domain.com/xoops/قائمة التحقق من التحقق من الترقية
Section titled “قائمة التحقق من التحقق من الترقية”بعد اكتمال الترقية، تحقق من:
- تم تحديث إصدار XOOPS (تحقق من المسؤول > معلومات النظام)
- تحميل الصفحة الرئيسية بدون أخطاء
- جميع الوحدات تعمل
- تسجيل دخول المستخدم يعمل
- لوحة المسؤول قابلة للوصول
- تحميل الملفات يعمل
- إشعارات البريد الإلكتروني تعمل
- تم التحقق من تكامل قاعدة البيانات
- أذونات الملفات صحيحة
- تم إزالة وضع الصيانة
- النسخ الاحتياطية آمنة ومختبرة
- الأداء مقبول
- SSL/HTTPS يعمل
- لا توجد رسائل خطأ في السجلات
الخطوات التالية
Section titled “الخطوات التالية”بعد الترقية الناجحة:
- قم بتحديث أي وحدات مخصصة إلى أحدث الإصدارات
- استعرض ملاحظات الإصدار للميزات المكتسبة
- فكر في تحسين الأداء
- قم بتحديث إعدادات الأمان
- اختبر جميع الوظائف بدقة
- حافظ على أمان ملفات النسخة الاحتياطية
Tags: #upgrade #maintenance #backup #database-migration
Related Articles:
- ../../06-Publisher-Module/User-Guide/Installation
- Server-Requirements
- ../Configuration/Basic-Configuration
- ../Configuration/Security-Configuration