Sejarah penciptaan awan rumah. Bahagian 5. Kemas Kini 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17

Dua tahun lalu, saya menerbitkan satu siri artikel mengenai topik mencipta pelayan web berdasarkan Debian 8 dan menjalankan perkhidmatan Nextcloud 11 padanya. Beberapa bulan kemudian, penambahan muncul mengandungi maklumat "berbeza" untuk memasang Nextcloud 13 pada Debian 9. Pada penghujung tahun 2018, saya baru sahaja mengemas kini Debian dan Nextcloud dan tidak menghadapi sebarang masalah yang luar biasa atau menarik. Kemas kini pada penghujung tahun 2019 sudah lebih menarik dan berbaloi untuk ditulis.

Sejarah penciptaan awan rumah. Bahagian 5. Kemas Kini 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17

Artikel ini terutamanya akan berguna kepada mereka yang, menurut arahan empat artikel sebelumnya, "mengumpul" Nextcloud 13 pada Debian 9 (Saya mengucapkan salam kepada kira-kira sedozen pelanggan saya mengenai topik Nextcloud, terutamanya kepada mereka yang ini adalah pengalaman pertama mereka dalam dunia Linux). Bagi mereka yang merancang untuk mencipta perkhidmatan dari awal, saya menasihati anda untuk mengambil sebagai asas empat artikel pertama siri ini, diselaraskan untuk versi semasa Debian 10 dan Nextcloud 17. Bagi pengguna Linux yang berpengalaman, artikel itu mungkin memerlukan beberapa letakkan antara "remeh dan tidak berguna" dan "tidak buruk, semua-dalam-satu-tempat helaian tipu."

jadual kandungan

Bahagian 1: Menyediakan persekitaran Debian untuk kegunaan harian
Bahagian 2: Mencipta pelayan - menyediakan LAMP pada Debian
Bahagian 3. Mencipta awan peribadi - memasang dan mengkonfigurasi Nextcloud
Bahagian 4. Kemas Kini 2018 – Debian 9 dan Nextcloud 13
Bahagian 5. Kemas Kini 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17

Navigasi bab pantas

Perutusan
Kemas kini Debian
Mengemas kini PHP kepada versi 7.2
Menaik taraf MariaDB kepada versi 10.4
Mengemas kini Nextcloud kepada versi 17
afterword

Perutusan

Pada mulanya, saya ingin memasang dan mengkonfigurasi Nginx pada Debian 10, di atasnya Nextcloud 17 semasa boleh dipasang tanpa sebarang masalah. Tetapi saya tidak dapat mencari masa untuk semua ini, jadi artikel ini adalah satu set arahan untuk mengemas kini Nextcloud dari 13 hingga versi semasa 17 dengan penyediaan awal pelayan web.

Pertama, kita perlu menjelaskan mengapa perubahan radikal diperlukan pada bahagian pelayan web. Pelayan kami adalah berdasarkan Debian 9 semasa dan disokong. Anda hanya boleh mengemas kini sistem pengendalian dan semua komponen pelayan web akan menerima sekurang-kurangnya kemas kini keselamatan. Segala-galanya akan menjadi hebat jika kami terus menggunakan Nextcloud 13 atau mengemas kini hanya kepada versi 14. Tetapi Nextcloud 13 tidak lagi disokong, dan sokongan untuk versi ke-14 sedang dalam perjalanan keluar. Bermula dengan versi 15, Nexctcloud akan menawarkan untuk menukar pangkalan data kepada int besar untuk menyokong pengekodan empat bait, dan dengan MariaDB 10.1 ini akan menjadi sangat bermasalah. Nexctcloud 17 memerlukan PHP 7.1-7.3, manakala Debian 9 hanya mengandungi versi 7.0 dalam repositori asalnya. Adalah lebih tepat, dari segi kebolehpercayaan dan kebolehramalan, untuk menaik taraf kepada versi kedua terakhir Nextcloud, tetapi selepas beberapa tahun saya menjadi begitu yakin dengan kebolehpercayaan perkhidmatan ini sehingga saya ingin menaik taraf kepada versi terkini dan mengemas kini pelayan web dengan simpanan untuk masa hadapan. Oleh itu, untuk mengemas kini kepada Nexctcloud 17, adalah optimum untuk mengemas kini MariaDB kepada versi stabil semasa 10.4, dan PHP kepada 7.2. Tepat 7.2, bukan 7.4 semasa. Hakikatnya ialah Nextcloud 13 memerlukan PHP 5.6, 7.0 - 7.2, dan Nexctcloud 17 memerlukan PHP 7.1 - 7.3. Ia adalah mudah untuk menggunakan PHP 7.2 untuk meminimumkan usaha kemas kini. Tidak perlu mengemas kini pelayan Apache anda - cuma pasang kemas kini keselamatan yang diedarkan oleh pasukan sokongan Debian. Tetapi untuk kemas kini MariaDB dan PHP anda perlu menyambungkan repositori luaran.

Apabila saya baru berkenalan dengan Nextcloud, saya mengemas kininya "dengan tangan": menggunakan arahan khas dari konsol, tapak itu ditukar kepada mod penyelenggaraan, arkib dengan versi baharu tapak itu dimuat turun dan dibongkar secara manual, fail telah dikemas kini dan prosedur kemas kini telah dimulakan. Kemas kini sedemikian biasanya membawa kepada hasil yang diharapkan, walaupun saya tidak malas membuat salinan sandaran tapak, pangkalan data dan data pengguna. Tetapi kemas kini automatik kadangkala membawa kepada pelbagai jenis kejutan. Tetapi itu sudah lama dahulu, kestabilan enjin telah meningkat dengan pesat sejak itu, dan kali ini saya membuat kemas kini secara eksklusif melalui antara muka web. Benar, saya masih tidak dapat lari daripada baris arahan. Semasa kemas kini berulang kepada setiap versi baharu, pelbagai amaran dan pemberitahuan akan muncul dalam panel kawalan, yang perlu "dialih keluar" dengan melaksanakan perintah secara bermakna pada baris arahan. Anda tidak perlu melakukan ini - perkhidmatan masih akan berfungsi. Walaupun pendekatan ini pada asasnya salah, Nextcloud bekerja untuk saya dalam mod ini selama 3 bulan sebelum saya sengaja menangani isu yang timbul.

Kemas kini Debain

Hentikan pelayan web:

# service apache2 stop


Dan kami mengemas kini:

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


Selepas kemas kini, anda boleh menyemak versi OS dan melakukan but semula ujian untuk memastikan semuanya bermula seperti biasa selepas kemas kini:

# cat /etc/debian_version
# reboot


Mengemas kini PHP kepada versi 7.2

Hentikan pelayan web:

# service apache2 stop


Tambah sijil dan kunci PPA, repositori 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


Apabila memadamkan versi lama PHP 7.0, phpmyadmin juga akan dipadamkan, kerana kami akan mengosongkan "jejak" daripada pakej yang dipadam menggunakan autoremove. Ini tidak akan menyebabkan sebarang kesulitan tertentu, kerana tiada tetapan khas dibuat untuk phpmyadmin dan memasangnya semula tidak akan menjadi masalah.

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


Memasang modul yang diperlukan untuk 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


[ Teks ini ditulis khusus untuk tapak www.habr.com pengarang AlexanderS.
Pautan ke sumber adalah pilihan, tetapi menyebutnya sangat disyorkan! ]

Kami menyemak versi PHP, mulakan pelayan web dan semak fungsi Nextcloud:

# php -v
# service apache2 start


Menaik taraf MariaDB kepada versi 10.4

Di laman web projek ada halaman yang menarik, di mana anda perlu menunjukkan OS anda, keluarannya dan pilih versi pangkalan data. Setelah dipilih, kod untuk menambah repositori akan dihasilkan.

Hentikan pelayan web:

# service apache2 stop


Tambah repositori dan kemas kini pakej:

# 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


Apabila memasang MariaDB, pengurus pakej akan mengalih keluar versi sebelumnya dengan betul dan memasang yang baharu, manakala semua pangkalan data akan dipelihara. Walau bagaimanapun, sudah tentu disyorkan untuk membuat salinan sandaran pangkalan data Nextcloud.

Pasang MariaDB dan mulakan prosedur kemas kini:

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


Selepas memasukkan kata laluan, MariaDB akan mengemas kini dan anda boleh mengkonfigurasinya dengan mengikuti arahan dari bahagian dua:

# mysql_secure_installation


Kami melancarkan pelayan web dan menyemak kefungsian Nextcloud:

# service apache2 start


Mengemas kini Nextcloud kepada versi 17

Untuk memulakan kemas kini, anda perlu log masuk ke perkhidmatan di bawah akaun pentadbiran, pergi ke tetapan dan buka "Tetapan umum" di bahagian pentadbiran. Nextcloud menunjukkan versi yang dipasang dan versi yang tersedia untuk kemas kini, yang boleh dilancarkan dengan mengklik butang "Buka tetingkap kemas kini". Setelah dimulakan, Nextcloud membuat sandaran, memuat turun dan mengesahkan integriti fail kemas kini, menghidupkan mod penyelenggaraan dan mengemas kini fail. Seterusnya timbul soalan "Kekalkan mod penyelenggaraan aktif"? Anda perlu berhati-hati di sini. Respons positif akan meninggalkan tapak dalam mod penyelenggaraan - diandaikan bahawa pentadbir tahu apa yang perlu dilakukan seterusnya dan akan melakukannya secara manual. Jika tidak, Nextcloud akan melakukan semuanya sendiri, jadi klik butang "Tidak" untuk meneruskan.

Kemas kini dilakukan secara berulang. Pertama, Nextcloud 13.x akan dikemas kini kepada versi terkini cawangan 14.x. Selepas ini, anda perlu pergi ke pusat pentadbir sekali lagi dan mulakan kemas kini, sekarang dari 14.x hingga 15.x. Dan seterusnya sehingga versi terkini yang mungkin terakhir dicapai. Selepas setiap kemas kini, pada halaman "Tetapan Umum" dalam bahagian pentadbiran, senarai cadangan dan masalah yang dihadapi, serta cadangan untuk menyelesaikannya, akan dipaparkan. Di bawah ini kita akan bercakap tentang perkara yang perlu dilakukan selepas setiap kemas kini.

Sebelum kemas kini

Pada versi terkini Nextcloud, adalah disyorkan untuk membolehkan PHP OPcache meningkatkan prestasi. Adalah pelik bahawa saya entah bagaimana terlepas perkara ini beberapa tahun yang lalu, kerana OPcache muncul dalam PHP 5. Dalam /etc/php/7.2/apache2/php.ini anda perlu menyahkomen dan mengedit parameter berikut:

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


Kemas kini 13.x -> 14.x

Memulihkan indeks jadual:

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


Kemas kini 14.x -> 15.x

Kami menyediakan pangkalan data nextcloud untuk mendayakan pengekodan empat bait:

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


Dayakan sokongan untuk pengekodan empat bait dalam Nextcloud:

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


Menukar jadual:

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


Memulihkan indeks jadual yang hilang:

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


Tukar indeks jadual kepada bigint:

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


Kemas kini 15.x -> 16.x

Memulihkan indeks jadual yang hilang:

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


Tukar indeks jadual kepada bigint:

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


Kemas kini 16.x -> 17.x

Tiada tindakan tambahan diperlukan.

afterword

Mengikuti arahan ini, mesin maya dengan Nextcloud 13 telah dikemas kini. Menggunakan mesin maya membolehkan anda tidak membuat salinan sandaran fail Nextcloud dan pangkalan datanya, kerana sekiranya berlaku masalah, anda boleh memulangkan fail mesin maya yang disimpan sebelum ini dan mulakan semula sekali lagi. Walau bagaimanapun, ini tidak terpakai pada folder dengan data pengguna, yang saya juga cadangkan untuk membuat sandaran bersama mesin maya dengan Nextcloud. Dalam kes saya, "awan" digunakan sebagai folder jauh dengan versi automatik, dan dengan arah penyegerakan "hanya di sana", dan kehilangan data ini tidak kritikal bagi saya - saya hanya perlu melakukan penyegerakan semula selama beberapa jam . Walaupun saya mengabaikan peraturan "simpan untuk berjaga-jaga" sepanjang hayat, kemas kini berjalan tanpa sebarang masalah dan semua pelanggan mula bekerja dengan Nextcloud 17 tanpa sebarang masalah. Saya kagum, Frank Karlitshek - anda dan pasukan anda melakukan yang terbaik kerja!

Selepas kemas kini, saya memutuskan untuk mengosongkan data pengguna, yang, berdasarkan statistik, menduduki kira-kira dua terabait. Saya tidak mempunyai data operasi sebanyak itu - kebanyakan volum diduduki oleh fail versi dan fail yang dipadamkan. Masalah yang saya hadapi ialah untuk seorang pengguna terdapat begitu banyak data yang dipadam (ia bukan soal volum, tetapi kuantiti - banyak fail kecil) sehingga Nextcloud tidak dapat memaparkannya dalam antara muka web. Selepas mengkaji manual pentadbiran, saya menemui penyelesaian melalui baris arahan. Mungkin ini akan berguna kepada seseorang.

Untuk mengosongkan fail pengguna yang dipadamkan:

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


Untuk mengosongkan fail versi pengguna:

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

Kembali ke permulaan, ke jadual kandungan.

Sejarah penciptaan awan rumah. Bahagian 5. Kemas Kini 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17
Versi teks: 1.1.1.
Tarikh penerbitan pertama: 15.01.2020/XNUMX/XNUMX.
Tarikh akhir suntingan: 15.01.2020/XNUMX/XNUMX.

Kemas kini log1.1.1 [15-01-2020] Pembetulan kesilapan silap.

1.1.0 [15-01-2020] Kod penyediaan pangkalan data nexcloud tetap untuk mendayakan pengekodan empat bait.

1.0.0 [15-01-2020] Versi pertama.

Sumber: www.habr.com