تاريخ إنشاء السحابة المنزلية. الجزء 5. تحديث 2019 – PHP 7.2 وMariaDB 10.4 وNextcloud 17

قبل عامين نشرت سلسلة من المقالات حول موضوع إنشاء خادم ويب يعتمد على دبيان 8 وتشغيل خدمة Nextcloud 11 عليه، وبعد بضعة أشهر ظهرت إضافة تحتوي على معلومات "تفاضلية" حول تثبيت Nextcloud 13 على دبيان 9. في نهاية عام 2018، قمت للتو بتحديث Debian وNextcloud ولم أواجه أي مشكلات غير عادية أو مثيرة للاهتمام. كان التحديث في نهاية عام 2019 أكثر إثارة للاهتمام ويستحق الكتابة عنه.

تاريخ إنشاء السحابة المنزلية. الجزء 5. تحديث 2019 – PHP 7.2 وMariaDB 10.4 وNextcloud 17

ستكون هذه المقالة مفيدة في المقام الأول لأولئك الذين، وفقًا لتعليمات المقالات الأربع السابقة، "قاموا بتجميع" Nextcloud 13 على Debian 9 (أقول مرحبًا لنحو عشرة من المشتركين في موضوع Nextcloud، خاصة لأولئك الذين وكانت هذه أول تجربة لهم في عالم Linux). بالنسبة لأولئك الذين يخططون لإنشاء خدمة من الصفر، أنصحك أن تأخذ المقالات الأربعة الأولى من هذه السلسلة كأساس، معدلة للإصدارات الحالية من Debian 10 وNextcloud 17. بالنسبة لمستخدمي Linux ذوي الخبرة، قد تستغرق المقالة بعض الوقت ضعه بين "تافهة وعديمة الفائدة" و"ليست سيئة، ورقة غش شاملة في مكان واحد".

جدول المحتويات

الجزء 1: إعداد بيئة دبيان للاستخدام اليومي
الجزء 2: إنشاء خادم - إعداد LAMP على دبيان
الجزء 3. إنشاء سحابة شخصية - تثبيت وتكوين Nextcloud
الجزء 4. تحديث 2018 – Debian 9 وNextcloud 13
الجزء 5. تحديث 2019 – PHP 7.2 وMariaDB 10.4 وNextcloud 17

التنقل السريع للفصل

مقدمة
تحديث ديبيان
تحديث PHP إلى الإصدار 7.2
ترقية MariaDB إلى الإصدار 10.4
تحديث Nextcloud إلى الإصدار 17
خاتمة

مقدمة

في البداية أردت تثبيت Nginx وتكوينه على Debian 10، وعلى رأسه يمكن تثبيت Nextcloud 17 الحالي دون أي مشاكل، لكن لم أجد الوقت لكل هذا، لذلك هذه المقالة عبارة عن مجموعة من تعليمات التحديث Nextcloud من الإصدار 13 إلى الإصدار الحالي 17 مع الإعداد الأولي لخادم الويب.

أولاً، نحتاج إلى شرح سبب الحاجة إلى إجراء تغييرات جذرية على جانب خادم الويب. يعتمد خادمنا على Debian 9 الحالي والمدعوم. يمكنك ببساطة تحديث نظام التشغيل وستتلقى جميع مكونات خادم الويب تحديثات أمنية على الأقل. سيكون كل شيء رائعًا إذا واصلنا استخدام Nextcloud 13 أو قمنا بالتحديث إلى الإصدار 14 فقط. لكن Nextcloud 13 لم يعد مدعومًا، ودعم الإصدار 14 في طريقه إلى الانتهاء. بدءًا من الإصدار 15، سيعرض Nexctcloud تحويل قاعدة البيانات إلى Big int لدعم تشفير أربعة بايت، ومع MariaDB 10.1، سيكون هذا مشكلة كبيرة. يتطلب Nexctcloud 17 PHP 7.1-7.3، بينما يحتوي Debian 9 على الإصدار 7.0 فقط في مستودعاته الأصلية. سيكون من الأصح، من حيث الموثوقية والقدرة على التنبؤ، الترقية إلى الإصدار قبل الأخير من Nextcloud، ولكن بعد عامين أصبحت واثقًا جدًا من موثوقية هذه الخدمة لدرجة أنني أردت الترقية إلى الإصدار الأحدث وتحديث خادم الويب مع احتياطي للمستقبل. لذلك، للتحديث إلى Nexctcloud 17، فمن الأمثل تحديث MariaDB إلى الإصدار الثابت الحالي 10.4، وPHP إلى 7.2. بالضبط 7.2 وليس 7.4 الحالي الحقيقة هي أن Nextcloud 13 يتطلب PHP 5.6، 7.0 - 7.2، وNexctcloud 17 يتطلب PHP 7.1 - 7.3. من السهل استخدام PHP 7.2 لتقليل جهود التحديث. ليست هناك حاجة لتحديث خادم Apache الخاص بك - فقط قم بتثبيت التحديثات الأمنية التي يوزعها فريق دعم دبيان. ولكن بالنسبة لتحديثات MariaDB وPHP، سيتعين عليك توصيل المستودعات الخارجية.

عندما تعرفت للتو على Nextcloud، قمت بتحديثه "يدويًا": باستخدام أمر خاص من وحدة التحكم، تم تحويل الموقع إلى وضع الصيانة، وتم تنزيل الأرشيف بالإصدار الجديد من الموقع يدويًا وتفريغه، وتم حفظ الملفات تم تحديثه وبدء إجراء التحديث. عادة ما يؤدي مثل هذا التحديث إلى النتائج المتوقعة، على الرغم من أنني لم أتكاسل في عمل نسخة احتياطية من الموقع وقاعدة البيانات وبيانات المستخدم. لكن التحديثات التلقائية أدت في بعض الأحيان إلى كل أنواع المفاجآت. لكن ذلك كان منذ وقت طويل، وازداد استقرار المحرك بشكل كبير منذ ذلك الحين، وهذه المرة قمت بإجراء التحديثات حصريًا من خلال واجهة الويب. صحيح أنني ما زلت لا أستطيع الابتعاد عن سطر الأوامر. أثناء التحديث التكراري لكل إصدار جديد، ستظهر تحذيرات وإشعارات متنوعة في لوحة التحكم، والتي يجب "إزالتها" عن طريق تنفيذ الأوامر على سطر الأوامر بشكل هادف. ليس عليك القيام بذلك - ستظل الخدمة تعمل. على الرغم من أن هذا النهج خاطئ بشكل أساسي، فقد عمل Nextcloud معي في هذا الوضع لمدة 3 أشهر قبل أن أتعامل بشكل هادف مع المشكلات التي نشأت.

تحديث ديباين

إيقاف خادم الويب:

# service apache2 stop


ونقوم بتحديث:

# apt-get update
# apt-get dist-upgrade


بعد التحديث، يمكنك التحقق من إصدار نظام التشغيل وإجراء اختبار إعادة التشغيل للتأكد من أن كل شيء يبدأ بشكل طبيعي بعد التحديث:

# cat /etc/debian_version
# reboot


تحديث PHP إلى الإصدار 7.2

إيقاف خادم الويب:

# service apache2 stop


إضافة الشهادة ومفاتيح PPA ومستودع PHP:

# apt install ca-certificates apt-transport-https
# wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
# echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list


عند حذف الإصدار القديم من PHP 7.0، سيتم حذف phpmyadmin أيضًا، حيث أننا سنقوم بمسح "الآثار" من الحزم المحذوفة باستخدام الإزالة التلقائية. لن يسبب هذا أي صعوبات خاصة، حيث لم يتم إجراء أي إعدادات خاصة لـ phpmyadmin ولن يكون تثبيته مرة أخرى أي مشاكل.

# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin


تثبيت الوحدات المطلوبة لـ Nextcloud 17:

# apt-get install php7.2-mysql php7.2-curl php7.2-xml php7.2-gd php7.2-json php7.2-mbstring php7.2-zip php7.2-intl
# apt-get install php-memcached php-apcu php-redis php-imagick


[ هذا النص مكتوبة خصيصا للموقع www.habr.com مؤلف الكسندر.
رابط المصدر اختياري، ولكن يوصى بشدة بذكره! ]

نتحقق من إصدار PHP، ونبدأ خادم الويب ونتحقق من وظائف Nextcloud:

# php -v
# service apache2 start


ترقية MariaDB إلى الإصدار 10.4

على موقع المشروع هناك صفحة مثيرة للاهتمام، حيث تحتاج إلى الإشارة إلى نظام التشغيل الخاص بك وإصداره وتحديد إصدار قاعدة البيانات. بمجرد التحديد، سيتم إنشاء رمز إضافة المستودع.

إيقاف خادم الويب:

# service apache2 stop


إضافة مستودع وتحديث الحزم:

# apt-get install software-properties-common dirmngr
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
# add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirror.iweb.com/repo/10.4/debian stretch main'
# apt-get update


عند تثبيت MariaDB، سيقوم مدير الحزم بإزالة الإصدار السابق بشكل صحيح وتثبيت الإصدار الجديد، مع الحفاظ على جميع قواعد البيانات. ومع ذلك، يوصى بالطبع بعمل نسخة احتياطية من قاعدة بيانات Nextcloud.

قم بتثبيت MariaDB وابدأ إجراء التحديث:

# apt-get install mariadb-server
# mysql_upgrade u root -p


بعد إدخال كلمة المرور، سيتم تحديث MariaDB ويمكنك تكوينه من خلال اتباع الخطوات التالية تعليمات من الجزء الثاني:

# mysql_secure_installation


نقوم بتشغيل خادم الويب والتحقق من وظائف Nextcloud:

# service apache2 start


تحديث Nextcloud إلى الإصدار 17

لبدء التحديث، تحتاج إلى تسجيل الدخول إلى الخدمة تحت حساب إداري، والانتقال إلى الإعدادات وفتح "الإعدادات العامة" في القسم الإداري. يعرض Nextcloud الإصدار المثبت والإصدار المتاح للتحديث، والذي يمكن تشغيله بالنقر فوق الزر "فتح نافذة التحديث". بمجرد البدء، يقوم Nextcloud بعمل نسخة احتياطية، وتنزيل ملفات التحديث والتحقق من سلامتها، وتشغيل وضع الصيانة، وتحديث الملفات. بعد ذلك يأتي السؤال "الحفاظ على وضع الصيانة نشطًا"؟ عليك أن تكون حذرا هنا. ستؤدي الاستجابة الإيجابية إلى ترك الموقع في وضع الصيانة - من المفترض أن يعرف المسؤول ما يجب فعله بعد ذلك وسيقوم بذلك يدويًا. بخلاف ذلك، سيقوم Nextcloud بكل شيء بنفسه، لذا انقر فوق الزر "لا" للمتابعة.

يتم تنفيذ التحديثات بشكل متكرر. أولاً، سيتم تحديث Nextcloud 13.x إلى أحدث إصدار من فرع 14.x. بعد ذلك، ستحتاج إلى الذهاب إلى مركز الإدارة مرة أخرى وبدء التحديث، الآن من 14.x إلى 15.x. وهكذا حتى يتم الوصول إلى آخر إصدار حالي ممكن. بعد كل تحديث، في صفحة “الإعدادات العامة” في القسم الإداري، سيتم عرض قائمة بالاقتراحات والمشكلات التي واجهتها بالإضافة إلى توصيات لحلها. أدناه سنتحدث عما يجب القيام به بعد كل تحديث.

قبل التحديث

في أحدث إصدارات Nextcloud، يوصى بتمكين PHP OPcache لتحسين الأداء. من الغريب أنني فاتني هذه النقطة بطريقة أو بأخرى منذ بضع سنوات، منذ ظهور OPcache في PHP 5. في /etc/php/7.2/apache2/php.ini، تحتاج إلى إلغاء التعليق وتحرير المعلمات التالية:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
pcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1


تحديث 13.x -> 14.x

استعادة فهارس الجدول:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


تحديث 14.x -> 15.x

نقوم بإعداد قاعدة البيانات التالية السحابية لتمكين التشفير بأربعة بايت:

# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit


تمكين الدعم للتشفير بأربعة بايت في Nextcloud:

# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"


تحويل الجداول:

# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair


استعادة فهارس الجدول المفقودة:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


تحويل فهارس الجدول إلى bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


تحديث 15.x -> 16.x

استعادة فهارس الجدول المفقودة:

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


تحويل فهارس الجدول إلى bigint:

# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint


تحديث 16.x -> 17.x

لا يلزم اتخاذ أي إجراء إضافي.

خاتمة

باتباع هذه التعليمات، تم تحديث الجهاز الظاهري باستخدام Nextcloud 13. يتيح لك استخدام الجهاز الظاهري عدم عمل نسخ احتياطية من ملفات Nextcloud وقاعدة البيانات الخاصة به، لأنه في حالة حدوث مشكلات، يمكنك ببساطة إرجاع ملف الجهاز الظاهري المحفوظ مسبقًا والبدء من جديد مرة أخرى. ومع ذلك، لا ينطبق هذا على المجلد الذي يحتوي على بيانات المستخدم، والذي أوصي أيضًا بالنسخ الاحتياطي له مع الجهاز الظاهري باستخدام Nextcloud. في حالتي، يتم استخدام "السحابة" كمجلد بعيد مع الإصدار التلقائي، وباتجاه المزامنة "هناك فقط"، ولم يكن فقدان هذه البيانات أمرًا بالغ الأهمية بالنسبة لي - سأضطر فقط إلى إجراء المزامنة مرة أخرى لعدة ساعات . على الرغم من تجاهلي لقاعدة "الحفظ فقط في حالة" مدى الحياة، فقد مر التحديث دون أي مشاكل وبدأ جميع العملاء العمل مع Nextcloud 17 دون أي مشاكل. أنا منبهر، فرانك كارليتشيك - أنت وفريقك تقومون بعمل رائع وظيفة!

بعد التحديث، قررت مسح بيانات المستخدم، والتي، إذا حكمنا من خلال الإحصائيات، احتلت حوالي تيرابايت. لم يكن لدي الكثير من البيانات التشغيلية - فمعظم وحدة التخزين كانت مشغولة بملفات الإصدار والملفات المحذوفة. كانت المشكلة التي واجهتها هي أنه بالنسبة لمستخدم واحد كان هناك الكثير من البيانات المحذوفة (لا يتعلق الأمر حتى بالحجم، بل بالكمية - الكثير من الملفات الصغيرة) بحيث لم يتمكن Nextcloud من عرضها في واجهة الويب. بعد دراسة دليل الإدارة، وجدت الحل عبر سطر الأوامر. ربما سيكون هذا مفيدًا لشخص ما.

لمسح ملفات المستخدم المحذوفة:

# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user


لمسح ملفات إصدار المستخدم:

# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup user

إرجاع إلى البداية، إلى جدول المحتويات.

تاريخ إنشاء السحابة المنزلية. الجزء 5. تحديث 2019 – PHP 7.2 وMariaDB 10.4 وNextcloud 17
النسخة النصية: 1.1.1.
تاريخ النشر الأول: 15.01.2020/XNUMX/XNUMX.
تاريخ التعديل الأخير: 15.01.2020/XNUMX/XNUMX.

سجل التحديث1.1.1 [15-01-2020] تصحيح الأخطاء المطبعية.

1.1.0 [15-01-2020] تم إصلاح كود إعداد قاعدة بيانات nexcloud لتمكين التشفير بأربعة بايت.

1.0.0 [15-01-2020] الإصدار الأول.

المصدر: www.habr.com