Thứ hai, 02/02/2015 | 00:00 GMT+7

Cách sử dụng puppet để quản lý chủ đề và plugin WordPress trên Ubuntu 14.04

Nếu bạn là administrator trang web quản lý một số version của WordPress, bạn sẽ biết công việc lặp đi lặp lại như thế nào để cập nhật tất cả các chủ đề và plugin của bạn. Hơn nữa, với rất nhiều chủ đề và plugin mới và thú vị hiển thị mỗi ngày, bạn nhất định phải cài đặt và gỡ cài đặt rất nhiều trong số chúng.

Trong hướng dẫn này, bạn sẽ học cách sử dụng các file kê khai Puppet đơn giản và WP-CLI để tự động hóa các hoạt động như cài đặt, xóa và cập nhật các chủ đề và plugin WordPress.

Yêu cầu

Bạn cần những thứ sau:

  • Một server Ubuntu 14.04
  • Một user sudo
  • Hiểu biết cơ bản về cách hoạt động của các module và file kê khai Puppet . Bạn có thể tham khảo hướng dẫn này để nâng cao kỹ năng Puppet của bạn : Cách Sử dụng Puppet để Quản lý Server của bạn
  • WordPress 4.1 trở lên
  • Puppet 3.7.1 hoặc mới hơn

Sử dụng hướng dẫn này để cài đặt cả WordPress và Puppet: Cách tạo module puppet để tự động hóa cài đặt WordPress trên Ubuntu 14.04

Bước 1 - Tạo module mới

Trong bước này, ta sẽ xây dựng dựa trên cài đặt WordPress vani mà ta đã tạo trong hướng dẫn đầu tiên .

Mô-đun của ta sẽ sử dụng WP-CLI (Giao diện dòng lệnh WordPress) để thực hiện hầu hết các hoạt động của nó. Như tên gọi của nó, WP-CLI là một công cụ cho phép ta tương tác với WordPress bằng dòng lệnh (và các tập lệnh) thay vì trình duyệt.

Bây giờ, hãy tạo một module cho phép ta tương tác với WP-CLI bằng Puppet.

Nhập folder module Puppet .

cd /etc/puppet/modules 

Hãy gọi module là wordpress_manager . Tạo một folder mới cho nó.

sudo mkdir /etc/puppet/modules/wordpress_manager 

Tạo một folder có tên manifests để lưu trữ tất cả các file kê khai của nó.

sudo mkdir /etc/puppet/modules/wordpress_manager/manifests 

Bước 2 - Tạo lớp để cài đặt WP-CLI

Trong bước này, ta sẽ tự động hóa việc cài đặt WP-CLI. Việc cài đặt WP-CLI phải được tự động hóa vì nó phải có mặt trên mọi server đang chạy WordPress.

Đây là những gì ta làm trong lớp học này:

  • Đảm bảo rằng curl được cài đặt. Điều này là cần thiết để download version mới nhất của WP-CLI.
  • Đảm bảo rằng php5-cli được cài đặt.
  • Download WP-CLI bằng curl và đặt nó vào folder /usr/bin .
  • Làm cho WP-CLI có thể thực thi bằng cách đặt chế độ của nó thành 775 hoặc a+x .

Sử dụng nano để tạo một file mới có tên là install.pp .

sudo nano /etc/puppet/modules/wordpress_manager/manifests/install.pp 

Thêm mã sau vào nó. Các comment trong dòng sẽ giúp bạn hiểu mã hoạt động:

class wordpress_manager::install {      # Install curl     package { 'curl':         ensure => latest     }      # Install php5-cli     package { 'php5-cli':         ensure => latest     }      # Download WP-CLI using curl     exec { 'Install WP CLI':         command => "/usr/bin/curl -o /usr/bin/wp-cli -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar",         require => [ Package['curl'], Package['php5-cli'] ],         creates => "/usr/bin/wp-cli"     }      # Change the mode of WP-CLI to a+x     file { '/usr/bin/wp-cli':         mode => "775",         require => Exec['Install WP CLI']     }  } 

Các creates thuộc tính trong exec lệnh ở đó để kiểm tra xem WP-CLI đã được tải về. Nếu không có thuộc tính này, Puppet sẽ download WP-CLI mỗi khi module được sử dụng.

Bước 3 - Tạo một loại xác định để tương tác với WP-CLI

Để quản lý các chủ đề, nên sử dụng lệnh theme của WP-CLI. Trong file kê khai của ta , ta sử dụng lệnh kích hoạt, xóa, cài đặt và cập nhật bằng lệnh theme . Tương tự, để quản lý các plugin, nên sử dụng lệnh plugin của WP-CLI. Ta sử dụng các lệnh phụ kích hoạt, hủy kích hoạt, cài đặt, gỡ cài đặt và cập nhật với các lệnh plugin .

Do đó, kiểu được xác định của ta cần các tham số sau:

  • $resource_type - Giá trị của nó sẽ là plugin hoặc theme .
  • $action - Đây sẽ là một trong những lệnh con.
  • $resource_name - Tên của plugin hoặc chủ đề.
  • $root_directory - Điều này là cần thiết và quan trọng vì lệnh wp-cli phải được chạy từ bên trong folder nơi WordPress được cài đặt.
  • $user - Giá trị của tham số này phải là tên user của user Unix sở hữu version WordPress.

Đây là những gì ta làm trong loại này:

  • Đảm bảo rằng WP-CLI đã được cài đặt
  • Tạo và thực thi lệnh WP-CLI dựa trên các tham số nhận được

Để tránh sai sót, thêm các hạn chế sau sử dụng unlessonlyif thuộc tính của Múa rối của exec lệnh:

  • Chỉ cài đặt một mục nếu nó chưa được cài đặt. Lệnh is-installed của WP-CLI được sử dụng để xác định xem mục đã được cài đặt hay chưa.
  • Chỉ kích hoạt / hủy kích hoạt / xóa / gỡ cài đặt / cập nhật một mục nếu nó đã được cài đặt.

Tạo một file mới có tên resource.pp .

sudo nano /etc/puppet/modules/wordpress_manager/manifests/resource.pp 

Thêm mã sau vào nó. , các comment nội dòng sẽ giúp bạn hiểu mã hoạt động.

Lưu ý : Theo mặc định, module của ta sẽ sử dụng /var/www làm folder cài đặt Wordpress và root làm chủ sở hữu file Wordpress. Bạn có thể phải thay đổi các giá trị của thuộc tính $root_directory$user về phía đầu mã để phản ánh môi trường của bạn.

define wordpress_manager::resource (     $resource_name,     $resource_type,     $root_directory = "/var/www/",     $action,     $user = "root", ) {      # Make sure WP_CLI is installed     require wordpress_manager::install      $wp_cli = "/usr/bin/wp-cli --allow-root"      # Install the theme or plugin unless it is already installed.     if $action == "install" {         exec { "Install $resource_name":             command => "$wp_cli $resource_type $action $resource_name",             unless => "$wp_cli $resource_type is-installed $resource_name",             cwd => $root_directory,             user => $user         }     }      # Activate or update the theme or plugin only if it is currently installed.     if $action == "activate" or $action == "update" {         exec { "$action $resource_name":             command => "$wp_cli $resource_type $action $resource_name",             onlyif => "$wp_cli $resource_type is-installed $resource_name",             cwd => $root_directory,             user => $user         }     }      # Uninstall or deactivate a plugin only if it is currently installed.     if $resource_type == "plugin" {         if $action == "uninstall" or $action == "deactivate" {             exec { "$action $resource_name":                 command => "$wp_cli plugin $action $resource_name",                 onlyif => "$wp_cli plugin is-installed $resource_name",                 cwd => $root_directory,                 user => $user             }         }     }      # Delete a theme only if it is currently installed.     if $action == "delete" and $resource_type == "theme" {         exec { "$action $resource_name":             command => "$wp_cli theme $action $resource_name",             onlyif => "$wp_cli theme is-installed $resource_name",             cwd => $root_directory,             user => $user         }     }  } 

Ta sử dụng cờ --allow-root cho tất cả các lệnh WP-CLI trong module này. Nó là bắt buộc để xử lý các version WordPress do user root sở hữu. Nếu không có cờ này, cố gắng chạy WP-CLI dưới dạng root sẽ không thành công với thông báo lỗi cho biết:

Error: YIKES! It looks like you're running this as root. You probably meant to run this as the user that your WordPress install exists under. 

Mô-đun Puppet của ta hiện đã sẵn sàng. Dưới đây là một vài ví dụ để giúp bạn hiểu cách bạn có thể sử dụng nó.

Ví dụ 1 - Áp dụng một chủ đề WordPress mới

Hãy sử dụng module Puppet của ta để áp dụng một chủ đề WordPress mới cho một version WordPress.

Theo mặc định, WordPress sử dụng chủ đề twentyfifteen . Đây là những gì nó trông giống như:

Giao diện mặc định

Hãy cài đặt và áp dụng một chủ đề mới có tên expound . Để tìm thêm chủ đề, bạn có thể duyệt qua Thư mục chủ đề của WordPress .

Sử dụng nano (hoặc editor mà bạn chọn) để tạo file mới có tên manage_expound_theme.pp .

nano /tmp/manage_expound_theme.pp 

Thêm mã sau vào nó:

wordpress_manager::resource { 'install expound':     resource_name => "expound",     resource_type => "theme",     action => "install" }  wordpress_manager::resource { 'activate expound':     resource_name => "expound",     resource_type => "theme",     action => "activate",     require => WordPress_manager::Resource['install expound'] } 

Sử puppet apply lệnh puppet apply để chạy file kê khai.

sudo puppet apply /tmp/manage_expound_theme.pp 

Sau khi hoàn thành quá trình chạy, kết quả sẽ giống như sau:

Notice: Compiled catalog for zona-virtualbox in environment production in 0.81 seconds Notice: /Stage[main]/Main/WordPress_manager::Resource[install expound]/Exec[Install expound]/returns: executed successfully Notice: /Stage[main]/Main/WordPress_manager::Resource[activate expound]/Exec[activate expound]/returns: executed successfully Notice: Finished catalog run in 13.72 seconds 

Truy cập trang web WordPress của bạn tại http:// your_server_ip / để xem chủ đề mới đang hoạt động:

Chủ đề mở rộng

Ví dụ 2 - Xóa chủ đề

Nếu bạn muốn xóa một chủ đề, trước tiên bạn nên kích hoạt một chủ đề khác. Ví dụ, nếu bạn muốn quay trở lại twentyfifteen chủ đề, mở manage_expound_theme.pp :

nano /tmp/manage_expound_theme.pp 

Xóa mọi thứ trong file và overrides nó bằng:

wordpress_manager::resource { 'activate twentyfifteen':     resource_name => "twentyfifteen",     resource_type => "theme",     action => "activate" }  wordpress_manager::resource { 'delete expound':     resource_name => "expound",     resource_type => "theme",     action => "delete",     require => WordPress_manager::Resource['activate twentyfifteen'] } 

Áp dụng lại file kê khai.

sudo puppet apply /tmp/manage_expound_theme.pp 

Đến đây bạn có thể ghé thăm trang web WordPress của bạn tại http:// your_server_ip / để xem twentyfifteen chủ đề áp dụng.

Ví dụ 3 - Kích hoạt một Plugin

Plugin Akismet được cài đặt theo mặc định, nhưng nó chưa được kích hoạt, vì vậy hãy sử dụng module Puppet của ta để kích hoạt plugin akismet ngay bây giờ.

Tạo một file kê khai mới có tên manage_akismet.pp .

nano /tmp/manage_akismet.pp 

Thêm mã sau vào nó:

wordpress_manager::resource { 'activate akismet':     resource_name => "akismet",     resource_type => "plugin",     action => "activate" } 

Áp dụng bản kê khai.

sudo puppet apply /tmp/manage_akismet.pp 

Bạn có thể kiểm tra xem Akismet đã được kích hoạt hay chưa khi chạy lệnh plugin list . Theo mặc định, module của ta sẽ sử dụng /var/www làm folder cài đặt WordPress, nhưng nếu điều này khác với môi trường của bạn, bạn có thể sửa đổi cờ --path một cách thích hợp.

wp-cli --allow-root --path=/var/www/ plugin list 

Bạn sẽ thấy một kết quả tương tự như:

+---------+----------+--------+---------+ | name    | status   | update | version | +---------+----------+--------+---------+ | akismet | active   | none   | 3.0.4   | | hello   | inactive | none   | 1.6     | +---------+----------+--------+---------+ 

Ví dụ 4 - Gỡ cài đặt một Plugin

Trước khi gỡ cài đặt plugin, bạn nên đảm bảo plugin đó không hoạt động. Đây là cách bạn có thể gỡ cài đặt akismet . Mở manage_akismet.pp .

nano /tmp/manage_akismet.pp 

Xóa mọi thứ trong file và overrides nó bằng:

wordpress_manager::resource { 'deactivate akismet':     resource_name => "akismet",     resource_type => "plugin",     action => "deactivate" }  wordpress_manager::resource { 'uninstall akismet':     resource_name => "akismet",     resource_type => "plugin",     action => "uninstall",     require => WordPress_manager::Resource['deactivate akismet'] } 

Chạy lại file kê khai.

sudo puppet apply /tmp/manage_akismet.pp 

Bây giờ, chạy lại lệnh plugin list .

wp-cli --allow-root --path=/var/www/ plugin list 

Bạn sẽ thấy rằng Akismet không được liệt kê nữa.

+---------+----------+--------+---------+ | name    | status   | update | version | +---------+----------+--------+---------+ | hello   | inactive | none   | 1.6     | +---------+----------+--------+---------+ 

Kết luận

Đến đây bạn biết cách quản lý các plugin và chủ đề của version WordPress của bạn bằng cách sử dụng module Puppet đơn giản. Bạn đã thấy các ví dụ về cách bạn có thể sử dụng module để thực hiện các việc khác nhau. Vì mục đích đơn giản, tất cả các ví dụ trong hướng dẫn này đều sử dụng chế độ độc lập của Puppet.

Ví dụ về một việc khác mà bạn có thể làm bằng Puppet, bạn có thể thực hiện các thao tác tương tự trên nhiều server bằng cách sử dụng chế độ Agent-Master của Puppet. Tất cả những gì bạn phải làm là sử dụng loại wordpress_manager::resource trong định nghĩa nút của các server đó. Để cập nhật plugin Akismet trên hai server có tên là host1host2 , site.pp của Puppet Master của bạn phải chứa:

node 'host1', 'host2' {     wordpress_manager::resource { 'update akismet':         resource_name => "akismet",         resource_type => "plugin",         action => "update"     } } 

WP-CLI rất mạnh mẽ và cung cấp rất nhiều lệnh. Vui lòng mở rộng module mà ta đã tạo trong hướng dẫn này để thêm nhiều lệnh WP-CLI hơn. Nếu bạn muốn tìm hiểu thêm, có thêm thông tin về Puppet trong hướng dẫn này ; để tìm hiểu thêm về WP-CLI, bạn có thể tham khảo hướng dẫn này .


Tags:

Các tin liên quan

Giám sát LEMP với Monit trên Ubuntu 14.04
2015-01-26
Cách đồng bộ hóa lịch và danh bạ bằng chuẩn CardDAV và CalDAV với Baïkal trên Ubuntu 14.04
2015-01-23
Cách cài đặt Webmin với SSL trên Ubuntu 14.04
2015-01-19
Cách bắt đầu với Silex trên Ubuntu 14.04
2015-01-15
Cách triển khai ứng dụng DocPad trên Ubuntu 14.04
2015-01-14
Cách tạo một Playbook Ansible để tự động cài đặt Drupal trên Ubuntu 14.04
2014-12-23
Cách cài đặt Thư viện ảnh Piwigo trên Ubuntu 14.04
2014-12-18
Cách cài đặt Hệ thống thông tin sinh viên SchoolTool trên Ubuntu 14.04
2014-12-18
Cách thiết lập ứng dụng Node.js để sản xuất trên Ubuntu 14.04
2014-12-03
Cách cài đặt và cấu hình PowerDNS với MariaDB Backend trên Ubuntu 14.04
2014-12-02