Гэрийн үүл үүссэн түүх. 5-р хэсэг. Шинэчлэлт 2019 – PHP 7.2, MariaDB 10.4 болон Nextcloud 17

Хоёр жилийн өмнө би Debian 8 дээр суурилсан вэб сервер үүсгэж, түүн дээр Nextcloud 11 үйлчилгээг ажиллуулах сэдвээр цуврал нийтлэл нийтэлж байсан.Хэдэн сарын дараа Debian дээр Nextcloud 13 суулгах талаар "ялгаатай" мэдээлэл агуулсан нэмэлт гарч ирэв. 9. 2018 оны сүүлээр би Debian болон Nextcloud-г шинэчилсэн бөгөөд ямар нэгэн ер бусын эсвэл сонирхолтой асуудалтай тулгараагүй. 2019 оны сүүлээр гарсан шинэчлэлт аль хэдийн илүү сонирхолтой бөгөөд бичихэд үнэ цэнэтэй байсан.

Гэрийн үүл үүссэн түүх. 5-р хэсэг. Шинэчлэлт 2019 – PHP 7.2, MariaDB 10.4 болон Nextcloud 17

Энэ нийтлэл нь өмнөх дөрвөн нийтлэлийн зааврын дагуу Debian 13 дээр Nextcloud 9-ыг "угсарч" байсан хүмүүст хэрэгтэй байх болно (Би Nextcloud-ийн сэдвээр арав орчим захиалагчдаа, ялангуяа тэдний хувьд сайн уу гэж хэлье. Энэ бол Линуксийн ертөнцөд тэдний анхны туршлага байсан). Үйлчилгээг эхнээс нь бий болгохоор төлөвлөж буй хүмүүст зориулж Debian 10 болон Nextcloud 17-ийн одоогийн хувилбаруудад тохируулсан энэ цувралын эхний дөрвөн нийтлэлийг үндэс болгон авахыг би танд зөвлөж байна. Туршлагатай Линукс хэрэглэгчдийн хувьд нийтлэлд бага зэрэг шаардлагатай байж магадгүй юм. "Өчүүхэн, хэрэггүй" ба "Муу биш, бүгдийг нэг дор цуглуулах" гэсэн хоёрын хооронд байрлуул.

Агуулга

1-р хэсэг: Өдөр тутмын хэрэглээнд зориулж Debian орчинг тохируулах
2-р хэсэг: Сервер үүсгэх - Debian дээр LAMP тохируулах
3-р хэсэг. Хувийн үүл үүсгэх - Nextcloud-г суулгах, тохируулах
4-р хэсэг. Шинэчлэлт 2018 – Debian 9 болон Nextcloud 13
5-р хэсэг. Шинэчлэлт 2019 – PHP 7.2, MariaDB 10.4 болон Nextcloud 17

Бүлгийн хурдан навигаци

Өмнөх үг
Debian шинэчлэл
PHP-г 7.2 хувилбар руу шинэчилж байна
MariaDB-г 10.4 хувилбар болгон сайжруулж байна
Nextcloud-г 17 хувилбар руу шинэчилж байна
Дараах үгс

Өмнөх үг

Эхэндээ би Debian 10 дээр Nginx-ийг суулгаж тохируулахыг хүссэн ба дээр нь одоогийн 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 серверээ шинэчлэх шаардлагагүй - зүгээр л Debian-ийн дэмжлэг үзүүлэх багаас түгээсэн аюулгүй байдлын шинэчлэлтүүдийг суулгаарай. Гэхдээ 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 мөн устах болно, учир нь бид устгасан багцуудын "ул мөр" -ийг autoremove ашиглан арилгах болно. Энэ нь 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.
Сүүлийн засварлах огноо: 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