Cập nhật phần mềm và sao lưu dữ liệu
Phần mềm cài trên hosting của cửa hàng, nên dữ liệu và bản sao lưu là việc của cửa hàng. Bài này nói sao lưu những gì, giữ ở đâu, và cách lên bản mới mà không mất dữ liệu.
Dữ liệu nằm ở đâu
Dữ liệu cửa hàng nằm ở ba chỗ trên hosting. Mất chỗ nào là mất phần đó:
| Chỗ | Chứa gì |
|---|---|
| Database | Sản phẩm, đơn hàng, phiếu nhập, tồn kho, khách hàng, phiếu thu chi, thiết lập. Phần lớn dữ liệu nằm ở đây. |
Thư mục storage/app/public | Ảnh sản phẩm, logo, file đính kèm của đơn và phiếu. |
File .env | Kết nối database và khoá APP_KEY. Mật khẩu SMTP, M-Invoice, khoá WooCommerce lưu trong database ở dạng mã hoá bằng khoá này; mất file .env thì phải nhập lại các mật khẩu đó. |
Sao lưu
Sao lưu đủ ba chỗ trên, mỗi ngày một bản, và thêm một bản ngay trước mỗi lần cập nhật.
Hosting cPanel
- Trang chủ cPanel có mục JetBackup (nhóm Files) nghĩa là hosting đã tự sao lưu. Mở mục đó xem bản sao lưu giữ được bao nhiêu ngày và cách khôi phục một database hoặc một thư mục.
- Không có JetBackup thì hỏi nhà cung cấp hosting gói có sao lưu tự động hằng ngày không.
- Tự sao lưu tay: phpMyAdmin, chọn database, bấm Export; trong File Manager nén thư mục
storage/app/publicvà tải về máy cùng file.env.
VPS
Dùng lệnh xuất database (mariadb-dump hoặc mysqldump) và nén thư mục storage/app/public, đặt vào cron chạy mỗi đêm. Lệnh mẫu đầy đủ có trong file hướng dẫn cài đặt trên VPS đi kèm gói phần mềm.
Chép bản sao lưu ra ngoài hosting: tải về máy tính, hoặc đẩy lên Google Drive. Thử khôi phục một lần trên một database trống để chắc bản sao lưu dùng được.
Phần mềm tự kiểm bản mới
Mỗi tuần một lần, phần mềm tự hỏi máy chủ DevVN có bản mới không (cùng lúc kiểm license). Có cron thì việc này chạy nền; không có cron thì chạy sau khi có người đăng nhập mở trang. Muốn xem ngay thì vào Thiết lập, tab Cập nhật phần mềm, bấm Kiểm tra ngay.
License được nhận bản mới trong 1 năm kể từ ngày mua. Hết hạn nhận bản mới, phần mềm vẫn chạy đủ chức năng ở bản đang dùng. Cách kích hoạt license xem ở Cài đặt & license.
Cập nhật từ trong phần mềm
- Sao lưu database như mục trên. Phần mềm tự giữ bản sao các file bị thay và tự trả lại khi lỗi, nhưng không sao lưu database.
- Chọn lúc vắng khách. Trong lúc cập nhật, phần mềm tạm dừng khoảng 1 đến 2 phút, nhân viên đang dùng sẽ thấy trang bảo trì.
- Ở tab Cập nhật phần mềm, tích ô Tôi đã sao lưu database.
- Bấm Cập nhật lên bản x.y.z, đồng ý ở hộp xác nhận.
- Phần mềm tải gói, kiểm mã SHA-256 của gói, ghi file mới và cập nhật database. Xong, khung Phiên bản ghi số bản mới.
Trên hosting cPanel, cách này tự giữ dòng chọn PHP trong file .htaccess. Trên VPS, cả thư mục phần mềm phải thuộc user chạy PHP (thường là www-data) thì phần mềm mới ghi được file mới.
Cập nhật bằng tay
Dùng khi license đã hết hạn nhận bản mới mà DevVN gửi gói qua Zalo, hoặc nút trong phần mềm báo lỗi.
- Sao lưu database và thư mục
storage/app/public. - Giải nén gói zip bản mới đè lên thư mục phần mềm. Gói không chứa
.envvà ảnh đã upload nên hai thứ đó giữ nguyên. - Chạy
php artisan migrate --forcetrong thư mục phần mềm để cập nhật cấu trúc database. Dòng có chữ DONE là một thay đổi đã chạy xong; báo "Nothing to migrate" cũng là kết quả đúng. - Trên cPanel, mở lại MultiPHP Manager chọn PHP 8.3 cho tên miền. Trên VPS, chạy thêm
php artisan optimize.
Lệnh đầy đủ cho từng loại hosting có trong file hướng dẫn cài đặt đi kèm gói phần mềm.
Kiểm tra sau khi cập nhật
- Khung Phiên bản ở tab Cập nhật phần mềm ghi đúng số bản mới.
- Mở Tổng quan, POS, một báo cáo: các trang hiện bình thường.
- Bán thử một đơn nhỏ rồi xoá đi.
Hay vướng
| Hiện tượng | Cách xử lý |
|---|---|
| Không thấy nút Cập nhật lên bản mới | Chưa có bản mới, license chưa kích hoạt, hoặc đã hết hạn nhận bản mới. Bấm Kiểm tra ngay rồi đọc dòng trạng thái. |
| Trang báo "Phần mềm cần PHP 8.3 trở lên" sau khi cập nhật tay trên cPanel | Giải nén đè làm mất dòng chọn PHP trong .htaccess. Chọn lại PHP 8.3 ở MultiPHP Manager. |
| Khôi phục database rồi mà mật khẩu SMTP, M-Invoice báo sai | File .env đang dùng khác file lúc sao lưu (khác APP_KEY). Chép lại .env cũ, hoặc nhập lại các mật khẩu đó. |
Còn thắc mắc khác: xem Giải đáp thắc mắc.