ค้นหาเว็บไซต์

วิธีการปรับใช้ WordPress พร้อมกันโดยอัตโนมัติในเซิร์ฟเวอร์ Linux หลายเครื่องโดยใช้ Ansible - ตอนที่ 3


ในสองบทความก่อนหน้าของชุด Ansible นี้ เราได้อธิบายวิธีการติดตั้งและกำหนดค่า Ansible เพื่อเรียกใช้คำสั่งและทำงานที่ซับซ้อนในเซิร์ฟเวอร์ระยะไกลหลายเครื่องพร้อมกัน

ในบทช่วยสอนปัจจุบัน เราจะอธิบายวิธีการตั้งค่า WordPress ในเซิร์ฟเวอร์ระยะไกลเดียวกัน:

node1: 192.168.0.29
node2: 192.168.0.30

ที่เราติดตั้ง เปิดใช้งาน และเริ่มต้น Apache (ตอนนี้คุณคงทราบแล้วว่าทำไมเราถึงเลือกทำงานกับเว็บเซิร์ฟเวอร์เป็นตัวอย่างเบื้องต้นในบทช่วยสอนที่แล้ว)

ฉันขอแนะนำให้คุณอ่านส่วนที่ 1 และ ส่วนที่ 2 ก่อนที่จะดำเนินการต่อเพื่อให้แน่ใจว่าคุณคุ้นเคยกับแนวคิดที่เกี่ยวข้องกับ Ansible

วิธีติดตั้งและกำหนดค่าเครื่องมืออัตโนมัติ 'Ansible' สำหรับการจัดการไอที – ส่วนที่ 1

วิธีใช้ Anisble Playbooks เพื่อทำให้งานที่ซับซ้อนเป็นอัตโนมัติบนเซิร์ฟเวอร์ระยะไกลหลายเครื่อง – ส่วนที่ 2

ขั้นตอนที่ 1: แนะนำบทบาทที่เข้าใจได้

เมื่อคุณเริ่มเพิ่มงานในการเล่นมากขึ้น Playbooks ของคุณอาจจัดการได้ยากขึ้นเรื่อยๆ ด้วยเหตุนี้ แนวทางที่แนะนำในสถานการณ์เหล่านั้น (อันที่จริง ในทุกกรณี) คือการใช้โครงสร้างไดเร็กทอรีที่มีคำสั่งสำหรับแต่ละกลุ่มงานในไฟล์ที่แตกต่างกัน

แนวทางนี้ช่วยให้เราสามารถนำไฟล์การกำหนดค่าเหล่านี้กลับมาใช้ซ้ำในโปรเจ็กต์ที่แยกจากกันต่อไปได้ แต่ละไฟล์เหล่านี้จะกำหนดสิ่งที่เรียกว่าบทบาทใน ระบบนิเวศที่เข้าใจได้

ในกรณีของเรา เราจะสร้างสองบทบาท หนึ่งในนั้น (เรียกว่า wp-dependencies) จะถูกใช้เพื่อติดตั้งการขึ้นต่อกันของ WordPress (PHP และ MariaDB – ไม่จำเป็นต้องติดตั้ง Apache ตามที่ติดตั้งไว้แล้ว)

บทบาทอื่นๆ (ชื่อ wp-install-config) จะรวมงานที่จำเป็นทั้งหมดที่เกี่ยวข้องกับการติดตั้งและการกำหนดค่าของ WordPress

ขั้นตอนที่ 2: การสร้างบทบาทที่เข้าใจได้

Ansible มาพร้อมกับยูทิลิตี้ชื่อ ansible-galaxy ซึ่งจะช่วยให้เราสร้างโครงสร้างไดเร็กทอรีสำหรับบทบาทของเรา เราจะดำเนินการนี้ใน /etc/ansible/playbooks (ซึ่งเราสร้างขึ้นใน ส่วนที่ 2) แต่ในทางทฤษฎีแล้ว คุณสามารถตั้งค่าไว้ในไดเร็กทอรีอื่นได้หากต้องการ

cd /etc/ansible/playbooks
ansible-galaxy init wp-dependencies
ansible-galaxy init wp-install-config

ถัดไปยืนยันบทบาทที่สร้างขึ้นใหม่

ls -R /etc/ansible/playbooks

ในภาพด้านบน เราจะเห็นว่า ansible-galaxy สร้างไดเร็กทอรีสองไดเร็กทอรีที่มีชื่อเดียวกับบทบาทของเรา และไดเร็กทอรีย่อยอื่น ๆ (defaults, files , ตัวจัดการ, เมตา, งาน, เทมเพลต และ vars) และ README.md ภายในแต่ละไฟล์

นอกจากนี้ ไฟล์ YAML ชื่อ main.yml ยังถูกสร้างขึ้นภายในไดเร็กทอรีทั้งหมดที่แสดงไว้ก่อนหน้านี้ ยกเว้นไฟล์และเทมเพลต

เราจะเริ่มต้นด้วยการแก้ไขไฟล์การกำหนดค่าต่อไปนี้ตามที่ระบุไว้:

1. /etc/ansible/playbooks/wp-dependencies/tasks/main.yml โปรดทราบว่าเราจะรวม httpd ในกรณีที่คุณไม่ได้ติดตามพร้อมกับบทแนะนำก่อนหน้าของชุดนี้

---
tasks file for wp-dependencies
- name: Update packages (this is equivalent to yum update -y)
  yum: name=* state=latest

- name: Install dependencies for WordPress
  yum: name={{ item }} state=present
  with_items:
        - httpd
        - mariadb-server 
        - mariadb
        - php 
        - php-mysql
        - MySQL-python

- name: Ensure MariaDB is running (and enable it at boot)
  service: name=mariadb state=started enabled=yes

- name: Copy ~/.my.cnf to nodes
  copy: src=/root/.my.cnf dest=/root/.my.cnf

- name: Create MariaDB database
  mysql_db: name={{ wp_mysql_db }} state=present

- name: Create MariaDB username and password
  mysql_user:
        login_user=root
        login_password=YourMariaDBRootPasswordHere
        name={{ wp_mysql_user }}
        password={{ wp_mysql_password }}
        priv=*.*:ALL

2. /etc/ansible/playbooks/wp-dependencies/defaults/main.yml

---
defaults file for wp-dependencies
  wp_mysql_db: MyWP
  wp_mysql_user: wpUser
  wp_mysql_password: wpP4ss

3. /etc/ansible/playbooks/wp-install-config/tasks/main.yml:

---
tasks file for wp-install-config
- name: Create directory to download WordPress
  command: mkdir -p /opt/source/wordpress

- name: Download WordPress
  get_url: url=https://www.wordpress.org/latest.tar.gz dest=/opt/source/wordpress/wordpress.tar.gz validate_certs=no

- name: Extract WordPress
  command: "tar xzf /opt/source/wordpress/wordpress.tar.gz -C /var/www/html --strip-components 1"

- name: Send config file
  copy: src=/root/wp-config-sample.php dest=/var/www/html/wp-config.php mode=0644

4. wp-config-sample.php (มีให้ใน Pastebin นี้) ดังต่อไปนี้และบันทึกลงในเครื่อง Ansible controller ของคุณ (ดังที่คุณเห็นในคำสั่งการคัดลอกล่าสุดด้านบน ฉันดาวน์โหลดมันไปที่โฮมไดเร็กตอรี่ของ superuser (/root/wp-config-sample.php)

สำคัญ: โปรดทราบว่าค่าสำหรับตัวแปร DB_NAME, DB_USER และ DB_PASSWORD เหมือนกับใน /etc/ansible/playbooks/wp-dependencies/defaults/main.yml:

…
/** The name of the database for WordPress */
define('DB_NAME', 'MyWP');

/** MySQL database username */
define('DB_USER', 'wpUser');

/** MySQL database password */
define('DB_PASSWORD', 'wpP4ss');
…

5. สำหรับการติดตั้งเซิร์ฟเวอร์ฐานข้อมูลใหม่โดยที่รหัสผ่านรูทว่างเปล่า เช่น ในกรณีนี้ น่าเสียดาย เราจำเป็นต้องตั้งค่ารหัสผ่านสำหรับผู้ใช้รูทเป็นรายบุคคลในทุกเครื่องผ่าน mysql_secure_installation .

เท่าที่ฉันรู้ ไม่มีวิธีแก้ปัญหาชั่วคราวที่อนุญาตให้คุณตั้งค่ารหัสผ่านรูทผ่าน Ansible ในขั้นตอนเดียวกับที่คุณสร้างบัญชีฐานข้อมูลผู้ดูแลระบบสำหรับ WordPress

ตรวจสอบให้แน่ใจว่าคุณใช้รหัสผ่านเดียวกันในโฮสต์ทั้งหมด จากนั้นคัดลอกข้อมูลรับรองใน /root/.my.cnf (ตำแหน่งจริงอาจแตกต่างกันในกรณีของคุณ แต่ในทุกกรณี จะต้องตรงกับค่า ของพารามิเตอร์ src สำหรับงาน คัดลอก ~/.my.cnf ไปยังโหนดใน /etc/ansible/playbooks/wp-dependencies/tasks/main.yml )

ในไฟล์นั้น (ดูด้านบน) เราถือว่ารหัสผ่านสำหรับรูทคือ YourMariaDBRootPassword

6. ต่อไป Playbook ของเรา (/etc/ansible/playbooks/playbook.yml) จะดูเป็นระเบียบและเรียบง่ายมากขึ้นมากเมื่อเทียบกับบทแนะนำก่อนหน้า:

cat playbook.yml

- hosts: webservers
  roles:
        - wp-dependencies
        - wp-install-config

ในที่สุดก็ถึงเวลารันงานเหล่านี้โดยเรียกใช้ Playbook ของเรา:

ansible-playbook playbook.yml

ตอนนี้เรามาตรวจสอบว่าเราสามารถเข้าถึงหน้าผู้ดูแลระบบ WordPress โดยใช้ที่อยู่ IP ของ node1 192.168.0.29 และ node2 192.168.0.30:

คุณสามารถดูสองขั้นตอนสุดท้ายได้ใน screencast ต่อไปนี้:

อย่างที่คุณเห็น คุณสามารถตั้งค่าการติดตั้ง WordPress หลายรายการได้โดยใช้ Ansible จากนั้น คุณสามารถใช้อินเทอร์เฟซผู้ใช้ ผู้ดูแลระบบ ที่เกี่ยวข้องเพื่อกำหนดค่าแต่ละไซต์แยกกัน

ข้อควรพิจารณาขั้นสุดท้าย

หากคุณใช้การแจกจ่ายอื่นเพื่อปรับใช้ WordPress ชื่อแพ็กเกจอาจแตกต่างกันไป แต่ขึ้นอยู่กับการติดตั้งเว็บเซิร์ฟเวอร์ Apache, เซิร์ฟเวอร์ฐานข้อมูล MariaDB และโมดูล Python MySQL หากเป็นกรณีนี้ ให้ใช้ระบบการจัดการซอฟต์แวร์ของการแจกจ่ายของคุณเพื่อค้นหาชื่อแพ็คเกจที่คุณต้องการติดตั้ง

สรุป

ในซีรีส์นี้ เราได้อธิบายวิธีใช้ Ansible เพื่อรันคำสั่งและดำเนินงานที่ซับซ้อนในเครื่อง Linux หลายเครื่องพร้อมกัน

หนึ่งในตัวอย่างดังกล่าวคือการตั้งค่า WordPress ตามที่เราได้กล่าวถึงในคู่มือนี้ ไม่ว่าคุณจะเป็นผู้ดูแลระบบหรือบล็อกเกอร์ ฉันหวังว่าคุณจะพบว่าแนวคิดและตัวอย่างในบทช่วยสอนนี้มีประโยชน์

ขอให้โชคดีและอย่าลังเลที่จะติดต่อเราหากคุณต้องการความช่วยเหลือหรือมีความคิดเห็นหรือข้อเสนอแนะ!