تاریخچه ایجاد یک ابر خانگی. قسمت 5. به روز رسانی 2019 - PHP 7.2، MariaDB 10.4 و Nextcloud 17

دو سال پیش، من مجموعه‌ای از مقاله‌ها را با موضوع ایجاد وب سرور بر اساس Debian 8 و اجرای سرویس Nextcloud 11 بر روی آن منتشر کردم. چند ماه بعد، اضافه‌ای حاوی اطلاعات «متفاوت» در مورد نصب Nextcloud 13 در Debian ظاهر شد. 9. در پایان سال 2018، من فقط Debian و Nextcloud را به روز کردم و با هیچ مشکل غیرعادی یا جالبی مواجه نشدم. به‌روزرسانی در پایان سال 2019 جالب‌تر بود و ارزش نوشتن را داشت.

تاریخچه ایجاد یک ابر خانگی. قسمت 5. به روز رسانی 2019 - PHP 7.2، MariaDB 10.4 و Nextcloud 17

این مقاله در درجه اول برای کسانی مفید خواهد بود که طبق دستورالعمل های چهار مقاله قبلی، Nextcloud 13 را در Debian 9 "مونتاژ" کردند (من به حدود ده ها نفر از مشترکان خود در مورد Nextcloud سلام می کنم، به ویژه برای کسانی که برای آنها این اولین تجربه آنها در دنیای لینوکس بود). برای کسانی که قصد دارند سرویسی از ابتدا ایجاد کنند، به شما توصیه می‌کنم که چهار مقاله اول این مجموعه را که برای نسخه‌های فعلی Debian 10 و Nextcloud 17 تنظیم شده است، به عنوان مبنایی در نظر بگیرید. برای کاربران باتجربه لینوکس، این مقاله ممکن است کمی طول بکشد. جای بین «بی‌اهمیت و بی‌فایده» و «بد نیست، برگه تقلب همه‌جانبه».

فهرست مندرجات

بخش 1: راه اندازی یک محیط دبیان برای استفاده روزمره
بخش 2: ایجاد یک سرور - راه اندازی LAMP در Debian
قسمت 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 با آماده سازی مقدماتی وب سرور.

ابتدا باید توضیح دهیم که چرا تغییرات اساسی در سمت وب سرور مورد نیاز است. سرور ما بر اساس دبیان 9 فعلی و پشتیبانی شده است. شما به سادگی می توانید سیستم عامل را به روز کنید و تمام اجزای وب سرور حداقل به روز رسانی های امنیتی را دریافت خواهند کرد. اگر به استفاده از Nextcloud 13 ادامه دهیم یا فقط به نسخه 14 آپدیت کنیم، همه چیز عالی خواهد بود. اما Nextcloud 13 دیگر پشتیبانی نمی شود و پشتیبانی از نسخه چهاردهم در راه است. با شروع نسخه 14، Nexctcloud تبدیل پایگاه داده به big int را برای پشتیبانی از رمزگذاری چهار بایتی ارائه می دهد و با MariaDB 15 این بسیار مشکل ساز خواهد بود. Nexctcloud 10.1 به PHP 17-7.1 نیاز دارد، در حالی که Debian 7.3 فقط دارای نسخه 9 در مخازن اصلی خود است. از نظر قابلیت اطمینان و پیش بینی، ارتقا به نسخه ماقبل آخر Nextcloud صحیح تر است، اما بعد از چند سال آنقدر به قابلیت اطمینان این سرویس اطمینان پیدا کردم که می خواستم به آخرین نسخه ارتقا داده و به روز رسانی کنم. وب سرور با ذخیره ای برای آینده. بنابراین، برای به روز رسانی به Nexctcloud 7.0، بهینه است که MariaDB را به نسخه پایدار فعلی 17 و PHP را به 10.4 به روز کنید. دقیقا 7.2 نه 7.2 فعلی. واقعیت این است که Nextcloud 7.4 به PHP 13، 5.6 - 7.0 نیاز دارد و Nexctcloud 7.2 به PHP 17 - 7.1 نیاز دارد. استفاده از PHP 7.3 برای به حداقل رساندن تلاش های به روز رسانی راحت است. نیازی به به روز رسانی سرور آپاچی نیست - فقط به روز رسانی های امنیتی توزیع شده توسط تیم پشتیبانی دبیان را نصب کنید. اما برای به روز رسانی MariaDB و PHP باید مخازن خارجی را به هم متصل کنید.

هنگامی که تازه با Nextcloud آشنا می شدم، آن را "به صورت دستی" به روز کردم: با استفاده از یک فرمان خاص از کنسول، سایت به حالت تعمیر و نگهداری تغییر یافت، بایگانی با نسخه جدید سایت به صورت دستی دانلود و بسته بندی شد، فایل ها به روز شدند و روال به روز رسانی آغاز شد. چنین به روز رسانی معمولاً منجر به نتایج مورد انتظار می شد، اگرچه من در تهیه نسخه پشتیبان از سایت، پایگاه داده و داده های کاربر تنبلی نداشتم. اما به روز رسانی خودکار گاهی اوقات به انواع شگفتی ها منجر می شد. اما این مدت‌ها پیش بود، از آن زمان به بعد ثبات موتور بسیار افزایش یافته است و این بار من به‌روزرسانی‌ها را منحصراً از طریق رابط وب انجام دادم. درست است، من هنوز نتوانستم از خط فرمان دور شوم. در طول یک به‌روزرسانی تکراری برای هر نسخه جدید، هشدارها و اعلان‌های مختلفی در کنترل پنل ظاهر می‌شوند که باید با اجرای معنی‌دار دستورات در خط فرمان «حذف شوند». لازم نیست این کار را انجام دهید - سرویس همچنان کار خواهد کرد. اگرچه این رویکرد اساساً اشتباه است، Nextcloud برای من در این حالت به مدت 3 ماه کار کرد قبل از اینکه من به طور هدفمند با مسائل پیش آمده برخورد کنم.

به روز رسانی Debain

وب سرور را متوقف کنید:

# 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

ما پایگاه داده nextcloud را برای فعال کردن کدگذاری چهار بایتی آماده می کنیم:

# 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