Chuyển tới nội dung chính
Version: 4.1

Cập nhật

hitechcloudcli update kiểm tra xem có bản phát hành mới không và cài nó.

hitechcloudcli update # cập nhật nếu autoupdate hoặc autopatch đang bật
hitechcloudcli update --check # chỉ báo những gì có sẵn
hitechcloudcli update --force # cập nhật bất kể các thiết lập đó
hitechcloudcli update --admin # chỉ HiTechAdmin
hitechcloudcli update --panel # chỉ panel hosting
hitechcloudcli update --cli # chỉ HiTechCloudCLI
hitechcloudcli update --repair # đồng bộ từ bản phát hành trên đĩa, không tải về
hitechcloudcli update --translations # chỉ làm mới các bản dịch panel đã cài

Làm mới tệp dịch vụ và mẫu của một khu vực, ngoài ra không gì khác (có thể dùng nhiều cờ cùng lúc; không kết hợp được với các tuỳ chọn ở trên):

hitechcloudcli update --wp # wp-cli và composer
hitechcloudcli update --ols # cấu hình WebEngine OpenLiteSpeed
hitechcloudcli update --apache # cấu hình WebEngine Apache
hitechcloudcli update --clamav # cấu hình, giới hạn và chữ ký của ClamAV
hitechcloudcli update --phpmyadmin # cấu hình phpMyAdmin
hitechcloudcli update --postgres # cấu hình và quy tắc truy cập PostgreSQL
hitechcloudcli update --skeleton # tệp khởi đầu của tài khoản mới (chỉ thêm tệp còn thiếu)
hitechcloudcli update --ssh # shell đăng nhập bị giam và bị giới hạn, quy tắc jail
hitechcloudcli update --varnish # dịch vụ Varnish và VCL của mọi tài khoản
hitechcloudcli update --cron # các tác vụ định kỳ

Bản phát hành lấy từ đâu​

Từ máy chủ mirror, và chỉ từ đó. https://mirrors.hitechcloud.org/version là phiên bản mà máy chủ này so sánh với chính nó, và https://mirrors.hitechcloud.org/releases/<version>/ là nơi tải gói runtime và các tệp nhị phân. Đặt HITECHCLOUD_MIRROR để đọc từ một mirror khác.

Không có phương án dự phòng GitHub hay Docker Hub. Các kho mã là riêng tư, nên mirrors.hitechcloud.org/api trả về 404 cho máy chủ không có token (mọi máy chủ của khách hàng đều vậy), và hỏi ở đó chỉ tốn một lần chờ hết thời gian rồi thất bại. Phiên bản mà mirror không có thì máy chủ này cũng không cài được, nên mirror là nơi duy nhất đáng hỏi. Mirror không truy cập được sẽ được báo là lỗi thật, không bị che đi.

Các phiên bản được so sánh như phiên bản, không như chuỗi ký tự, nên 2.1.9 được xác định đúng là cũ hơn 2.1.30.

Một lần cập nhật làm gì​

Một lần cập nhật chạy từ đầu đến cuối trong một lượt. Không có script riêng cho từng phiên bản để chạy, và không có gì bị để lại cho lần cập nhật sau hoàn tất.

  1. Cài đặt. Bản phát hành được tải từ mirror và kiểm tra với SHA256SUMS đã ký (hoặc, trên máy chủ cài từ một bản checkout, bản checkout được cập nhật). hitechcloudcli của chính bản phát hành được cài trước. Nếu nó khác chương trình đang chạy, phần còn lại của lần cập nhật được giao cho nó, nên các bước của bản phát hành mới chạy ngay bây giờ chứ không phải ở lần cập nhật sau. Chương trình mới không tải bản phát hành lần thứ hai. Sau đó là cây CLI, các mẫu dịch vụ và web server, các bộ tính năng, webmail, mọi tệp nhị phân của panel và cả hai engine. Mỗi tệp nhị phân được kiểm tra checksum và giữ một bản .prev của bản dựng mà nó thay thế. Nếu không cài được gì, lần cập nhật dừng ở đây: không có gì khác bị thay đổi và tệp phiên bản được giữ nguyên.
  2. Đồng bộ (converge). Một danh sách bước có thứ tự đưa máy chủ về đúng với bản phát hành, bất kể nó đến từ bản nào. Mỗi bước tự kiểm tra xem có việc gì cần làm không, nên toàn bộ danh sách chạy ở mỗi lần cập nhật:
    • unit của chính bộ hẹn giờ cập nhật;
    • /etc/hitechcloud luôn đóng với các tài khoản hosting và luôn đọc được bởi các dịch vụ cần nó;
    • dòng lịch sao lưu người dùng tập trung;
    • các mẫu được chép vào chỗ và cấu hình chính của mọi WebEngine đã cài được dựng từ chúng, engine mặc định vẫn giữ là mặc định;
    • FTP: pure-ftpd được chuyển sang cơ sở dữ liệu người dùng ảo, và các thông tin đăng nhập FTP còn lại được chuyển thành người dùng ảo;
    • mail, nơi đã được cấu hình: các thiết lập main.cf và listener master.cf của Postfix, cùng thiết lập của Dovecot theo ngôn ngữ cấu hình của bản Dovecot đã cài (2.3 hoặc 2.4), được dựng từ các mẫu của bản phát hành (hitechcloudcli mail apply-config), rồi các bảng mail được dựng lại (mail sync). Dovecot được yêu cầu kiểm tra thiết lập mới trước khi nạp; thiết lập nào của panel mà nó từ chối sẽ được trả lại như cũ, và lỗi trong tệp không do panel ghi sẽ được nêu tên;
    • cấu hình của mọi website (vhost rebuild --all);
    • pool PHP và front end của phpMyAdmin, nơi phpMyAdmin được phục vụ;
    • dịch vụ tự cấu hình máy khách mail và pool của nó, nơi đã được thiết lập;
    • các thiết lập mà một bản phát hành thêm vào waf.conf, được nối thêm với giá trị mặc định. Thiết lập bạn đã có không bao giờ bị thay đổi;
    • quy tắc sudoers và sysctl của jail, rồi Resource Engine và giới hạn của mọi tài khoản;
    • danh mục của trang Services, các ngôn ngữ đã cài, danh sách mô-đun và tính năng, và các tác vụ định kỳ.
  3. Ghi lại phiên bản mới vào /usr/local/hitechcloud/version và /etc/hitechcloud/version.
  4. Khởi động lại panel, rồi HiTechAdmin, rồi tường lửa ứng dụng web (chỉ khi tệp nhị phân hoặc thiết lập của nó thay đổi). Việc khởi động lại diễn ra sau khi ghi phiên bản, nên trang Updates hiển thị phiên bản mới ngay khi panel chạy lại. Nếu panel không khởi động được trên tệp nhị phân mới, các bản dựng cũ được khôi phục từ bản .prev và phiên bản trước được ghi lại.
  5. Chạy hook tuỳ chỉnh sau cập nhật (/root/hitechcloud_run_after_update), nếu có.

Nếu một bước đồng bộ nào không hoàn tất được, hoặc một panel không phản hồi sau khi khởi động lại, lần cập nhật ghi /var/lib/hitechcloud/update-incomplete. Phiên bản vẫn được ghi lại, nhưng lần chạy tiếp theo của bộ hẹn giờ cập nhật sẽ chạy lại lần cập nhật, kể cả ở cùng phiên bản, cho đến khi không còn gì dang dở. Nhật ký cho biết bước nào thất bại và lệnh nào cần chạy thủ công. hitechcloudcli update --repair chạy cùng quá trình đồng bộ từ bản phát hành đã có trên đĩa, không tải gì về, và khởi động lại các dịch vụ. Khi hoàn tất không lỗi, nó xoá dấu đánh dấu đó.

Mỗi lần chạy được ghi vào /var/log/hitechcloud/updates/<version>.log, một tệp khoá ngăn hai lần cập nhật chạy cùng lúc, và lần cập nhật vẫn chạy sau 85 phút sẽ bị dừng (HITECHCLOUD_UPDATE_MAX_SECONDS). Bộ hẹn giờ cập nhật tự động cho phép 90 phút.

Máy chủ nào cập nhật được​

Một lần cập nhật bắt đầu từ 4.0.1 trở lên. Máy chủ ghi phiên bản cũ hơn bị từ chối trước khi có gì thay đổi. Hãy cài bản phát hành lên máy chủ mới và chuyển các tài khoản sang bằng hitechcloudcli migrate accounts plan --from <old server>. Máy chủ mà tệp phiên bản không đọc được vẫn được cập nhật: không bước nào ở trên phụ thuộc vào phiên bản nó đang đi lên từ đó.

Những gì một lần cập nhật không làm​

  • Không cập nhật các gói của hệ điều hành hay nhân (kernel).
  • Không động đến máy chủ không bật autoupdate lẫn autopatch, trừ khi bạn truyền --force.
  • Không cài phiên bản được liệt kê trong /etc/hitechcloud/upgrade/skip_versions.
  • Không ghi đè thiết lập bạn đã tinh chỉnh trong waf.conf hay trong các tác vụ định kỳ. Nó chỉ thêm những gì bản phát hành mới đưa vào.

Chạy từ terminal của panel​

Một lần cập nhật khởi động lại panel và panel quản trị. Nếu khởi chạy từ trang Terminal của panel, lần cập nhật sẽ là một tiến trình bên trong một trong các dịch vụ đó, và việc khởi động lại dịch vụ sẽ giết nó giữa chừng. Vì vậy khi phát hiện điều đó, lần cập nhật tự chạy lại trong một unit systemd riêng và giữ đầu ra cùng mã thoát của bạn: việc khởi động lại sẽ đóng phiên terminal của bạn, còn lần cập nhật vẫn chạy đến cuối.

Trang này có hữu ích không?