MixEngine 0.0.1

Khi có gì đó không ổn

Đây là tài liệu hướng dẫn dùng MixEngine qua dòng lệnh mix. Nếu bạn muốn thao tác bằng giao diện đồ họa cho dễ hơn, hãy tải ứng dụng MixDB tại https://lab.mixnz.com/#mixdb. MixDB làm việc trên cùng một MixEngine, nên mọi khái niệm trong cẩm nang này vẫn áp dụng.

Bắt đầu từ đây

mix doctor

Lệnh này kiểm tra máy và cho biết có gì sai. Nó chỉ báo cáo, không sửa gì trừ khi bạn yêu cầu, và thoát với mã khác không khi phát hiện vấn đề, nên script cũng dùng được.

mix doctor --repair

Sửa mọi thứ có thể sửa. Những gì nằm trong home của MixEngine được sửa ngay. Những gì cần quyền quản trị được xếp vào hàng đợi, hiện ra cho bạn xem, rồi cấp quyền trong một hộp thoại cho cả đợt. --yes bỏ qua bước xác nhận trước hộp thoại đó.

Bốn câu hỏi người dùng hay gặp

"Có gì đang chạy không?"

mix status
mix service list

status nói về daemon: phiên bản, thư mục home, và nó đang giám sát gì. service list liệt kê từng service và trạng thái của mỗi cái.

"Sao tên miền này không mở được?"

mix domain status blog.test

Bốn câu hỏi được trả lời riêng rẽ thay vì một kết luận chung: tên đã được khai báo chưa, nó được định tuyến bằng cách nào, hiện tại nó có phân giải được trên máy này không, và có gì đang trả lời ở đó không. Câu nào trả lời no thì đó là chỗ cần sửa.

"Sao ổ khóa không xanh?"

mix cert status
mix cert ca-status

cert status mở một kết nối thật và báo lại chứng chỉ thực sự được đưa ra, tức là thứ duy nhất trình duyệt nhìn thấy. ca-status cho biết CA là gì. Nếu CA chưa được tin cậy, mix doctor --repair sẽ đưa nó trở lại.

"Đây là PHP nào, và vì sao?"

mix runtime resolve php

Phiên bản mà thư mục này dùng, và nguồn nào trong bốn nguồn quyết định điều đó. Vế sau là thứ bạn cần khi câu trả lời không như mong đợi.

Đọc log

mix service logs caddy --follow
mix service logs mariadb@main -n 200

--follow vẫn tiếp tục khi service crash và được khởi động lại, vì thứ đang được theo dõi là service chứ không phải một lần chạy của tiến trình. Log của chính daemon nằm ở logs/daemon.log trong home của MixEngine.

Với các thao tác dài, như cài đặt hay áp dụng blueprint, hãy xem ở job:

mix job list
mix job status <id>
mix job logs <id>

mix job logs chỉ trả lời cho job chạy chương trình của người khác, hiện tại nghĩa là blueprint chạy lệnh scaffold của nó. Mọi việc khác một job làm đều được báo qua tiến độ và kết quả, và lệnh nói rõ như vậy thay vì giả vờ output bị mất.

Các tình huống thường gặp

Cổng đã bị chiếm. Có thứ gì khác trên máy đang dùng nó. Với service mới, dùng mix service create --port để chọn cổng khác. Với service đã có, xóa rồi tạo lại trên cổng khác; thư mục dữ liệu được giữ nguyên.

Daemon không khởi động. Đọc logs/daemon.log trong home. mix status --no-autostart hỏi xem có daemon đang chạy không mà không khởi động cái mới. Đó là câu hỏi đúng khi bạn đang chẩn đoán chứ không phải đang làm việc.

Lệnh cần một phiên bản chưa cài. MixEngine nói rõ và nêu đúng lệnh mix runtime install cần gõ. Nếu bạn yêu cầu một khoảng phiên bản thì nó không biết phiên bản nào thỏa mãn, nên chỉ bạn sang mix runtime available.

Có gì đó xin quyền quản trị và bạn đã từ chối. Không có gì bị áp dụng nửa chừng. mix elevation status cho biết còn gì đang chờ, và mix elevation grant hỏi lại.

Khi chính MixEngine gặp bug

Nếu daemon gặp bug trong mã của chính nó, nó ghi một file nhỏ vào logs/crashes/ trong home của MixEngine. mix doctor cho bạn biết có file như vậy, dưới dạng ghi chú chứ không phải vấn đề, nên không làm đổi mã thoát của lệnh.

Trong file có gì: bug xảy ra ở đâu trong mã nguồn của MixEngine, tên các hàm xung quanh, phiên bản đang chạy và hệ điều hành nào. Chỉ có vậy.

Trong file không có gì: không có đường dẫn nào của bạn, không có tên site hay project, và không có mật khẩu. Điều này đúng vì file chỉ được phép chứa những gì kể trên, chứ không phải vì có gì đó được lọc bỏ về sau. Nên bạn có thể đính kèm nguyên file vào một báo cáo lỗi công khai mà không cần đọc trước.

Thông báo mà crash in ra là phần duy nhất có thể nhắc tới đường dẫn của bạn, nên nó được ghi vào logs/daemon.log thay vì vào file kia. File đó cũng đáng gửi kèm, nhưng hãy gửi có ý thức. Xem bên dưới.

Không có gì được gửi đi đâu cả. Không có server nào để gửi tới. Hai mươi file mới nhất được giữ lại, các file cũ hơn bị xóa. Nếu bạn không muốn file như vậy được ghi ra, thêm vào config.toml:

[crash]
enabled = false

Log của daemon vẫn ghi lại rằng đã có crash.

Báo cáo lỗi

mix doctor --bundle

Một file nén gom đủ mọi thứ một báo cáo lỗi cần: kết quả doctor tìm được, trạng thái daemon này, thông tin máy, các báo cáo crash nếu có, và phần cuối của log. --out chép nó tới nơi bạn chọn.

Những gì cố ý bỏ ra ngoài được ghi tên ngay trong file nén, nên không ai phải đoán một phần thiếu là do che đi hay do lỗi. Hãy mở ra xem trước khi gửi đi đâu. Đó là một file nén bình thường, và nó là của bạn.

Mọi lệnh mix đều nhận --json, thường là cách nhanh nhất để cho người khác thấy chính xác bạn đã thấy gì.


Trang này ở dạng Markdown: https://mixnz.github.io/mixengine/vi/troubleshooting.md