Sejarah penciptaan cloud rumah. Bagian 5. Pembaruan 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17

Dua tahun lalu, saya menerbitkan serangkaian artikel tentang topik membuat server web berdasarkan Debian 8 dan menjalankan layanan Nextcloud 11. Beberapa bulan kemudian, muncul tambahan yang berisi informasi "diferensial" tentang cara menginstal Nextcloud 13 di Debian 9. Di penghujung tahun 2018, saya baru saja mengupdate Debian dan Nextcloud dan tidak menemui masalah yang tidak biasa atau menarik. Update di penghujung tahun 2019 ini pun sudah semakin menarik dan layak untuk ditulis.

Sejarah penciptaan cloud rumah. Bagian 5. Pembaruan 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17

Artikel ini terutama akan bermanfaat bagi mereka yang, sesuai dengan instruksi dari empat artikel sebelumnya, “merakit” Nextcloud 13 di Debian 9 (Saya menyapa sekitar selusin pelanggan saya tentang topik Nextcloud, terutama bagi mereka yang ini adalah pengalaman pertama mereka di dunia Linux). Bagi mereka yang berencana membuat layanan dari awal, saya menyarankan Anda untuk mengambil empat artikel pertama dari seri ini sebagai dasar, disesuaikan dengan versi Debian 10 dan Nextcloud 17 saat ini. Untuk pengguna Linux berpengalaman, artikel ini mungkin memerlukan beberapa waktu. tempatkan di antara “lembar contekan yang sepele dan tidak berguna” dan “lembar contekan yang lumayan dan lengkap”.

daftar isi

Bagian 1: Menyiapkan lingkungan Debian untuk penggunaan sehari-hari
Bagian 2: Membuat server - menyiapkan LAMP di Debian
Bagian 3. Membuat cloud pribadi - menginstal dan mengkonfigurasi Nextcloud
Bagian 4. Pembaruan 2018 – Debian 9 dan Nextcloud 13
Bagian 5. Pembaruan 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17

Navigasi bab cepat

kata pengantar
pembaruan Debian
Memperbarui PHP ke versi 7.2
Memutakhirkan MariaDB ke versi 10.4
Memperbarui Nextcloud ke versi 17
penutup

kata pengantar

Awalnya saya ingin menginstal dan mengkonfigurasi Nginx di Debian 10, yang di atasnya Nextcloud 17 saat ini dapat diinstal tanpa masalah, tetapi saya tidak dapat menemukan waktu untuk semua ini, jadi artikel ini adalah kumpulan instruksi untuk memperbarui Nextcloud dari 13 ke versi saat ini 17 dengan persiapan awal server web.

Pertama, kita perlu menjelaskan mengapa perubahan radikal diperlukan di sisi server web. Server kami didasarkan pada Debian 9 saat ini dan didukung. Anda cukup memperbarui sistem operasi dan semua komponen server web akan menerima setidaknya pembaruan keamanan. Semuanya akan baik-baik saja jika kami terus menggunakan Nextcloud 13 atau memperbarui hanya ke versi 14. Namun Nextcloud 13 tidak lagi didukung, dan dukungan untuk versi ke-14 akan segera dihentikan. Mulai dari versi 15, Nexctcloud akan menawarkan untuk mengonversi database menjadi big int untuk mendukung pengkodean empat byte, dan dengan MariaDB 10.1 ini akan sangat bermasalah. Nextcloud 17 memerlukan PHP 7.1-7.3, sedangkan Debian 9 hanya berisi versi 7.0 di repositori aslinya. Akan lebih tepat, dalam hal keandalan dan prediktabilitas, untuk meningkatkan ke versi kedua dari belakang Nextcloud, tetapi setelah beberapa tahun saya menjadi begitu yakin dengan keandalan layanan ini sehingga saya ingin meningkatkan ke versi terbaru dan memperbarui server web dengan cadangan untuk masa depan. Oleh karena itu, untuk memperbarui ke Nexctcloud 17, yang terbaik adalah memperbarui MariaDB ke versi stabil saat ini 10.4, dan PHP ke 7.2. Tepatnya 7.2, bukan 7.4 saat ini. Faktanya adalah Nextcloud 13 membutuhkan PHP 5.6, 7.0 - 7.2, dan Nextcloud 17 membutuhkan PHP 7.1 - 7.3. Lebih mudah menggunakan PHP 7.2 untuk meminimalkan upaya pembaruan. Tidak perlu memperbarui server Apache Anda - cukup instal pembaruan keamanan yang didistribusikan oleh tim dukungan Debian. Namun untuk pembaruan MariaDB dan PHP Anda harus menghubungkan repositori eksternal.

Ketika saya baru mengenal Nextcloud, saya memperbaruinya “dengan tangan”: menggunakan perintah khusus dari konsol, situs dialihkan ke mode pemeliharaan, arsip dengan versi baru situs diunduh dan dibongkar secara manual, file-file tersebut telah diperbarui dan prosedur pembaruan dimulai. Pembaruan seperti itu biasanya membuahkan hasil yang diharapkan, meskipun saya tidak malas membuat salinan cadangan situs, database, dan data pengguna. Namun pembaruan otomatis terkadang menimbulkan berbagai kejutan. Tapi itu sudah lama sekali, stabilitas mesin telah meningkat pesat sejak saat itu, dan kali ini saya melakukan pembaruan secara eksklusif melalui antarmuka web. Benar, saya masih tidak bisa lepas dari baris perintah. Selama pembaruan berulang untuk setiap versi baru, berbagai peringatan dan pemberitahuan akan muncul di panel kontrol, yang perlu "dihapus" dengan menjalankan perintah pada baris perintah secara bermakna. Anda tidak perlu melakukan ini - layanan akan tetap berfungsi. Meskipun pendekatan ini pada dasarnya salah, Nextcloud bekerja untuk saya dalam mode ini selama 3 bulan sebelum saya dengan sengaja mengatasi masalah yang muncul.

Debain pembaruan

Hentikan server web:

# service apache2 stop


Dan kami memperbarui:

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


Setelah pembaruan, Anda dapat memeriksa versi OS dan melakukan tes reboot untuk memastikan semuanya dimulai normal setelah pembaruan:

# cat /etc/debian_version
# reboot


Memperbarui PHP ke versi 7.2

Hentikan server web:

# service apache2 stop


Tambahkan sertifikat 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


Saat menghapus PHP 7.0 versi lama, phpmyadmin juga akan terhapus, karena kita akan menghapus “jejak” dari paket yang terhapus menggunakan autoremove. Ini tidak akan menimbulkan kesulitan khusus, karena tidak ada pengaturan khusus yang dibuat untuk phpmyadmin dan menginstalnya kembali tidak akan menimbulkan masalah.

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


Menginstal 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 situs tersebut www.habr.com Pengarang AlexanderS.
Tautan ke sumbernya bersifat opsional, tetapi sangat disarankan untuk menyebutkannya! ]

Kami memeriksa versi PHP, memulai server web dan memeriksa fungsionalitas Nextcloud:

# php -v
# service apache2 start


Memutakhirkan MariaDB ke versi 10.4

Di situs proyek ada halaman yang menarik, di mana Anda perlu menunjukkan OS Anda, rilisnya dan memilih versi database. Setelah dipilih, kode untuk menambahkan repositori akan dibuat.

Hentikan server web:

# service apache2 stop


Tambahkan repositori dan perbarui paket:

# 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


Saat menginstal MariaDB, manajer paket akan menghapus versi sebelumnya dengan benar dan menginstal yang baru, sementara semua database akan dipertahankan. Namun tentu saja disarankan untuk membuat salinan cadangan database Nextcloud.

Instal MariaDB dan mulai prosedur pembaruan:

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


Setelah memasukkan kata sandi, MariaDB akan memperbarui dan Anda dapat mengkonfigurasinya dengan mengikuti instruksi dari bagian kedua:

# mysql_secure_installation


Kami meluncurkan server web dan memeriksa fungsionalitas Nextcloud:

# service apache2 start


Memperbarui Nextcloud ke versi 17

Untuk memulai pembaruan, Anda harus masuk ke layanan dengan akun administratif, buka pengaturan dan buka "Pengaturan umum" di bagian administratif. Nextcloud menunjukkan versi yang diinstal dan versi yang tersedia untuk pembaruan, yang dapat diluncurkan dengan mengklik tombol “Buka jendela pembaruan”. Setelah dimulai, Nextcloud membuat cadangan, mengunduh dan memverifikasi integritas file pembaruan, mengaktifkan mode pemeliharaan, dan memperbarui file. Berikutnya muncul pertanyaan “Tetap aktifkan mode pemeliharaan”? Anda harus berhati-hati di sini. Respons positif akan membuat situs berada dalam mode pemeliharaan - diasumsikan bahwa administrator mengetahui apa yang harus dilakukan selanjutnya dan akan melakukannya secara manual. Jika tidak, Nextcloud akan melakukan semuanya sendiri, jadi klik tombol “Tidak” untuk melanjutkan.

Pembaruan dilakukan secara berulang. Pertama, Nextcloud 13.x akan diperbarui ke versi terbaru dari cabang 14.x. Setelah ini, Anda harus pergi ke pusat admin lagi dan memulai pembaruan, sekarang dari 14.x ke 15.x. Dan seterusnya hingga versi terakhir yang mungkin tercapai tercapai. Setelah setiap pembaruan, pada halaman “Pengaturan Umum” di bagian administratif, daftar saran dan masalah yang dihadapi, serta rekomendasi untuk penyelesaiannya, akan ditampilkan. Di bawah ini kita akan membahas tentang apa yang perlu dilakukan setelah setiap pembaruan.

Sampai update

Pada Nextcloud versi terbaru, disarankan untuk mengaktifkan PHP OPcache untuk meningkatkan kinerja. Aneh rasanya saya melewatkan poin ini beberapa tahun yang lalu, sejak OPcache muncul di PHP 5. Di /etc/php/7.2/Apache2/php.ini Anda perlu menghapus komentar 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


Perbarui 13.x -> 14.x

Memulihkan indeks tabel:

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


Perbarui 14.x -> 15.x

Kami menyiapkan database nextcloud untuk mengaktifkan pengkodean empat byte:

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


Aktifkan dukungan untuk pengkodean empat byte di Nextcloud:

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


Mengonversi tabel:

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


Memulihkan indeks tabel yang hilang:

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


Ubah indeks tabel menjadi bigint:

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


Perbarui 15.x -> 16.x

Memulihkan indeks tabel yang hilang:

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


Ubah indeks tabel menjadi bigint:

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


Perbarui 16.x -> 17.x

Tidak diperlukan tindakan tambahan.

penutup

Mengikuti petunjuk ini, mesin virtual dengan Nextcloud 13 telah diperbarui. Menggunakan mesin virtual memungkinkan Anda untuk tidak membuat salinan cadangan file Nextcloud dan databasenya, karena jika terjadi masalah, Anda cukup mengembalikan file mesin virtual yang disimpan sebelumnya dan memulai dari awal lagi. Namun, ini tidak berlaku untuk folder dengan data pengguna, yang juga saya sarankan untuk dicadangkan bersama dengan mesin virtual dengan Nextcloud. Dalam kasus saya, "cloud" digunakan sebagai folder jarak jauh dengan versi otomatis, dan dengan arah sinkronisasi "hanya di sana", dan kehilangan data ini tidak penting bagi saya - saya hanya perlu melakukan sinkronisasi lagi selama beberapa jam . Meskipun saya mengabaikan aturan “simpan untuk berjaga-jaga” seumur hidup, pembaruan berjalan tanpa masalah dan semua klien mulai bekerja dengan Nextcloud 17 tanpa masalah. Saya terkesan, Frank Karlitshek - Anda dan tim Anda melakukan pekerjaan dengan baik pekerjaan!

Setelah pembaruan, saya memutuskan untuk menghapus data pengguna, yang menurut statistik, memakan waktu sekitar dua terabyte. Saya tidak memiliki banyak data operasional - sebagian besar volume ditempati oleh file versi dan file yang dihapus. Masalah yang saya temui adalah untuk satu pengguna ada begitu banyak data yang dihapus (bahkan bukan soal volume, tapi kuantitas - banyak file kecil) sehingga Nextcloud tidak dapat menampilkannya di antarmuka web. Setelah mempelajari manual administrasi, saya menemukan solusi melalui baris perintah. Mungkin ini akan bermanfaat bagi seseorang.

Untuk menghapus file pengguna yang terhapus:

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


Untuk menghapus file versi pengguna:

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

Kembali ke awal, ke daftar isi.

Sejarah penciptaan cloud rumah. Bagian 5. Pembaruan 2019 – PHP 7.2, MariaDB 10.4 dan Nextcloud 17
Versi teks: 1.1.1.
Tanggal publikasi pertama: 15.01.2020/XNUMX/XNUMX.
Tanggal edit terakhir: 15.01.2020/XNUMX/XNUMX.

Perbarui log1.1.1 [15-01-2020] Koreksi kesalahan ketik.

1.1.0 [15-01-2020] Memperbaiki kode persiapan database nexcloud untuk mengaktifkan pengkodean empat byte.

1.0.0 [15-01-2020] Versi pertama.

Sumber: www.habr.com