# Cài WordPress

> Cài WordPress lên website mới hoặc website có sẵn, chuyển một website WordPress về server, rồi đăng nhập, bảo mật và xử lý các lỗi cài đặt thường gặp.

Source: https://zopanel.net/vi/docs/wordpress-install  
Updated: 2026-10-09

ZoPanel cài WordPress bằng wp-cli: tạo database, tải bản WordPress mới nhất, ghi `wp-config.php` và tạo tài khoản quản trị trong cùng một tác vụ. Trang này hướng dẫn đưa WordPress vào chạy. Khi website đã chạy, [Bộ công cụ WordPress](/vi/docs/wordpress) lo phần cập nhật, staging, bảo mật và vận hành.

## Trước khi bắt đầu

- **Trỏ tên miền về server trước.** Tạo bản ghi A (và AAAA) như trong [Website đầu tiên](/vi/docs/first-website). Khi tên miền đã trỏ về server, chứng chỉ được cấp trước khi cài WordPress, nên WordPress chạy ngay trên `https://`.
- **Server phải có ít nhất một phiên bản PHP.** Hộp thoại tạo website chọn PHP 8.3 nếu đã cài, nếu không thì một phiên bản khác đã cài.
- **Gói hosting phải còn chỗ cho một database.** Mỗi lần cài tạo một database riêng. Với license Free, cả server có tối đa 10 database (xem [License](/vi/docs/licensing)).
- **Gói hosting phải có WordPress.** Gói có thể bỏ tính năng **Cài ứng dụng & công cụ WordPress** (xem [Gói hosting và giới hạn](/vi/docs/packages-limits)). Khi đó khách hàng nhận lỗi "this feature is not included in your hosting package".

## Cách 1: tạo website mới kèm WordPress

1. Vào **Website** và bấm **Thêm website**.
2. Nhập **Tên miền** không kèm `http://`, ví dụ `example.com`. Giữ dấu chọn **Đồng thời chạy www.example.com** nếu muốn cả hai địa chỉ đều hoạt động.
3. Quản trị viên và reseller: chọn **Chủ sở hữu** (tài khoản hosting).
4. Ở **Loại website**, chọn **WordPress**.
5. Chọn **Phiên bản PHP**.
6. Giữ **SSL miễn phí (Let's Encrypt)** ở trạng thái bật.
7. Điền **Thiết lập WordPress** (xem bảng bên dưới).
8. Bấm **Tạo website**. Cửa sổ tác vụ hiển thị từng bước. Bạn có thể đóng cửa sổ: tác vụ vẫn chạy, và trang **Tác vụ** lưu lại log.

### Các trường khi cài

| Trường | Mặc định | Quy tắc và tác dụng |
| --- | --- | --- |
| **Tiêu đề website** | Tên miền | Tên WordPress hiển thị ở đầu trang và tab trình duyệt. Tối đa 200 ký tự. Có thể đổi sau trong WordPress tại **Settings → General**. |
| **Email quản trị** | Email của tài khoản panel | Bắt buộc. WordPress gửi email đặt lại mật khẩu và thông báo quản trị tới địa chỉ này. |
| **Tài khoản quản trị** | `admin` | 3 đến 60 ký tự: chữ, số, `.`, `_`, `@` và `-`. |
| **Mật khẩu quản trị** | Mật khẩu ngẫu nhiên 16 ký tự | 8 đến 128 ký tự, không chứa dấu hai chấm. Hãy chép lại trước khi bấm **Tạo website**: panel không hiển thị lại. |

WordPress được cài theo ngôn ngữ của panel: tiếng Việt khi bạn dùng panel bằng tiếng Việt, ngược lại là tiếng Anh (`en_US`).

**Quan trọng:** hãy đổi **Tài khoản quản trị** khác `admin` trước khi tạo website. Bot dò mật khẩu luôn thử `admin` đầu tiên, và mục kiểm tra bảo mật của bộ công cụ sẽ cảnh báo quản trị viên mang tên này. Tên đăng nhập WordPress không đổi được trong wp-admin về sau.

## Cách 2: cài WordPress lên website có sẵn

1. Mở website, ở tab **Tổng quan**.
2. Trong thẻ **Ứng dụng**, bấm **Cài WordPress**.
3. Kiểm tra **Tiêu đề website**, **Email quản trị**, **Tài khoản quản trị** và **Mật khẩu quản trị** (quy tắc như trên).
4. Bấm **Cài đặt**.

Thẻ **Ứng dụng** chỉ hiện khi website chạy PHP (không phải reverse proxy), chưa cài ứng dụng nào và thư mục gốc nằm trong `public_html`. WordPress được cài vào thư mục gốc của website. Nên bắt đầu từ thư mục gốc trống: ZoPanel chỉ xoá trang giữ chỗ `index.html` của chính nó, các file khác của bạn vẫn được giữ nguyên.

WordPress dùng `https://` nếu website đã có chứng chỉ, ngược lại dùng `http://`. Việc cài cũng chuyển website sang bộ quy tắc nginx cho WordPress (xem bên dưới).

## Quá trình cài làm những gì

Log tác vụ hiển thị các bước:

1. **SSL** (website mới có bật SSL): xin chứng chỉ. Nếu tên miền chưa trỏ về server, log ghi "SSL could not be issued" và việc cài tiếp tục trên HTTP.
2. **Database:** tạo database và user MariaDB tên `<tài-khoản>_wp<4 ký tự ngẫu nhiên>` với mật khẩu ngẫu nhiên 24 ký tự, liên kết với website. Mật khẩu chỉ được ghi vào `wp-config.php`.
3. **Tải về:** tải bản WordPress mới nhất. Lỗi mạng (DNS timeout, mất kết nối) được thử lại tối đa 3 lần.
4. **Cấu hình:** ghi `wp-config.php` với `DB_HOST` là `localhost`, chỉ tài khoản đọc được (quyền 640).
5. **Cài đặt:** cài WordPress với tiêu đề và quản trị viên của bạn. Không gửi email chào mừng.
6. **Tác vụ định kỳ:** server nhận chạy các tác vụ định kỳ của WordPress, 5 phút một lần (xem [Server chạy tác vụ định kỳ](/vi/docs/wordpress)).
7. **Làm nóng:** gọi trang chủ một lần để khách đầu tiên nhận trang đã được biên dịch sẵn.

Website dùng bộ quy tắc nginx cho WordPress: permalink đẹp hoạt động mà không cần `.htaccess`; `xmlrpc.php`, file PHP trong `wp-content/uploads` và truy cập trực tiếp `wp-config.php`, `readme.html`, `license.txt` đều bị chặn.

## Cách 3: chuyển website WordPress có sẵn về

| Website đang ở đâu | Dùng |
| --- | --- |
| Server cPanel hoặc DirectAdmin | **Chuyển đến**. File, database (kèm user và mật khẩu), email và cron được chuyển cùng lúc. Xem [Chuyển sang ZoPanel](/vi/docs/migration). |
| Một server ZoPanel khác | **Chuyển sang máy chủ khác** ở tab **Tổng quan** của website (quản trị viên). Tên database, user và mật khẩu giữ nguyên nên không phải sửa `wp-config.php`. |
| Nơi khác | Chuyển thủ công như bên dưới. |

### Chuyển thủ công

1. Ở host cũ, tải về bản sao file (một file `.zip` hoặc `.tar.gz` của thư mục WordPress) và bản dump SQL của database.
2. Tạo website trên ZoPanel với loại **PHP** (không chọn **WordPress**, vì loại này cài một bản mới).
3. Mở **Quản lý file**, vào `domains/<tên-miền>/public_html`, xoá trang giữ chỗ `index.html`, tải file nén lên và bấm **Giải nén**. Xem [Quản lý file](/vi/docs/file-manager). Với website lớn, SFTP hoặc rsync nhanh hơn (xem [SSH và terminal](/vi/docs/ssh-terminal)).
4. Trong **Cơ sở dữ liệu**, bấm **Tạo database**, chọn **Liên kết với website** và lưu lại mật khẩu.
5. Trong menu của database, chọn **Import / khôi phục** và tải bản dump lên (`.sql` hoặc `.sql.gz`).
6. Sửa `wp-config.php` trong Quản lý file với thông tin mới:

   ```php
   define( 'DB_NAME', 'alice_shop' );
   define( 'DB_USER', 'alice_shop' );
   define( 'DB_PASSWORD', 'mật khẩu ở bước 4' );
   define( 'DB_HOST', 'localhost' );
   ```

7. Nếu đổi tên miền, thay địa chỉ cũ trong database bằng [terminal](/vi/docs/ssh-terminal), chạy thử trước:

   ```bash
   cd domains/ten-mien-moi.com/public_html
   wp search-replace 'https://ten-mien-cu.com' 'https://ten-mien-moi.com' --skip-columns=guid --dry-run
   wp search-replace 'https://ten-mien-cu.com' 'https://ten-mien-moi.com' --skip-columns=guid
   ```

8. Mở tab **WordPress** của website. ZoPanel đọc bản cài bằng wp-cli nên bộ công cụ hoạt động như với website do nó cài.
9. Trong thẻ **Bảo mật**, bấm **Áp dụng tất cả**. Thao tác này cũng chuyển website sang quy tắc nginx cho WordPress. Hoặc đặt **PHP & cấu hình → Quy tắc rewrite** là **WordPress**.
10. Trong thẻ **Vận hành**, bật **Server chạy tác vụ định kỳ (5 phút/lần, không theo lượt khách)**. Tuỳ chọn này chỉ tự bật với bản cài do ZoPanel thực hiện.

**Lưu ý:** nút **Cài WordPress** vẫn có thể hiện ở tab **Tổng quan** của website chuyển thủ công. Đừng dùng: nó sẽ từ chối với lỗi "WordPress is already installed in this website".

## Đăng nhập WordPress

- Nút **WP Admin** ở đầu trang website mở `https://<tên-miền>/wp-admin` (hiện với website do ZoPanel cài WordPress, hoặc sau khi bấm **Áp dụng tất cả** trong thẻ **Bảo mật**). Bạn cũng có thể tự gõ địa chỉ này.
- **Đăng nhập WordPress** ở tab **WordPress** đăng nhập bằng quản trị viên đầu tiên, không cần mật khẩu. Panel tạo một liên kết dùng một lần, hiệu lực 60 giây, và ghi lại trong nhật ký hoạt động. Nếu không thấy gì mở ra, hãy cho phép cửa sổ pop-up của panel.

Nếu quên mật khẩu quản trị, dùng **Đặt lại mật khẩu** trong thẻ **Bảo mật** của tab **WordPress**.

## Việc nên làm sau khi cài

1. **HTTPS:** ở tab **SSL**, kiểm tra chứng chỉ đã được cài rồi bật **Chuyển HTTP sang HTTPS**. Xem [Chứng chỉ SSL](/vi/docs/ssl).
2. **Page cache:** ở **PHP & cấu hình**, bật **Page cache**. Người đã đăng nhập, giỏ hàng, thanh toán và trang quản trị không bao giờ bị cache. Xem [Website và PHP](/vi/docs/hosting).
3. **Permalink:** trong wp-admin, vào **Settings → Permalinks** và chọn kiểu như **Post name**. Không cần sửa `.htaccess`.
4. **Bảo mật:** ở tab **WordPress**, xem thẻ **Bảo mật** và bấm **Áp dụng tất cả**.
5. **Cập nhật:** trong thẻ **Vận hành**, chọn **Tự động cập nhật an toàn** để cập nhật hằng đêm, có snapshot và tự khôi phục khi lỗi. Xem [Bộ công cụ WordPress](/vi/docs/wordpress).

## Khi DNS chưa trỏ về server

Bạn vẫn cài WordPress được trước khi đổi DNS, nhưng:

- WordPress được cài với địa chỉ `http://<tên-miền>`, vì chưa thể cấp chứng chỉ.
- ZoPanel thử cấp chứng chỉ mỗi giờ và cài ngay khi tên miền trỏ về server. Sau đó ZoPanel tự chuyển WordPress từ `http://<tên-miền>` sang `https://<tên-miền>` (bằng wp-cli search-replace, nên liên kết trong bài viết cũng được đổi; nhật ký tác vụ ghi "WordPress now uses https://…").

Nếu WordPress dùng một địa chỉ khác (ví dụ tên miền tạm), hãy tự chuyển khi đã có chứng chỉ: trong wp-admin tại **Settings → General** (**WordPress Address (URL)** và **Site Address (URL)**), hoặc trong terminal:

```bash
cd domains/example.com/public_html
wp search-replace 'http://dia-chi-cu' 'https://example.com' --skip-columns=guid
```

Khi WordPress đã dùng `https://`, bật **Chuyển HTTP sang HTTPS** ở tab **SSL**.

Để xem trước website khi chưa đổi DNS, thêm một dòng cho tên miền vào file `hosts` trên máy của bạn (`/etc/hosts` trên macOS và Linux, `C:\Windows\System32\drivers\etc\hosts` trên Windows), rồi xoá dòng đó khi DNS đã cập nhật:

```text
203.0.113.10  example.com www.example.com
```

## Xử lý sự cố

| Thông báo hoặc hiện tượng | Cách xử lý |
| --- | --- |
| "the package of alice allows 10 databases" hoặc "database limit reached" | Gói của tài khoản đã hết số database. Xoá database không dùng hoặc tăng **Cơ sở dữ liệu** trong gói. |
| "your Free plan allows 10 databases" | Đã chạm giới hạn database của license. Xem [License](/vi/docs/licensing). |
| "this feature is not included in your hosting package" | Gói không có **Cài ứng dụng & công cụ WordPress**. Liên hệ nhà cung cấp. |
| "WordPress needs a PHP website" | Website là web tĩnh hoặc reverse proxy. Chọn **Phiên bản PHP** ở **PHP & cấu hình** và đặt **Cổng ứng dụng** về 0, hoặc tạo website PHP mới. |
| "WordPress admin username is too short" / "invalid WordPress admin username" | Dùng 3 đến 60 ký tự: chữ, số, `.`, `_`, `@`, `-`. |
| "WordPress admin password: password must be 8-128 characters" hoặc "contains forbidden characters" | Dùng 8 đến 128 ký tự, không có dấu hai chấm. |
| "WordPress is already installed in this website" | Thư mục gốc đã có `wp-config.php`. Dùng tab **WordPress**, hoặc xoá file cũ trước. |
| "wp core download failed: … cURL error 6/28 …" | Server không kết nối được wordpress.org sau 3 lần thử. Kiểm tra DNS resolver và kết nối HTTPS ra ngoài của server, rồi cài lại từ tab **Tổng quan**. |
| "wp-cli is not installed" | Trình cài đặt chưa tải được wp-cli. Nhờ quản trị viên chạy lại trình cài đặt hoặc cài wp-cli vào `/usr/local/bin/wp`. |
| Log có "SSL could not be issued" | DNS chưa trỏ về server hoặc cổng 80 bị đóng. WordPress vẫn chạy trên HTTP: xem [Khi DNS chưa trỏ về server](#khi-dns-chua-tro-ve-server). |
| Tab **WordPress** báo chưa cài WordPress | WordPress phải nằm trong thư mục gốc của website (**PHP & cấu hình → Thư mục gốc**). Tải lại trang sau khi tải file lên. |
| "no WordPress administrator found" | WordPress không có user nào mang vai trò Administrator. Tạo bằng `wp user create` trong terminal. |
| "This login link has expired." | Liên kết dùng một lần đã được dùng hoặc quá 60 giây. Bấm lại **Đăng nhập WordPress**. |
| "the database of example.com (…) is not one of the account's databases" | Cập nhật và staging cần database thuộc tài khoản. Tạo database ở **Cơ sở dữ liệu** và trỏ `wp-config.php` sang database đó. |

## Xem thêm

- [Bộ công cụ WordPress](/vi/docs/wordpress)
- [Website đầu tiên](/vi/docs/first-website)
- [Chứng chỉ SSL](/vi/docs/ssl)
- [Chuyển sang ZoPanel](/vi/docs/migration)
- [Quản lý file](/vi/docs/file-manager)
- [Tài liệu WordPress](https://wordpress.org/documentation/) và [Đổi địa chỉ website](https://developer.wordpress.org/advanced-administration/upgrade/migrating/)
