无标题
Cuối cùng đã nâng cấp Ubuntu trên Linode.
Cuối cùng đã nâng cấp Ubuntu trên Linode.
Sau bao nhiêu năm trời cuối cùng tôi cũng quyết định nâng cấp hệ điều hành Ubuntu trên máy chủ Linode. Hệ thống Ubuntu cho blog này đã được cài đặt từ năm 2009, chỉ nâng cấp duy nhất một lần lên phiên bản 10.04 LTS vào năm 2010, sau đó vì quá lười biếng nên không thèm động đến nữa.
Thực ra quá trình nâng cấp chỉ cần gõ một dòng lệnh đơn giản, nhưng mỗi lần đăng nhập qua SSH tôi lại nản lòng không muốn làm. Hôm nay bỗng dưng cảm thấy việc này không còn trì hoãn được nữa nên thử chạy lệnh do-release-upgrade thì lại thất bại :( . Tôi tìm kiếm trên Google thì được biết hệ thống này đã quá lâu không còn được hỗ trợ, thậm chí vượt xa ngày bảo trì cuối cùng nên không thể nâng cấp trực tiếp được nữa.
Sau khi nghiêm túc suy nghĩ và rút ra bài học đau xót, tôi quyết định “chết cũng phải vá”. Tôi nhận ra dịch vụ quan trọng nhất trên hệ thống là máy chủ DNS bind9 dùng để phân giải tên miền codingnow.com, tiếp theo là Apache và MySQL. Nếu cài đặt lại hệ điều hành và khôi phục dữ liệu thì cũng không đến nỗi khó khăn lắm. Vừa hay năm xưa Linode tặng tôi thêm 8GB dung lượng ổ cứng mà vẫn chưa dùng đến, giờ đây chính là lúc tận dụng nó.
Quá trình làm việc này phức tạp hơn tôi tưởng rất nhiều, và cũng nhắc nhở bản thân sau này nhất định phải nâng cấp hệ thống kịp thời, không thể để kéo dài như thế này nữa. Việc cài đặt Ubuntu 14.04 LTS trên phân vùng mới thực ra rất đơn giản, chỉ cần vài click trong giao diện quản trị Linode, sau đó khởi động lại là có thể chuyển sang hệ thống mới. Tôi gắn phân vùng cũ vào làm ổ dữ liệu, đồng thời phải chỉnh sửa để thư mục /home và /var trỏ về phân vùng dữ liệu cũ, nếu không không gian trên phân vùng mới sẽ quá chật chội. Việc này cũng không khó, chỉ là ban đầu tôi quên sửa file fstab nên khi khởi động lại hệ thống không chạy được (do tạo symbolic link cho /var đến phân vùng chưa mount, khiến không thể tạo file log).
Trước tiên tôi xử lý dịch vụ bind9, phát hiện ra việc sao chép nguyên thư mục etc từ ổ dữ liệu cũ không khả thi vì có vài file khóa được tạo ra khi cài đặt mới cần phải giữ lại. Sau một lần thất bại tôi nhanh chóng sửa lại thành công và đồng thời dọn dẹp vài cấu hình rác. Đến phần MySQL, sau khi cài đặt xong tôi cố gắng trỏ đến dữ liệu trên ổ cũ thì gặp lỗi :( . Kiểm tra log thì phát hiện ra các cơ sở dữ liệu tôi tạo từ 10 năm trước quá cũ, MySQL 5.5 không thể đọc được nữa. Tôi đành quay lại hệ thống cũ, dump toàn bộ cơ sở dữ liệu thành file văn bản rồi mới phục hồi vào hệ thống mới. Trong quá trình này tôi lại quên mất mật khẩu root của MySQL, phải chỉnh sửa cấu hình để tắt xác thực mật khẩu, sau đó reset lại toàn bộ. Một vài mật khẩu khác dùng cho blog và các ứng dụng khác cũng phải lần mò trong file cấu hình để tìm lại.
Phần Apache khiến tôi đau đầu nhất vì đã thay đổi nhiều so với phiên bản cũ. Mặc định bây giờ cài là Apache 2.4, một số lệnh trong file cấu hình đã khác khiến liên tục báo lỗi quyền truy cập. Sau khi vật lộn với Google cả buổi trời, tôi phải tiến hành thay thế hàng loạt các cú pháp cũ trong file cấu hình.
Trong quá trình xử lý, tôi phát hiện ra log lỗi của Apache2 phình to đến 7GB! Nguyên nhân là do một số trang web viết bằng PHP quá cũ của tôi không tương thích với phiên bản PHP5 mới nhất (trước đó tôi đã từng nâng cấp PHP cách đây vài năm), dẫn đến hàng loạt cảnh báo lỗi kiểu “đã lỗi thời”. Thêm vào đó, các bot spam hàng ngày vẫn chăm chỉ đến “thăm hỏi”, khiến file log tăng trưởng phi mã. Tôi kiên nhẫn sửa lại từng lỗi tương thích này thì tình hình mới ổn định trở lại.
Tận dụng cơ hội này, tôi cũng tìm hiểu nguyên nhân tại sao chức năng bình luận trên blog lại chậm chạp đến nỗi mỗi lần gửi phải chờ 4-5 giây. Kiểm tra log truy vấn chậm của MySQL không thấy vấn đề gì, dùng lệnh top cũng không thấy CPU tăng đột biến. Cuối cùng tôi phát hiện ra một module chống spam đã 10 năm tuổi được tích hợp trong hệ thống quản trị blog, mỗi lần bình luận đều phải gửi yêu cầu ra ngoài. Có lẽ gần đây bên đó ngừng duy trì nên mỗi lần gửi đều bị treo rất lâu. Ngay lập tức tôi tắt cái plugin vô dụng này đi thì mọi thứ trở nên mượt mà ngay lập tức.
Như vậy blog này có lẽ còn trụ được thêm vài năm nữa, đến khi nào tôi cảm thấy tâm trạng tốt sẽ xây dựng lại từ đầu. Có lẽ trong quá trình bảo trì này các bạn khi truy cập sẽ gặp phải vài hiện tượng kỳ lạ, nếu có phát hiện thì xin vui lòng bình luận hoặc gửi email thông báo cho tôi nhé :)