Cơ sở tri thức

Phát triển cục bộ với zinnector dev

Cách zinnector dev chạy một WordPress thực sự trên chính máy tính của bạn: hai môi trường thực thi (WebAssembly không có Docker, hoặc PHP gốc trong Docker), chọn phiên bản PHP và WordPress, những gì được phân phát từ dự án của bạn, môi trường thực thi 570 MB nằm ở đâu và điều gì xảy ra trên Node 26.

zinnector dev chạy một phiên bản WordPress thực tế ngay trên máy của quý khách, cung cấp các plugin và theme trong dự án của quý khách với phiên bản PHP mà quý khách lựa chọn. Bài viết này giải thích về hai runtime mà lệnh có thể sử dụng, cách chọn phiên bản, nội dung nào được phân phát từ đâu, và vị trí của runtime trên ổ đĩa — để những gì quý khách kiểm thử cục bộ hoàn toàn khớp với những gì quý khách triển khai.

Hai runtime, và lý do vì sao cả hai đều là môi trường thực tế

Playground là lựa chọn mặc định. WordPress Playground biên dịch PHP sang WebAssembly và chạy trực tiếp bên trong Node, do đó một máy tính xách tay không cài đặt gì ngoài Node vẫn có thể khởi động một phiên bản WordPress chỉ trong vài giây. Mọi phiên bản PHP từ 5.2 đến 8.5 đều khả dụng. Runtime này đi kèm một bộ extension PHP nhỏ gọn (intl, redis, memcached theo như đo lường trên bản dựng hiện tại), đáp ứng đủ cho hầu hết các công việc xử lý plugin và theme.

Docker chạy các container php-fpm và MariaDB gốc. Phương pháp này chậm hơn, yêu cầu Docker daemon cùng khoảng 1,2 GB image, đồng thời hỗ trợ PHP 7.4 đến 8.5 — nhưng chạy một phiên bản PHP gốc với đầy đủ bộ extension, bao gồm imagick và gd. Đây là giải pháp chân thực khi những gì quý khách cần kiểm thử là một extension mà bản dựng WebAssembly không hỗ trợ.

zinnector dev                       # playground
zinnector dev --runtime docker      # PHP gốc + MariaDB

Hệ thống không bao giờ tự ý chuyển ngầm về Docker. Một nhà phát triển nghĩ rằng mình đang thao tác trên WebAssembly nhưng thực tế lại đang chạy trên Docker là do công cụ đã đưa ra phản hồi sai khi cố gắng hỗ trợ, vì vậy runtime này bắt buộc phải được chỉ định rõ theo tên.

Lựa chọn các phiên bản PHP và WordPress

zinnector dev --php 8.1 --wp 6.7    # phát triển dựa trên một cặp phiên bản cụ thể
zinnector dev --port 9401           # khi cổng 9400 đã được sử dụng
zinnector dev --no-login            # không tự động đăng nhập vào wp-admin
zinnector dev --verbose             # hiển thị đầu ra riêng của runtime

Các giá trị mặc định được lấy từ tệp zinnector.json trong dự án — php, wordpress, runtime và port — do lệnh zinnector new tạo ra và quý khách nên commit tệp này, để mọi người trong dự án đều chạy cùng các phiên bản như nhau. Cờ được truyền trên dòng lệnh sẽ ghi đè cấu hình trong tệp đối với lượt chạy đó.

Phiên bản quý khách khai báo và phiên bản thực sự chạy là hai thông tin khác nhau. zinnector dev --once sẽ khởi động runtime, in ra những gì runtime thực sự báo cáo — phiên bản PHP, phiên bản WordPress, các extension đã tải — rồi dừng lại. zinnector check --probe cũng sử dụng cùng phép đo lường đó khi so sánh dự án của quý khách với một vị trí lưu trữ hosting.

Nội dung nào được phân phát từ dự án của quý khách

Runtime gắn kết trực tiếp các thư mục wp-content/plugins, wp-content/themes và wp-content/mu-plugins từ dự án của quý khách, do đó tệp mà quý khách lưu sẽ có hiệu lực ngay trong lần tải lại trang tiếp theo. Các thư mục tồn tại nhưng không chứa nội dung thực sự sẽ có chủ đích không được gắn kết: một thư mục themes/ trống được gắn kết đè lên các theme riêng của runtime sẽ khiến WordPress hoàn toàn không có theme nào, dẫn đến lỗi 500 trang trắng thay vì hiển thị trang web của quý khách. Đó là lý do vì sao cấu trúc khung giữ lại các thư mục trống kèm tệp .gitkeep và chúng sẽ không che khuất bất kỳ thành phần nào cho đến khi quý khách đặt một theme vào đó.

Vị trí lưu trữ của runtime

Runtime của WordPress được tải xuống trong lần sử dụng đầu tiên thay vì đi kèm sẵn với CLI — gói chứa toàn bộ các bản dựng PHP có dung lượng khoảng 570 MB, và một nhà phát triển chỉ có nhu cầu liệt kê các trang web không cần phải chịu tải dung lượng này. Gói được lưu trữ trong bộ nhớ đệm riêng của Zinnector®, tại ~/.cache/zinnector/runtimes/playground/<version> (hoặc bất kỳ nơi nào ZINNECTOR_CACHE_DIR trỏ tới), tuyệt đối không nằm trong dự án của quý khách, do đó nó không thể xuất hiện trong kho lưu trữ hay trong cấu trúc cây thư mục mà zinnector push đo lường. Quá trình tải xuống được thực hiện bởi chính npm của quý khách, chạy dưới dạng node npm-cli.js — không bao giờ thông qua shell.

Phiên bản runtime được cố định theo phiên bản CLI, đảm bảo hai nhà phát triển trên cùng một dự án đều chạy các bản dựng PHP giống hệt nhau. zinnector dev --reset-runtime sẽ xóa bỏ runtime đã cài đặt và tiến hành cài đặt lại, đây là giải pháp khắc phục cho một runtime đã cài đặt thành công nhưng không thể khởi động.

Trên Node 26 hoặc mới hơn

Bản thân CLI có thể chạy trên bất kỳ phiên bản Node nào từ 24 trở lên. Tuy nhiên, module gốc của runtime chỉ cung cấp các bản nhị phân dựng sẵn cho Node 24 và 25 (tính đến tháng 9 năm 2026). Thay vì biên dịch bất kỳ thành phần nào — điều mà trên Windows đồng nghĩa với việc phải cài đặt Visual Studio — Zinnector® sẽ tải riêng một phiên bản Node 24 chỉ dành cho runtime, dung lượng khoảng 30 MB, đã được xác minh đối chiếu với mã tổng kiểm do nodejs.org công bố, vào cùng bộ nhớ đệm đó. Lời nhắc cài đặt sẽ thông báo rõ ràng khi trường hợp này xảy ra. Không có bất kỳ thay đổi nào tác động đến phiên bản Node riêng của quý khách.

Liên quan

Tất cả tài liệu dành cho nhà phát triển →

Mới nhất từ blog

Những gì chúng tôi đã viết về lưu trữ web, SEO và vận hành trang web ở quy mô lớn.

SEO và xây dựng liên kết từ tầng lưu trữ: Góc nhìn của nhà vận hành năm 2026

Cách dịch vụ lưu trữ định hình việc lập chỉ mục và giá trị liên kết (link equity) vào năm 2026: giữ cho các trang luôn được lập chỉ mục, kiểm tra kỹ lưỡng các tên miền cũ trước khi xây dựng, xây dựng liên kết mà không để lại dấu vết (footprint), và một cái nhìn thẳng thắn về những gì cơ sở hạ tầng có thể và không thể làm cho SEO.

Đọc bài viết →

Giúp WordPress nhanh chóng và an toàn: Danh sách kiểm tra hiệu suất và plugin

Danh sách kiểm tra thực tế cho một trang WordPress nhanh và an toàn: lưu vào bộ nhớ đệm ở cấp độ máy chủ, bộ nhớ đệm đối tượng cho từng trang web, số ít plugin đáng sử dụng, duy trì ngăn xếp công nghệ luôn mới nhất và các trang WooCommerce mà quý vị tuyệt đối không bao giờ được lưu vào bộ nhớ đệm.

Đọc bài viết →

Cách chọn dịch vụ lưu trữ web được quản lý vào năm 2026: Hướng dẫn cho người mua

Điều thực sự tạo nên sự khác biệt giữa dịch vụ lưu trữ được quản lý tốt và một máy chủ giá rẻ có bảng điều khiển — di chuyển dữ liệu, sao lưu, cách ly, bộ nhớ đệm thực sự và khả năng mở rộng trung thực — và cách đánh giá dịch vụ đó trước khi bạn cam kết.

Đọc bài viết →

Đọc blog →

Vẫn gặp khó khăn?

Hỗ trợ được bao gồm trong mọi gói, bộ phận chăm sóc khách hàng hoạt động 24 giờ một ngày và quý khách có thể viết thư cho chúng tôi bằng bất kỳ ngôn ngữ nào trong số 58 ngôn ngữ của chúng tôi — chúng tôi sẽ trả lời quý khách bằng ngôn ngữ của quý khách.

Liên hệ hỗ trợ → Tất cả bài viết →