DirectAdmin tự động cài WordPress khi tạo user/domain: chỉ 4 bước thiết lập

Nếu bạn bán hosting WordPress hoặc thường xuyên tạo website demo trên subdomain, việc cài WordPress thủ công cho từng user, từng tên miền sẽ nhanh chóng trở nên nhàm chán. DirectAdmin có sẵn cơ chế hook custom scripts chạy script ngay sau khi tạo user, thêm tên miền hoặc tạo subdomain. Kết hợp với WP-CLI, bạn chỉ cần thiết lập một lần là mọi website mới đều tự có WordPress, database và thông tin đăng nhập riêng.

Tính năng này làm được gì?

Sau khi thiết lập xong, DirectAdmin sẽ tự động cài WordPress khi tạo user mới bằng package đã bật tùy chọn, khi thêm tên miền mới và tick chọn cài đặt, khi sửa một tên miền đã có và bật tùy chọn, và khi thêm subdomain. Mọi bản cài đều dùng HTTPS, tài khoản quản trị trùng tên user, mật khẩu ngẫu nhiên, và thông tin đăng nhập được lưu vào file .wp-details.txt trong thư mục web.

Bạn cần quyền root qua SSH trên VPS đang chạy DirectAdmin, cùng công cụ SSH/SFTP như Bitvise hay MobaXterm trên Windows, Terminus trên Mac.

Bước 1: Cài đặt WP-CLI

WP-CLI là công cụ dòng lệnh giúp tải, cấu hình và cài đặt WordPress mà không cần mở trình duyệt. Script tự động sẽ gọi WP-CLI qua /usr/local/bin/wp, vì vậy hãy cài đặt nó trước:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Sau ba lệnh trên, WP-CLI đã sẵn sàng để các script ở bước 4 gọi tới.

DirectAdmin tự động cài WordPress khi tạo user/domain: chỉ 4 bước thiết lập

Bước 2: Thêm tùy chọn “Install WordPress” cho package

DirectAdmin cho phép admin tự thêm trường tùy chỉnh vào form package. Tạo file cấu hình rồi điền một dòng định nghĩa trường đó:

touch /usr/local/directadmin/data/admin/custom_package_items.conf
nano /usr/local/directadmin/data/admin/custom_package_items.conf

Trong trình soạn thảo nano, nhập dòng sau, rồi lưu bằng Ctrl + O và thoát bằng Ctrl + X:

installWP=type=checkbox&string=Install WordPress&desc=Automatically install WordPress with this User Package&checked=yes

Cuối cùng, phân quyền để chỉ tài khoản quản trị DirectAdmin đọc được file này:

chown diradmin. /usr/local/directadmin/data/admin/custom_package_items.conf
chmod 700 /usr/local/directadmin/data/admin/custom_package_items.conf

Bước 3: Thêm tùy chọn tương tự cho tên miền

Một package bật sẵn chưa đủ: khi thêm tên miền, người quản trị vẫn cần quyền quyết định có cài WordPress cho tên miền đó hay không. Cách làm giống hệt bước 2, chỉ khác tên file và giá trị mặc định là không tick:

touch /usr/local/directadmin/data/admin/custom_domain_items.conf
nano /usr/local/directadmin/data/admin/custom_domain_items.conf
installWP=type=checkbox&string=Install WordPress&desc=Automatically install WordPress for this domain&checked=no
chown diradmin. /usr/local/directadmin/data/admin/custom_domain_items.conf
chmod 700 /usr/local/directadmin/data/admin/custom_domain_items.conf

Lưu ý: package mặc định bật (checked=yes), còn tên miền mặc định tắt (checked=no).

Bước 4: Tạo 4 script hook tự động cài đặt

Đây là phần cốt lõi. DirectAdmin sẽ tự chạy các script trong thư mục /usr/local/directadmin/scripts/custom/ sau mỗi sự kiện tương ứng. Cả bốn script đều chung một luồng xử lý: kiểm tra biến $installWP, tạo database và mật khẩu ngẫu nhiên, tải WordPress bằng WP-CLI, cài đặt, dọn plugin mặc định và khóa quyền file nhạy cảm. Điểm khác nhau nằm ở thời điểm chạy và đường dẫn đích.

Bốn file script cần tạo

  • user_create_post.sh — chạy sau khi tạo user mới, cài WordPress cho tên miền chính của user đó.
  • domain_create_post.sh — chạy sau khi thêm tên miền mới (addon domain), cài WordPress cho tên miền vừa thêm.
  • domain_modify_post.sh — chạy khi sửa tên miền đã có: tick chọn Install WordPress rồi lưu là script cài đặt. Script này chuyển toàn bộ nội dung cũ của public_html vào thư mục sao lưu ~/wp-backup/$domain-backup trước khi cài mới.
  • subdomain_create_post.sh — chạy sau khi tạo subdomain, cài WordPress vào thư mục con của subdomain. Script này không kiểm tra biến $installWP mà chạy cho mọi subdomain mới, và chỉ đúng với bản DirectAdmin cũ lưu subdomain trong public_html; bản mới lưu subdomain ngang hàng trong thư mục domains cần sửa lại đường dẫn.

Tạo từng file bằng touch rồi mở bằng nano, ví dụ với script tạo user:

touch /usr/local/directadmin/scripts/custom/user_create_post.sh
nano /usr/local/directadmin/scripts/custom/user_create_post.sh

Luồng xử lý chung của script

Khung logic dưới đây tóm lược những gì cả bốn script đều làm — áp dụng cùng khung cho từng file, chỉ đổi tên biến và đường dẫn đích:

#!/bin/bash
# Neu $installWP khong phai 'ON' thi dung lai ngay
if [[ $installWP != 'ON' ]]; then
  exit 0;
else
  # Tao mat khau database va mat khau quan tri ngau nhien
  dbpass=$(openssl rand -base64 12)
  wpadminpass=$(openssl rand -base64 14)
  # Neu da co index.php thi bao loi va dung, tranh ghi de
  # Tao database + user MySQL bang tai khoan da_admin
  # Tai WordPress: wp core download
  # Tao wp-config: wp config create --dbname=... --dbuser=... --dbpass=... --dbhost=localhost
  # Cai dat: wp core install --url=https://$domain/ --admin_user=$username --admin_password=$wpadminpass --title="$domain" --admin_email=$username@$domain
  # Dat permalink: wp rewrite structure '/%postname%/'
  # Luu thong tin dang nhap vao .wp-details.txt, xoa plugin hello va akismet,
  # tao .htaccess chuan, chmod thu muc 0755 / file 0644,
  # khoa wp-config.php va .wp-details.txt o 400
fi
exit 0;

Trong quá trình chạy, script đổi tên file index.html mặc định của DirectAdmin thành .bak nếu có, và tạo liên kết private_html trỏ sang public_html để site chạy qua HTTPS. Thông tin đăng nhập được in ra màn hình và ghi vào .wp-details.txt. Riêng khi sửa tên miền cũ, thông tin này không hiện trên màn hình mà chỉ nằm trong file .wp-details.txt trong public_html.

Sau khi lưu nội dung cho mỗi script, phân quyền giống nhau cho cả bốn file, ví dụ:

chown diradmin.diradmin /usr/local/directadmin/scripts/custom/user_create_post.sh
chmod 700 /usr/local/directadmin/scripts/custom/user_create_post.sh

Lặp lại cho 3 file còn lại. Quyền 700 đảm bảo chỉ tài khoản diradmin mới đọc và chạy được script chứa mật khẩu database.

Sửa lỗi xuống dòng Windows nếu có

Nếu bạn soạn script bằng trình soạn thảo trên Windows rồi đưa lên VPS qua SFTP, file có thể dính ký tự \r và báo lỗi /bin/bash^M: bad interpreter. Khắc phục bằng lệnh sed cho cả bốn file:

sed -i 's/\r$//' /usr/local/directadmin/scripts/custom/domain_create_post.sh
sed -i 's/\r$//' /usr/local/directadmin/scripts/custom/subdomain_create_post.sh
sed -i 's/\r$//' /usr/local/directadmin/scripts/custom/domain_modify_post.sh
sed -i 's/\r$//' /usr/local/directadmin/scripts/custom/user_create_post.sh

Lưu ý về SSL và cách sử dụng

Mọi lệnh cài đặt đều dùng https://, vì vậy sau khi cài đặt bạn phải gắn chứng chỉ SSL cho tên miền hoặc subdomain thì site mới truy cập an toàn. Từ đây, quy trình rất đơn giản: tạo package có tick Install WordPress, tạo user bằng package đó, hoặc thêm tên miền/subdomain và tick chọn cài đặt — WordPress sẽ tự xuất hiện cùng database riêng, permalink dạng tên bài viết, plugin Hello Dolly và Akismet đã được gỡ bỏ.

Kết luận

Chỉ với WP-CLI, hai file tùy chọn và bốn script hook, DirectAdmin đã có thể tự động cài WordPress cho user, tên miền và subdomain mới mà không cần thêm panel hay plugin nào. Hãy thử trên một user thử nghiệm trước, kiểm tra kỹ thông tin đăng nhập và chứng chỉ SSL, rồi mới áp dụng cho các package đang chạy thật.

👉 Cần VPS để thực hành? Đăng ký VPS BNIX tại đây

  • 🏢 Chuyên thiết kế web cho doanh nghiệp và cá nhân
  • 🤖 Giải pháp tự động hóa cho Doanh nghiệp và cá nhân
  • 📞 0925045760
  • 🌐 thietkewebdian.com
4.8/5 - (31 bình chọn)
Đăng ký
Thông báo về
guest
0 Bình Luận
Oldest
Newest Most Voted
Inline Feedbacks
Xem tất cả
0
Rất thích suy nghĩ của bạn, hãy bình luận.x
()
x