อัปเดต Apache2 ให้ได้เวอร์ชั่นล่าสุดด้วย Third-Party PPA ของ ondrej

พบว่า ubuntu 16.04 จะใช้ apache2 v 2.4.18 แม้ว่าเราจะสั่ง apt update; apt upgrade แล้วก็ตามเมื่อเช็คด้วยคำสั่ง apache2 -v จะพบว่ายังคงเป็นเวอร์ชั่น 2.4.18 เช่นเดียวกับ ubuntu 18.04 จะใช้ apache2 v 2.4.29 เท่านั้น หลังจากหาข้อมูลอยู่ทั้งวัน มีผู้ให้ข้อมูลใน google search ว่า ทีมพัฒนาจะไม่เปลี่ยนเวอร์ชั่นใน ubuntu ตาม upstream developer จนกว่าจะทดสอบและออก ubuntu next release

หากต้องการเป็นเวอร์ชั่น 2.4.39 ณ วันนี้ (4 เม.ย. 62 หลังจากข่าวช่องโหว่ apache2 2 วัน) ก็ต้องใช้ Third-Party PPA ของ ondrej (ผู้พัฒนาคนหนึ่งที่ทำ Debian Package)

เพิ่มเติมล่าสุด (5 เม.ย. 62) ทำใน ubuntu server อีกเครื่องที่ยังไม่ได้ทำแบบ PPA

$ sudo apt-get update ; sudo apt-get dist-upgrade
$ apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2019-04-03T13:34:47

$ dpkg -l | grep apache2
ii apache2 2.4.18-2ubuntu3.10 amd64 Apache HTTP Server

พบว่ามีการปรับปรุงเวอร์ชั่น Server built 2019-04-03 ซึ่งตามหลัง patch PPA ไม่กี่ชั่วโมง ใครยังไม่สนใจจะเปลี่ยนเป็นเวอร์ชั่น 2.4.39 ก็น่าจะไม่ต้องทำแบบ PPA ตามข้อมูลใน link นี้
https://usn.ubuntu.com/3937-1/ และ
https://launchpad.net/ubuntu/xenial/+source/apache2/+changelog

ข้อควรระวัง ให้ตรวจสอบว่ามีการเข้าไปปรับแต่งไฟล์ apache2.conf ไว้หรือไม่ ต้องมีการทำ backup ไว้ก่อนอัปเดต เช่น บางท่านอาจไปเขียน Rewrite Rule ในไฟล์นี้ เป็นต้น ก็ต้องแก้ไขหลังจากอัปเดต รวมถึง Apache configuration files อื่น ๆ ที่เราใช้ เราต้องมี backup

อย่างไรก็ตามก่อนทำอัปเดต ต้องมั่นใจว่าถ้า server เราเป็น VM ก็ต้องมีการ backup VM ไว้ก่อน จะอุ่นใจขึ้น

sudo add-apt-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get upgrade

หลังจากอัปเดต เช็คเวอร์ชั่นด้วยคำสั่ง apache2 -v ได้เวอร์ชั่นล่าสุด

Server version: Apache/2.4.39 (Ubuntu)
Server built: 2019-04-02T20:30:08

หากพบว่า ยังคงได้ version เดิม ตรวจสอบดู output จะพบว่า

Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
apache2 apache2-bin apache2-data apache2-utils libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap openssl
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.

ทำคำสั่งนี้แทน

sudo apt-get dist-upgrade
Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following package was automatically installed and is no longer required:
liblua5.1-0
Use 'apt autoremove' to remove it.
The following NEW packages will be installed:
libbrotli1 libjansson4 liblua5.2-0 libnghttp2-14 libssl1.1
The following packages will be upgraded:
apache2 apache2-bin apache2-data apache2-utils libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap openssl
8 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,628 kB of archives.
After this operation, 6,757 kB of additional disk space will be used.
Do you want to continue? [Y/n]

กด Enter (เพื่อเลือก Y) แล้วจะมีการติดตั้งให้

ตอนนี้ก็เฝ้าระวังกันต่อไปว่า หลังจากทำวิธีนี้จะมีผลกระทบอะไรตามมาในอนาคตบ้างมั้ย หวังว่าจะไม่มี เพราะพยายามหาข้อมูลว่ามีใครแจ้งปัญหาจากวิธีการนี้ก็ไม่พบ พบแต่คำแนะนำวิธีนี้

ผมคงไม่สามารถรับประกันความปลอดภัยใด ๆ หรือผลที่ตามมาจากการทำขั้นตอนในโพสต์นี้นะครับ


สำหรับวิธีไม่ใช้ PPA จะกลับไปใช้ของเดิม

sudo apt-get install ppa-purge
sudo ppa-purge ppa:ondrej/apache2

ตรวจสอบ version ของ apache2

apache2 -v
dpkg -l | grep apache2

และล้างไฟล์ใน sources.list.d

ls -l /etc/apt/sources.list.d/
sudo add-apt-repository --remove ppa:ondrej/apache2

ลิงค์ที่เกี่ยวข้อง