Nâng cấp OJS an toàn theo năm bước: sao lưu đủ cơ sở dữ liệu, thư mục tệp và tệp cấu hình; dựng một bản sao để thử nâng cấp trước; kiểm plugin và giao diện tương thích; chuẩn bị sẵn đường quay lui; nâng cấp thật rồi kiểm DOI, đường dẫn và thư gửi đi.
Nhiều tạp chí trì hoãn nâng cấp vì sợ hỏng, rồi khi bản cũ hết được vá bảo mật thì buộc phải nhảy một lúc qua nhiều phiên bản, rủi ro còn lớn hơn. Nâng cấp không đáng sợ nếu làm trên bản sao trước. Bài này đi theo thứ tự thực tế mà một người kỹ thuật và một người biên tập cùng làm.
Sao lưu những gì?
Một bản cài OJS gồm ba phần độc lập. Thiếu một phần là không phục hồi được nguyên trạng.
| Phần | Ở đâu | Cách sao lưu | Thiếu thì mất gì |
|---|---|---|---|
| Cơ sở dữ liệu | MySQL, MariaDB hoặc PostgreSQL | Xuất toàn bộ bằng công cụ của hệ quản trị CSDL, ví dụ mysqldump | Mọi bài, người dùng, cấu hình, lịch sử biên tập |
Thư mục tệp files_dir | Ngoài thư mục web, khai trong config.inc.php | Nén hoặc chép nguyên thư mục | Bản thảo, tệp phản biện, tệp toàn văn |
Thư mục mã nguồn và public | Thư mục web | Chép nguyên thư mục | Ảnh bìa, biểu trưng, plugin, giao diện đã sửa |
Tệp config.inc.php | Gốc thư mục mã nguồn | Chép riêng một bản | Kết nối CSDL, đường dẫn, cấu hình thư |
Sao lưu xong phải kiểm: mở tệp xuất CSDL xem có đủ dung lượng hợp lý, giải nén thử thư mục tệp. Bản sao lưu chưa từng thử phục hồi chỉ là hy vọng.
Dựng bản sao để thử
Tách hẳn khỏi trang thật
Bản sao chạy trên một máy khác hoặc một thư mục và cơ sở dữ liệu khác trên cùng máy, với tên miền thử riêng. Phục hồi bản sao lưu vừa tạo vào đó, sửa config.inc.php của bản sao trỏ tới CSDL thử, thư mục tệp thử và đường dẫn thử.
Tắt thư gửi đi ở bản sao
Đây là bước hay quên và gây hậu quả khó chịu: bản sao có đủ địa chỉ thư thật của tác giả, phản biện. Nếu tác vụ định kỳ chạy, thư nhắc sẽ đổ về người thật. Tắt gửi thư trong cấu hình bản sao hoặc trỏ về một máy chủ thư thử, và không cài lệnh chạy định kỳ cho bản sao.
Tắt gửi DOI
Vô hiệu tài khoản Crossref trong bản sao, hoặc chuyển sang chế độ thử. Bản sao gửi siêu dữ liệu với đường dẫn tên miền thử lên Crossref thật sẽ làm hỏng DOI của trang chính.
Thử nâng cấp trên bản sao
Trình tự dưới đây theo hướng dẫn nâng cấp của PKP. Đọc tệp hướng dẫn nâng cấp đi kèm bản phát hành, vì từng phiên bản có thể có bước riêng.
- Đọc ghi chú phát hành của bản đích và các bản ở giữa, đánh dấu những thay đổi lớn và yêu cầu hệ thống mới như phiên bản PHP.
- Tải bản OJS mới, giải nén vào thư mục mới, chép
config.inc.phpcũ sang và so với tệp cấu hình mẫu của bản mới để thêm các mục mới. - Chép thư mục
publicvà các plugin bên thứ ba còn cần sang bản mới, sau khi đã kiểm chúng có bản tương thích. - Chạy
php tools/upgrade.php checkđể xem bản hiện tại và bản đích. - Chạy
php tools/upgrade.php upgradetừ dòng lệnh, không dùng trình duyệt với CSDL lớn vì dễ bị ngắt giữa chừng. Lưu toàn bộ thông báo ra một tệp nhật ký. - Đăng nhập bản sao, đi qua bảng kiểm ở mục sau.
Ghi thời gian chạy lệnh nâng cấp trên bản sao. Đó là ước lượng tốt cho thời gian trang thật phải tạm dừng.
Bảng kiểm sau khi nâng cấp
Dùng cùng bảng này cho cả bản sao và trang thật. Người biên tập nên cùng kiểm, vì họ biết trang “bình thường” trông thế nào.
| Hạng mục | Cách kiểm | Dấu hiệu có vấn đề |
|---|---|---|
| Trang chủ và trang bài | Mở trang chủ, số mới nhất, vài bài cũ | Lỗi trắng trang, mất ảnh bìa, giao diện vỡ |
| Đường dẫn bài | Mở đường dẫn cũ đã lưu từ trước | Trả về 404 hoặc chuyển về trang chủ |
| DOI | Kiểm DOI hiển thị trên trang bài, trạng thái DOI trong trang quản lý | DOI mất khỏi trang, trạng thái bị đặt lại |
| Tệp toàn văn | Tải vài tệp PDF ở các số cũ | Tệp không tải được |
| Quy trình biên tập | Mở một bài đang phản biện | Thiếu vòng phản biện, mất tệp |
| Plugin | Xem danh sách plugin, bật tắt từng cái | Plugin báo lỗi hoặc biến mất |
| Thư gửi đi | Trên trang thật: gửi một thư thử | Thư không tới |
Đường quay lui
Chuẩn bị trước
Giữ nguyên thư mục mã nguồn cũ, không ghi đè. Bản sao lưu CSDL và thư mục tệp được tạo ngay trước khi nâng cấp thật, sau khi đã đặt trang ở chế độ ngừng nhận bài. Ghi rõ các lệnh phục hồi, ai chạy, mất bao lâu.
Khi nào quay lui
Đặt tiêu chí từ trước: lệnh nâng cấp báo lỗi không xử lý được trong khoảng thời gian cho phép, hoặc bảng kiểm có hạng mục nghiêm trọng như mất tệp toàn văn, đường dẫn bài hỏng hàng loạt. Gặp tiêu chí là quay lui, không cố sửa trên trang thật.
Quay lui thế nào
Trỏ máy chủ web về thư mục mã nguồn cũ, phục hồi CSDL từ bản sao lưu ngay trước nâng cấp, phục hồi thư mục tệp nếu đã bị thay đổi. Sau đó kiểm lại bằng bảng kiểm. Mọi thay đổi trên trang trong lúc nâng cấp sẽ mất, nên phải dừng nhận bài trong thời gian này.
Lịch một đợt nâng cấp mẫu
Lịch dưới đây là khung thời gian gợi ý cho một tạp chí vừa và nhỏ. Điều quan trọng là thứ tự, không phải số ngày cụ thể.
| Thời điểm | Việc | Người làm |
|---|---|---|
| Hai đến ba tuần trước | Đọc ghi chú phát hành, liệt kê plugin, dựng bản sao, thử nâng cấp | Kỹ thuật |
| Một đến hai tuần trước | Biên tập viên kiểm bản sao theo bảng kiểm, ghi lỗi | Biên tập và kỹ thuật |
| Một tuần trước | Đăng thông báo tạm dừng trên trang, báo phản biện đang có bài | Thư ký toà soạn |
| Ngày nâng cấp | Dừng nhận bài, sao lưu, nâng cấp, kiểm, mở lại | Kỹ thuật |
| Tuần sau đó | Theo dõi thư gửi đi, báo cáo DOI, phản hồi của tác giả | Thư ký và kỹ thuật |
Chọn ngày nâng cấp xa các mốc xuất bản số mới và xa các đợt hạn nộp bài của chuyên san. Thời điểm ít người nộp bài nhất thường là lúc phù hợp, và người kỹ thuật cần có mặt trọn ngày hôm đó lẫn ngày hôm sau.
Sau khi mở lại, giữ bản sao lưu ngay trước nâng cấp thêm một thời gian, đừng xoá ngay. Có những lỗi chỉ lộ ra sau vài ngày, khi một biên tập viên mở đúng loại bài hiếm gặp hoặc khi tác vụ định kỳ chạy lần đầu trên bản mới.
Lỗi hay gặp
Bỏ qua bản sao, nâng cấp thẳng trang thật. Gặp lỗi giữa chừng thì trang chết trong lúc cả toà soạn chờ.
Giữ plugin cũ không tương thích. Một plugin giao diện lỗi có thể làm trắng toàn trang. Tắt plugin bên thứ ba trước khi nâng cấp, bật lại từng cái sau.
Quên thay đổi về đường dẫn. Một số lần nâng cấp thay đổi cách tạo đường dẫn. Nếu đường dẫn bài đổi, phải cập nhật DOI ngay theo cách đã làm khi chuyển nền tảng.
Bản sao gửi thư cho người thật. Tác giả nhận thư nhắc lạ, toà soạn mất uy tín. Luôn tắt thư ở bản sao.
Không báo trước cho tác giả và phản biện. Người đang nộp bài gặp lỗi mà không biết vì sao. Đăng thông báo trên trang trước vài ngày.
Câu hỏi thường gặp
Có thể nhảy thẳng từ bản OJS rất cũ lên bản mới nhất không?
Tuỳ cặp phiên bản. Một số bước nhảy cần đi qua bản trung gian. Đọc hướng dẫn nâng cấp của bản đích để biết đường đi được hỗ trợ, và thử trên bản sao trước.
Nâng cấp OJS mất bao lâu?
Phụ thuộc kích thước CSDL và số tệp. Thời gian chạy lệnh nâng cấp trên bản sao là ước lượng tốt nhất cho trang thật. Cộng thêm thời gian sao lưu và kiểm tra.
Có nên nâng cấp qua trình duyệt không?
Với CSDL lớn, nên chạy tools/upgrade.php từ dòng lệnh. Trình duyệt có thể bị ngắt kết nối khi chờ lâu, để lại CSDL ở trạng thái dở dang.
Sau nâng cấp, DOI có cần gửi lại không?
Nếu đường dẫn bài không đổi thì không cần. Nếu đổi, cập nhật đường dẫn cho các DOI ngay, và giữ chuyển hướng từ đường dẫn cũ sang đường dẫn mới.
Giao diện đã sửa riêng có bị mất khi nâng cấp không?
Có thể. Giao diện sửa trực tiếp trong mã nguồn sẽ bị bản mới ghi đè. Nên làm giao diện con dưới dạng plugin riêng và kiểm tương thích trên bản sao.
Bao lâu nên nâng cấp một lần?
Áp bản vá bảo mật trong cùng dòng phiên bản càng sớm càng tốt. Chuyển dòng phiên bản khi dòng đang dùng sắp hết hỗ trợ, theo lịch PKP công bố.