Ang kasaysayan ng paglikha ng isang home cloud. Bahagi 5. Update 2019 – PHP 7.2, MariaDB 10.4 at Nextcloud 17

Dalawang taon na ang nakalilipas, naglathala ako ng isang serye ng mga artikulo sa paksa ng paglikha ng isang web server batay sa Debian 8 at pagpapatakbo ng serbisyong Nextcloud 11 dito. Pagkalipas ng ilang buwan, lumitaw ang isang karagdagan na naglalaman ng "differential" na impormasyon sa pag-install ng Nextcloud 13 sa Debian 9. Sa pagtatapos ng 2018, na-update ko lang ang Debian at Nextcloud at hindi nakatagpo ng anumang hindi pangkaraniwang o kawili-wiling mga problema. Ang pag-update sa pagtatapos ng 2019 ay naging mas kawili-wili at sulit na isulat.

Ang kasaysayan ng paglikha ng isang home cloud. Bahagi 5. Update 2019 – PHP 7.2, MariaDB 10.4 at Nextcloud 17

Ang artikulong ito ay pangunahing magiging kapaki-pakinabang sa mga taong, ayon sa mga tagubilin ng nakaraang apat na artikulo, ay "nagtipon" ng Nextcloud 13 sa Debian 9 (kumusta ako sa halos isang dosenang mga tagasuskribi ko sa paksa ng Nextcloud, lalo na sa mga para kanino ito ang kanilang unang karanasan sa mundo ng Linux). Para sa mga nagpaplanong lumikha ng isang serbisyo mula sa simula, ipinapayo ko sa inyo na gawing batayan ang unang apat na artikulo ng seryeng ito, na nababagay para sa kasalukuyang mga bersyon ng Debian 10 at Nextcloud 17. Para sa mga may karanasang gumagamit ng Linux, maaaring tumagal ang artikulo ng ilang lugar sa pagitan ng "walang kuwenta at walang silbi" at "hindi masama, all-in-one-place cheat sheet."

Talaan ng nilalaman

Bahagi 1: Pag-set up ng Debian na kapaligiran para sa pang-araw-araw na paggamit
Bahagi 2: Paglikha ng server - pag-set up ng LAMP sa Debian
Bahagi 3. Paglikha ng personal na cloud - pag-install at pag-configure ng Nextcloud
Bahagi 4. Update 2018 – Debian 9 at Nextcloud 13
Bahagi 5. Update 2019 – PHP 7.2, MariaDB 10.4 at Nextcloud 17

Mabilis na nabigasyon ng kabanata

paunang salita
Pag-update ng Debian
Ina-update ang PHP sa bersyon 7.2
ОбновлСниС MariaDB Π΄ΠΎ вСрсии 10.4
Ina-update ang Nextcloud sa bersyon 17
afterword

paunang salita

Sa una, gusto kong i-install at i-configure ang Nginx sa Debian 10, kung saan ang kasalukuyang Nextcloud 17 ay maaaring mai-install nang walang anumang problema. Ngunit hindi ko mahanap ang oras para sa lahat ng ito, kaya ang artikulong ito ay isang set ng mga tagubilin para sa pag-update Nextcloud mula 13 hanggang sa kasalukuyang bersyon 17 na may paunang paghahanda sa web server.

Una, kailangan nating ipaliwanag kung bakit kailangan ang mga radikal na pagbabago sa panig ng web server. Ang aming server ay batay sa kasalukuyan at sinusuportahang Debian 9. Maaari mo lamang i-update ang operating system at lahat ng bahagi ng web server ay makakatanggap ng hindi bababa sa mga update sa seguridad. Magiging maganda ang lahat kung patuloy naming gagamitin ang Nextcloud 13 o mag-update lamang sa bersyon 14. Ngunit hindi na sinusuportahan ang Nextcloud 13, at malapit na ang suporta para sa ika-14 na bersyon. Simula sa bersyon 15, mag-aalok ang Nexctcloud na i-convert ang database sa malaking int upang suportahan ang apat na byte na pag-encode, at sa MariaDB 10.1 ito ay magiging napakaproblema. Ang Nexctcloud 17 ay nangangailangan ng PHP 7.1-7.3, habang ang Debian 9 ay naglalaman lamang ng bersyon 7.0 sa mga katutubong repositoryo nito. Ito ay magiging mas tama, sa mga tuntunin ng pagiging maaasahan at predictability, upang mag-upgrade sa penultimate na bersyon ng Nextcloud, ngunit pagkatapos ng ilang taon ay naging tiwala ako sa pagiging maaasahan ng serbisyong ito na nais kong mag-upgrade sa pinakabagong bersyon at i-update ang web server na may reserba para sa hinaharap. Samakatuwid, upang mag-update sa Nexctcloud 17, pinakamainam na i-update ang MariaDB sa kasalukuyang stable na bersyon 10.4, at PHP sa 7.2. Eksaktong 7.2, hindi ang kasalukuyang 7.4. Ang katotohanan ay ang Nextcloud 13 ay nangangailangan ng PHP 5.6, 7.0 - 7.2, at Nexctcloud 17 ay nangangailangan ng PHP 7.1 - 7.3. Maginhawang gumamit ng PHP 7.2 upang mabawasan ang mga pagsisikap sa pag-update. Hindi na kailangang i-update ang iyong Apache server - i-install lang ang mga update sa seguridad na ipinamahagi ng Debian support team. Ngunit para sa mga update ng MariaDB at PHP kakailanganin mong ikonekta ang mga panlabas na repositoryo.

Noong kakakilala ko pa lang sa Nextcloud, na-update ko ito "sa pamamagitan ng kamay": gamit ang isang espesyal na utos mula sa console, ang site ay inilipat sa mode ng pagpapanatili, ang archive na may bagong bersyon ng site ay manu-manong na-download at na-unpack, ang mga file ay na-update at sinimulan ang pamamaraan ng pag-update. Ang ganitong pag-update ay karaniwang humantong sa mga inaasahang resulta, kahit na hindi ako tamad sa paggawa ng backup na kopya ng site, database at data ng user. Ngunit ang mga awtomatikong pag-update kung minsan ay humantong sa lahat ng uri ng mga sorpresa. Ngunit iyon ay matagal na ang nakalipas, ang katatagan ng makina ay tumaas nang husto mula noon, at sa pagkakataong ito ay gumawa ako ng mga update nang eksklusibo sa pamamagitan ng web interface. Totoo, hindi pa rin ako makalayo sa command line. Sa panahon ng umuulit na pag-update sa bawat bagong bersyon, iba't ibang babala at notification ang lalabas sa control panel, na kailangang "alisin" sa pamamagitan ng makabuluhang pagpapatupad ng mga command sa command line. Hindi mo kailangang gawin ito - gagana pa rin ang serbisyo. Bagama't mali ang diskarteng ito, nagtrabaho para sa akin ang Nextcloud sa mode na ito sa loob ng 3 buwan bago ko sinasadyang harapin ang mga isyu na lumitaw.

ОбновлСниС Debain

Itigil ang web server:

# service apache2 stop


At ina-update namin:

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


Pagkatapos ng pag-update, maaari mong suriin ang bersyon ng OS at gawin ang isang pagsubok na pag-reboot upang matiyak na ang lahat ay magsisimula nang normal pagkatapos ng pag-update:

# cat /etc/debian_version
# reboot


Ina-update ang PHP sa bersyon 7.2

Itigil ang web server:

# service apache2 stop


Magdagdag ng certificate at PPA key, PHP repository:

# 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


Kapag tinatanggal ang lumang bersyon ng PHP 7.0, tatanggalin din ang phpmyadmin, dahil tatanggalin namin ang "mga bakas" mula sa mga tinanggal na pakete gamit ang autoremove. Hindi ito magdudulot ng anumang partikular na paghihirap, dahil walang mga espesyal na setting na ginawa para sa phpmyadmin at ang pag-install muli nito ay hindi magiging anumang problema.

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


Kinakailangan ang pag-install ng mga module para sa 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


[ Ang text na ito partikular na isinulat para sa site www.habr.com may-akda AlexanderS.
Ang isang link sa pinagmulan ay opsyonal, ngunit ang pagbanggit dito ay lubos na inirerekomenda! ]

Sinusuri namin ang bersyon ng PHP, simulan ang web server at suriin ang pag-andar ng Nextcloud:

# php -v
# service apache2 start


ОбновлСниС MariaDB Π΄ΠΎ вСрсии 10.4

Sa website ng proyekto mayroong kawili-wiling pahina, kung saan kailangan mong ipahiwatig ang iyong OS, ang paglabas nito at piliin ang bersyon ng database. Kapag napili, bubuo ang code para sa pagdaragdag ng repositoryo.

Itigil ang web server:

# service apache2 stop


Magdagdag ng repositoryo at mag-update ng mga pakete:

# 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


Kapag nag-i-install ng MariaDB, tama na aalisin ng manager ng package ang nakaraang bersyon at i-install ang bago, habang papanatilihin ang lahat ng database. Gayunpaman, siyempre inirerekomenda na gumawa ng backup na kopya ng database ng Nextcloud.

I-install ang MariaDB at simulan ang pamamaraan ng pag-update:

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


Matapos ipasok ang password, mag-a-update ang MariaDB at maaari mo itong i-configure sa pamamagitan ng pagsunod mga tagubilin mula sa ikalawang bahagi:

# mysql_secure_installation


Inilunsad namin ang web server at sinusuri ang functionality ng Nextcloud:

# service apache2 start


Ina-update ang Nextcloud sa bersyon 17

Upang simulan ang pag-update, kailangan mong mag-log in sa serbisyo sa ilalim ng isang administratibong account, pumunta sa mga setting at buksan ang "Mga pangkalahatang setting" sa seksyong administratibo. Ipinapakita ng Nextcloud ang naka-install na bersyon at ang bersyon na magagamit para sa pag-update, na maaaring ilunsad sa pamamagitan ng pag-click sa pindutang "Buksan ang window ng pag-update". Sa sandaling sinimulan, ang Nextcloud ay gumagawa ng backup, nagda-download at nagbe-verify ng integridad ng mga file sa pag-update, ino-on ang mode ng pagpapanatili, at ina-update ang mga file. Susunod ang tanong na "Panatilihing aktibo ang mode ng pagpapanatili"? Kailangan mong mag-ingat dito. Ang isang positibong tugon ay iiwan ang site sa mode ng pagpapanatili - ipinapalagay na alam ng administrator kung ano ang susunod na gagawin at gagawin ito nang manu-mano. Kung hindi, gagawin mismo ng Nextcloud ang lahat, kaya i-click ang pindutang "Hindi" upang magpatuloy.

Ang mga pag-update ay isinasagawa nang paulit-ulit. Una, ang Nextcloud 13.x ay ia-update sa pinakabagong bersyon ng 14.x branch. Pagkatapos nito, kakailanganin mong pumunta muli sa admin center at simulan ang pag-update, ngayon mula 14.x hanggang 15.x. At iba pa hanggang sa maabot ang huling posibleng kasalukuyang bersyon. Pagkatapos ng bawat pag-update, sa pahina ng "Mga Pangkalahatang Setting" sa seksyong administratibo, isang listahan ng mga mungkahi at problemang naranasan, pati na rin ang mga rekomendasyon para sa paglutas sa mga ito, ay ipapakita. Sa ibaba ay pag-uusapan natin kung ano ang kailangang gawin pagkatapos ng bawat pag-update.

Bago mag-update

Sa pinakabagong mga bersyon ng Nextcloud, inirerekumenda na paganahin ang PHP OPcache upang mapabuti ang pagganap. Kakaiba na kahit papaano ay napalampas ko ang puntong ito ilang taon na ang nakalilipas, dahil lumitaw ang OPcache sa PHP 5. Sa /etc/php/7.2/apache2/php.ini kailangan mong alisin ang komento at i-edit ang mga sumusunod na parameter:

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


I-update ang 13.x -> 14.x

Pagpapanumbalik ng mga index ng talahanayan:

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


I-update ang 14.x -> 15.x

Inihahanda namin ang nextcloud database para paganahin ang four-byte na encoding:

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


Paganahin ang suporta para sa apat na byte na pag-encode sa Nextcloud:

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


Nagko-convert ng mga talahanayan:

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


Pagbawi ng mga nawalang index ng talahanayan:

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


I-convert ang mga index ng talahanayan sa bigint:

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


I-update ang 15.x -> 16.x

Pagbawi ng mga nawalang index ng talahanayan:

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


I-convert ang mga index ng talahanayan sa bigint:

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


I-update ang 16.x -> 17.x

Walang kinakailangang karagdagang aksyon.

afterword

Kasunod ng mga tagubiling ito, ang isang virtual machine na may Nextcloud 13 ay na-update. Ang paggamit ng isang virtual machine ay nagbibigay-daan sa iyo na huwag gumawa ng mga backup na kopya ng Nextcloud file at ang database nito, dahil sa kaso ng mga problema maaari mong ibalik ang dati nang nai-save na virtual machine file at simulan ang lahat muli. Gayunpaman, hindi ito nalalapat sa folder na may data ng user, na inirerekomenda ko rin na i-back up kasama ang virtual machine na may Nextcloud. Sa aking kaso, ang "cloud" ay ginagamit bilang isang malayuang folder na may awtomatikong pag-bersyon, at sa direksyon ng pag-synchronize na "doon lang", at ang pagkawala ng data na ito ay hindi kritikal para sa akin - Kailangan ko lang gawin ang pag-synchronize muli sa loob ng ilang oras . Sa kabila ng aking pagwawalang-bahala sa panghabambuhay na panuntunang β€œi-save kung sakali,” ang pag-update ay walang anumang problema at lahat ng mga kliyente ay nagsimulang magtrabaho sa Nextcloud 17 nang walang anumang mga problema. Ako ay humanga, Frank Karlitshek - ikaw at ang iyong koponan ay gumagawa ng mahusay trabaho!

Pagkatapos ng pag-update, nagpasya akong i-clear ang data ng gumagamit, na, sa paghusga sa pamamagitan ng mga istatistika, ay sumasakop ng halos dalawang terabytes. Wala akong ganoon karaming data sa pagpapatakbo - karamihan sa volume ay inookupahan ng mga bersyon na file at tinanggal na mga file. Ang problemang naranasan ko ay para sa isang user ay napakaraming natanggal na data (hindi man lang ito isang bagay sa dami, ngunit dami - maraming maliliit na file) na hindi ito maipakita ng Nextcloud sa web interface. Matapos pag-aralan ang manwal ng pangangasiwa, nakakita ako ng solusyon sa pamamagitan ng command line. Marahil ito ay magiging kapaki-pakinabang sa isang tao.

Upang i-clear ang mga tinanggal na file ng user:

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


Upang i-clear ang mga file ng bersyon ng user:

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

Bumalik ka sa simula, sa talaan ng mga nilalaman.

Ang kasaysayan ng paglikha ng isang home cloud. Bahagi 5. Update 2019 – PHP 7.2, MariaDB 10.4 at Nextcloud 17
Bersyon ng teksto: 1.1.1.
Petsa ng unang publikasyon: 15.01.2020/XNUMX/XNUMX.
Petsa ng huling pag-edit: 15.01.2020/XNUMX/XNUMX.

I-update ang log1.1.1 [15-01-2020] Pagwawasto ng mga typo.

1.1.0 [15-01-2020] Inayos ang nexcloud database preparation code para paganahin ang four-byte na encoding.

1.0.0 [15-01-2020] Unang bersyon.

Pinagmulan: www.habr.com