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ặca+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ặctheme
. -
$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ệnhwp-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 unless
và onlyif
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
và $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ư:
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:
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à host1
và host2
, 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 .
Các tin liên quan
Giám sát LEMP với Monit trên Ubuntu 14.042015-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