Table of Contents

Join CloudFly's Telegram channel to receive more offers and never miss any promotions from CloudFly

Hướng dẫn tự động hóa cài đặt WordPress với LAMP sử dụng Ansible trên Ubuntu 18.04

Posted on: July 17, 2025

description image

Giới thiệu

Tự động hóa máy chủ hiện đóng vai trò thiết yếu trong quản trị hệ thống, do tính chất dùng một lần của các môi trường ứng dụng hiện đại. Công cụ quản lý cấu hình như Ansible thường được sử dụng để đơn giản hóa quy trình tự động thiết lập máy chủ mới, đồng thời giảm thiểu lỗi do thao tác thủ công.

Ansible cung cấp kiến trúc đơn giản không yêu cầu phải cài đặt phần mềm đặc biệt trên các nút. Nó cũng cung cấp bộ tính năng mạnh mẽ cùng các module tích hợp giúp việc viết các script tự động hóa trở nên dễ dàng.

Hướng dẫn này giải thích cách sử dụng Ansible để tự động hóa các bước trong hướng dẫn "Cách cài đặt WordPress với LAMP trên Ubuntu 18.04". WordPress là hệ quản trị nội dung phổ biến nhất trên Internet, cho phép người dùng thiết lập các blog và trang web linh hoạt dựa trên MySQL và xử lý PHP. Sau khi thiết lập, hầu hết việc quản trị có thể được thực hiện qua giao diện web.

Các yêu cầu

Để thực thi việc tự động thiết lập bằng playbook trong hướng dẫn này, bạn cần:

  • Một node điều khiển Ansible: một máy Ubuntu 18.04 có Ansible được cài đặt và cấu hình kết nối đến các máy chủ Ansible qua SSH key. Đảm bảo node điều khiển có người dùng bình thường với quyền sudo và tường lửa đã bật như hướng dẫn trong "Thiết lập máy chủ ban đầu". Để cài đặt Ansible, hãy theo hướng dẫn "Cách cài đặt và cấu hình Ansible trên Ubuntu 18.04".
  • Một hoặc nhiều máy chủ Ansible: một hoặc nhiều máy chủ Ubuntu 18.04 từ trước đã được thiết lập theo hướng dẫn "Cách sử dụng Ansible tự động thiết lập máy chủ ban đầu trên Ubuntu 18.04".

Trước khi tiếp tục, bạn cần chắc chắn node điều khiển Ansible có thể kết nối và thực thi lệnh trên các máy chủ Ansible. Để kiểm tra kết nối, xem bước 3 trong hướng dẫn "Cách cài đặt và cấu hình Ansible trên Ubuntu 18.04".

Playbook này làm gì?

Playbook Ansible này cung cấp phương pháp thay thế cho việc thực hiện thủ công các bước trong hướng dẫn "Cách cài đặt WordPress với LAMP trên Ubuntu 18.04".

Khi chạy, playbook sẽ thực hiện các hành động sau trên các máy chủ Ansible:

  1. Cài đặt aptitude, được Ansible ưu tiên so với apt.
  2. Cài đặt các gói LAMP và các tiện ích mở rộng PHP cần thiết.
  3. Tạo và kích hoạt một Apache VirtualHost mới cho trang WordPress.
  4. Kích hoạt module rewrite của Apache (mod_rewrite).
  5. Vô hiệu hóa trang web mặc định của Apache.
  6. Đặt mật khẩu cho user root của MySQL.
  7. Xóa các tài khoản MySQL ẩn danh và cơ sở dữ liệu thử nghiệm.
  8. Tạo cơ sở dữ liệu và user MySQL mới cho WordPress.
  9. Cấu hình UFW cho phép lưu lượng HTTP trên cổng được cấu hình (mặc định là 80).
  10. Tải và giải nén WordPress.
  11. Thiết lập quyền sở hữu và quyền truy cập thư mục chính xác.
  12. Thiết lập tập tin wp-config.php sử dụng mẫu có sẵn.

Sau khi playbook chạy xong, bạn sẽ có một cài đặt WordPress chạy trên môi trường LAMP dựa trên các tuỳ chọn bạn đã định nghĩa trong biến cấu hình.

Cách sử dụng playbook này

Đầu tiên, bạn cần lấy playbook WordPress trên LAMP và các phụ thuộc từ kho do-community/ansible-playbooks. Hãy clone kho này vào thư mục local trên node điều khiển Ansible.

Nếu bạn đã clone kho này khi làm theo một hướng dẫn khác, vào thư mục ansible-playbooks hiện có và chạy lệnh git pull để cập nhật nội dung:

$ cd ~/ansible-playbooks
$ git pull

Nếu bạn lần đầu sử dụng, hãy clone kho vào thư mục home:

$ cd ~
$ git clone https://github.com/do-community/ansible-playbooks.git
$ cd ansible-playbooks

Các tệp của playbook nằm trong thư mục wordpress-lamp_ubuntu1804 với cấu trúc:

wordpress-lamp_ubuntu1804
├── files
│   ├── apache.conf.j2
│   └── wp-config.php.j2
├── vars
│   └── default.yml
├── playbook.yml
└── readme.md

Ý nghĩa từng tệp:

  • files/apache.conf.j2: Mẫu cấu hình Apache VirtualHost.
  • files/wp-config.php.j2: Mẫu tập tin cấu hình WordPress.
  • vars/default.yml: Tệp biến để tùy chỉnh các tuỳ chọn playbook.
  • playbook.yml: Tệp playbook định nghĩa các nhiệm vụ thực thi trên máy chủ từ xa.
  • readme.md: Tệp thông tin về playbook.

Bạn sẽ chỉnh sửa tệp biến vars/default.yml để tùy chỉnh.

Truy cập thư mục wordpress-lamp_ubuntu1804 và mở tệp vars/default.yml bằng trình soạn thảo dòng lệnh bạn thích:

$ cd wordpress-lamp_ubuntu1804
$ nano vars/default.yml

Tệp này chứa vài biến cần chú ý:

---
#System Settings
php_modules: ['php-curl', 'php-gd', 'php-mbstring', 'php-xml', 'php-xmlrpc', 'php-soap', 'php-intl', 'php-zip']

#MySQL Settings
mysql_root_password: "mysql_root_password"
mysql_db: "wordpress"
mysql_user: "sammy"
mysql_password: "password"

#HTTP Settings
http_host: "your_domain"
http_conf: "your_domain.conf"
http_port: "80"

Ý nghĩa biến:

  • php_modules: Mảng các tiện ích mở rộng PHP cần cài để hỗ trợ WordPress. Bạn có thể thêm nếu cần.
  • mysql_root_password: Mật khẩu cho tài khoản root của MySQL.
  • mysql_db: Tên cơ sở dữ liệu MySQL sẽ dùng cho WordPress.
  • mysql_user: Tên user MySQL mới cho WordPress.
  • mysql_password: Mật khẩu cho user MySQL mới.
  • http_host: Tên miền của bạn.
  • http_conf: Tên file cấu hình sẽ tạo trong Apache.
  • http_port: Cổng HTTP của virtual host (mặc định 80).

Sau khi chỉnh sửa xong nhớ lưu và thoát file.

Để chạy playbook trên một hoặc nhiều máy chủ, mặc định nó chạy trên toàn bộ máy trong inventory. Bạn có thể dùng cờ -l để chỉ chạy trên máy chủ cụ thể, và cờ -u để chỉ định user kết nối.

Ví dụ, để chạy trên server1 với user sammy:

$ ansible-playbook playbook.yml -l server1 -u sammy

Dưới đây là ví dụ giao diện đầu ra:

PLAY [all] *****************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [server1]

TASK [Install prerequisites] ***********************************************************************************************************
ok: [server1]

…

TASK [Download and unpack latest WordPress] ********************************************************************************************
changed: [server1]

TASK [Set ownership] *******************************************************************************************************************
changed: [server1]

TASK [Set permissions for directories] *************************************************************************************************
changed: [server1]

TASK [Set permissions for files] *******************************************************************************************************
changed: [server1]

TASK [Set up wp-config] ****************************************************************************************************************
changed: [server1]

RUNNING HANDLER [Reload Apache] ********************************************************************************************************
changed: [server1]

RUNNING HANDLER [Restart Apache] *******************************************************************************************************
changed: [server1]

PLAY RECAP *****************************************************************************************************************************
server1          : ok=22   changed=18   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Lưu ý: Để biết thêm cách chạy Ansible playbook, xem Hướng dẫn Mẹo Ansible.

Khi playbook hoàn thành, bạn có thể truy cập trình duyệt và tới tên miền hoặc địa chỉ IP công cộng của máy chủ:

http://server_host_or_IP

Bạn sẽ thấy giao diện chọn ngôn ngữ của WordPress, sau đó là bước cuối cùng để tạo user và mật khẩu đăng nhập bảng điều khiển.

Nội dung Playbook

  • vars/default.yml định nghĩa các biến cấu hình như database và tên miền.
  • files/apache.conf.j2 là template Jinja 2 cấu hình Apache VirtualHost.
  • files/wp-config.php.j2 là template cấu hình WordPress với các key bảo mật.
  • playbook.yml định nghĩa tất cả nhiệm vụ trong quá trình thiết lập.

Playbook playbook.yml có cấu trúc chính:

  • Tham chiếu đến hosts all.
  • Gọi biến từ vars/default.yml.
  • Các nhiệm vụ bao gồm:
    • Cài đặt các gói cần thiết (aptitude, LAMP, PHP modules).
    • Cấu hình Apache: tạo thư mục, VirtualHost, bật mod_rewrite, bật site mới, tắt site mặc định.
    • Cấu hình MySQL: đặt mật khẩu root, xoá user ẩn danh và database test, tạo database và user mới.
    • Cấu hình UFW cho phép cổng HTTP.
    • Cài đặt WordPress: tải về, thiết lập quyền, tạo file wp-config.
  • Handlers để reload và restart Apache khi cần.

Bạn có thể chỉnh sửa các tập tin này để phù hợp nhu cầu của mình.

Kết luận

Trong hướng dẫn này, chúng ta đã sử dụng Ansible để tự động hóa quy trình cài đặt và thiết lập trang WordPress với môi trường LAMP trên máy chủ Ubuntu 18.04.

Nếu bạn muốn bổ sung thêm các nhiệm vụ để tùy chỉnh máy chủ, vui lòng tham khảo hướng dẫn giành cho người mới về Ansible: "Quản lý cấu hình 101: Viết Ansible Playbooks".

Join CloudFly's Telegram channel to receive more offers and never miss any promotions from CloudFly
Share

0 replies