Տնային ամպի ստեղծման պատմությունը. Մաս 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

Այս հոդվածը հիմնականում օգտակար կլինի նրանց համար, ովքեր, ըստ նախորդ չորս հոդվածների ցուցումների, «հավաքեցին» Nextcloud 13-ը Debian 9-ում (ես բարև եմ ասում իմ մոտ մեկ տասնյակ բաժանորդներին Nextcloud-ի թեմայով, հատկապես նրանց, ում համար սա նրանց առաջին փորձն էր Linux-ի աշխարհում): Նրանց համար, ովքեր ծրագրում են զրոյից ծառայություն ստեղծել, խորհուրդ եմ տալիս հիմք ընդունել այս շարքի առաջին չորս հոդվածները՝ հարմարեցված Debian 10-ի և Nextcloud 17-ի ընթացիկ տարբերակների համար: Փորձառու Linux օգտագործողների համար հոդվածը կարող է որոշ չափով պահանջել: տեղ «չնչին և անօգուտ» և «վատ չէ, բոլորը մեկ տեղում խաբեության թերթիկի» միջև:

Պահեստավորված նյութեր

Մաս 1. Debian միջավայրի ստեղծում ամենօրյա օգտագործման համար
Մաս 2. Սերվերի ստեղծում՝ LAMP-ի կարգավորում Debian-ում
Մաս 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-րդ տարբերակին
Հետո

Նախաբան

Սկզբում ես ուզում էի տեղադրել և կարգավորել Nginx-ը Debian 10-ում, որի վերևում կարող էր առանց որևէ խնդրի տեղադրվել ներկայիս Nextcloud 17-ը: Բայց ես չկարողացա ժամանակ գտնել այս ամենի համար, ուստի այս հոդվածը թարմացման հրահանգների մի շարք է: Nextcloud-ը 13-ից մինչև ընթացիկ տարբերակ 17՝ վեբ սերվերի նախնական պատրաստմամբ:

Նախ, մենք պետք է բացատրենք, թե ինչու էին արմատական ​​փոփոխություններ պահանջվում վեբ սերվերի կողմից: Մեր սերվերը հիմնված է ընթացիկ և աջակցվող Debian 9-ի վրա: Դուք կարող եք պարզապես թարմացնել օպերացիոն համակարգը, և վեբ սերվերի բոլոր բաղադրիչները կստանան առնվազն անվտանգության թարմացումներ: Ամեն ինչ հիանալի կլիներ, եթե մենք շարունակեինք օգտագործել Nextcloud 13-ը կամ թարմացնեինք միայն 14-րդ տարբերակին: Սկսած 13-րդ տարբերակից՝ Nexctcloud-ը կառաջարկի տվյալների բազան վերածել big int-ի՝ չորս բայթ կոդավորումն աջակցելու համար, իսկ MariaDB 14-ի դեպքում դա շատ խնդրահարույց կլինի: Nexctcloud 15-ը պահանջում է PHP 10.1-17, մինչդեռ Debian 7.1-ը պարունակում է միայն 7.3 տարբերակը իր բնածին պահոցներում: Հուսալիության և կանխատեսելիության առումով ավելի ճիշտ կլինի նորացնել Nextcloud-ի նախավերջին տարբերակին, բայց մի քանի տարի անց ես այնքան վստահ դարձա այս ծառայության հուսալիության մեջ, որ ցանկացա թարմացնել վերջին տարբերակը և թարմացնել վեբ սերվեր ապագայի համար պահուստով: Հետևաբար, Nexctcloud 9-ին թարմացնելու համար օպտիմալ է MariaDB-ն թարմացնել ներկայիս կայուն 7.0 տարբերակին, իսկ PHP-ը՝ 17-ին։ Հենց 10.4-ը, ոչ թե ներկայիս 7.2-ը: Փաստն այն է, որ Nextcloud 7.2-ը պահանջում է PHP 7.4, 13 - 5.6, իսկ Nexctcloud 7.0-ը պահանջում է PHP 7.2 - 17: Հարմար է օգտագործել PHP 7.1՝ թարմացման ջանքերը նվազագույնի հասցնելու համար: Ձեր Apache սերվերը թարմացնելու կարիք չկա. պարզապես տեղադրեք անվտանգության թարմացումները, որոնք տարածվում են Debian-ի աջակցման թիմի կողմից: Բայց MariaDB-ի և PHP-ի թարմացումների համար դուք պետք է միացնեք արտաքին պահոցները:

Երբ ես նոր էի ծանոթանում Nextcloud-ի հետ, թարմացրի այն «ձեռքով». մխիթարիչի հատուկ հրամանի միջոցով կայքը անցավ սպասարկման ռեժիմի, կայքի նոր տարբերակով արխիվը ձեռքով ներբեռնվեց և բացվեց, ֆայլերը։ թարմացվել են և սկսվել է թարմացման ընթացակարգը: Նման թարմացումը սովորաբար բերում էր ակնկալվող արդյունքների, չնայած ես չէի ծուլանում կայքի, տվյալների բազայի և օգտատերերի տվյալների կրկնօրինակը պատրաստելիս։ Սակայն ավտոմատ թարմացումները երբեմն հանգեցնում էին ամենատարբեր անակնկալների: Բայց դա շատ վաղուց էր, այդ ժամանակից ի վեր շարժիչի կայունությունը մեծապես աճել է, և այս անգամ ես թարմացումներ էի կատարել բացառապես վեբ ինտերֆեյսի միջոցով: Ճիշտ է, ես դեռ չկարողացա հեռանալ հրամանի տողից: Յուրաքանչյուր նոր տարբերակի կրկնվող թարմացման ժամանակ կառավարման վահանակում կհայտնվեն տարբեր նախազգուշացումներ և ծանուցումներ, որոնք պետք է «հեռացվեն» հրամանների տողում իմաստալից կերպով կատարելով հրամաններ: Պետք չէ դա անել, ծառայությունը դեռ կաշխատի: Չնայած այս մոտեցումը սկզբունքորեն սխալ է, Nextcloud-ն ինձ համար այս ռեժիմով աշխատեց 3 ամիս, մինչև ես նպատակաուղղված զբաղվեի ծագած խնդիրների հետ:

Debain-ի թարմացում

Դադարեցրեք վեբ սերվերը.

# service apache2 stop


Եվ մենք թարմացնում ենք.

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


Թարմացումից հետո կարող եք ստուգել OS-ի տարբերակը և կատարել փորձնական վերագործարկում՝ համոզվելու համար, որ թարմացումից հետո ամեն ինչ նորմալ է սկսվում.

# 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] Առաջին տարբերակը.

Source: www.habr.com