ประวัติความเป็นมาของการสร้างโฮมคลาวด์ ส่วนที่ 5 อัปเดต 2019 – PHP 7.2, MariaDB 10.4 และ Nextcloud 17

สองปีที่แล้วฉันได้ตีพิมพ์บทความชุดหนึ่งในหัวข้อการสร้างเว็บเซิร์ฟเวอร์ที่ใช้ Debian 8 และเรียกใช้บริการ Nextcloud 11 บนนั้น ไม่กี่เดือนต่อมามีการเพิ่มเติมปรากฏขึ้นซึ่งมีข้อมูล "ส่วนต่าง" ในการติดตั้ง Nextcloud 13 บน Debian 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

การนำทางบทด่วน

คำปรารภ
อัพเดตเดเบียน
การอัพเดต PHP เป็นเวอร์ชัน 7.2
การอัพเกรด MariaDB เป็นเวอร์ชัน 10.4
กำลังอัปเดต Nextcloud เป็นเวอร์ชัน 17
เล่ม

คำปรารภ

ในตอนแรกฉันต้องการติดตั้งและกำหนดค่า Nginx บน Debian 10 ซึ่งนอกเหนือจากนั้นสามารถติดตั้ง 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 เดือนก่อนที่ฉันจะจัดการกับปัญหาที่เกิดขึ้นอย่างตั้งใจ

เดเบ็นอัพเดตครับ

หยุดเว็บเซิร์ฟเวอร์:

# 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 จะถูกลบด้วยเนื่องจากเราจะล้าง "ร่องรอย" ออกจากแพ็คเกจที่ถูกลบโดยใช้การลบอัตโนมัติ สิ่งนี้จะไม่ทำให้เกิดปัญหาใด ๆ เนื่องจากไม่มีการตั้งค่าพิเศษสำหรับ 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


[ ข้อความนี้ เขียนขึ้นสำหรับไซต์โดยเฉพาะ will.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 โดยไม่มีปัญหาใด ๆ ฉันประทับใจ Frank Karlitshek - คุณและทีมของคุณทำได้ดีมาก งาน!

หลังจากการอัปเดต ฉันตัดสินใจล้างข้อมูลผู้ใช้ซึ่งเมื่อพิจารณาจากสถิติแล้ว มีพื้นที่ประมาณสองเทราไบต์ ฉันไม่มีข้อมูลการดำเนินงานมากนัก - โวลุ่มส่วนใหญ่ถูกครอบครองโดยไฟล์เวอร์ชันและไฟล์ที่ถูกลบ ปัญหาที่ฉันพบคือสำหรับผู้ใช้รายหนึ่งมีข้อมูลที่ถูกลบจำนวนมาก (ไม่ใช่เรื่องของปริมาณ แต่เป็นปริมาณ - ไฟล์ขนาดเล็กจำนวนมาก) ซึ่ง 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/XNUMX/XNUMX.
วันที่แก้ไขล่าสุด: 15.01.2020/XNUMX/XNUMX.

อัปเดตบันทึก1.1.1 [15-01-2020] แก้ไขคำผิด

1.1.0 [15-01-2020] แก้ไขโค้ดการเตรียมฐานข้อมูล nexcloud เพื่อเปิดใช้งานการเข้ารหัสสี่ไบต์

1.0.0 [15-01-2020] เวอร์ชันแรก

ที่มา: will.com