Hướng dẫn sử dụng WordMove toàn tập

WordMove là công cụ hỗ trợ đồng bộ hóa dữ liệu và deploy WordPress trên nhiều môi trường khác nhau, nhằm tiết kiệm thời gian trong khi phát triển website WordPress.

Chỉ hỗ trợ Linux

WordMove làm việc tốt nhất trên Mac OS hoặc Ubuntu, CentOS. Nếu bạn dùng Windows thì có thể nó làm việc không chính xác hoặc bị lỗi.

Thân chào các độc giả, vài tháng nay do mình về Việt Nam có việc nên không thể viết bài thường xuyên được do chưa có thời gian, định bụng là sẽ viết lại sau khi về nước lại nhưng nghỉ viết lâu quá cũng sốt ruột thay. Vì vậy, hôm nay tranh thủ chút thời gian rảnh rỗi viết về một công cụ mà mình dùng rất thường xuyên khi deploy WordPress ở nhiều môi trường khác nhau (môi trường ở đây nghĩa là localhost, host, testing server,…), đó là WordMove.

Thường thì công cụ WordMove này sẽ phát huy tác dụng tốt nhất nếu bạn sử dụng kèm với Vagrant và VVV nên nếu bạn đã từng tìm hiểu về nó rồi thì hãy sử dụng chung. Trong bài viết này mình sẽ hướng dẫn theo hướng sử dụng với công cụ tạo localhost Ampps.

Tại sao phải dùng nhiều môi trường khác nhau?

Vấn đề này có lẽ mình sẽ nói chi tiết hơn ở một bài viết khác nhưng ở đây mình có thể nói sơ qua. Ví dụ khi lập trình một theme cho WordPress cho một dự án nào đó, chúng ta sẽ làm ở localhost, môi trường này gọi là Development. Song đó, chúng ta cần một host để có thử nghiệm những tính năng chúng ta làm trên Development và host này chúng ta có thể xem trong nội bộ hoặc chỉ cho khách hàng xem, môi trường này thường gọi là Staging, và cuối cùng là một cái host chính để chạy website mà sau khi test đầy đủ chúng ta sẽ đưa lên đó, môi trường chính này được gọi là Production. Dĩ nhiên bạn có thể tạo ra bao nhiêu môi trường khác là tùy nhu cầu của bạn.

Mục đích của việc setup các môi trường này là để chúng ta linh hoạt trong lúc làm việc và chia sẻ với những người khác, thích hợp làm việc nhóm.

WordMove có công dụng gì?

Khi làm việc trong nhiều môi trường khác nhau, mỗi lần bạn sửa xong phần nào và muốn upload lên môi trường khác bạn phải sử dụng giao thức FTP hoặc cái gì đó để upload từng tập tin đã thay đổi lên. Đối với database thì còn cực hơn nữa, bạn phải export ra bằng phpMyAdmin rồi import nó vào môi trường cần đưa lên. Các thao tác như vậy chiếm thời gian không hề ít nên hiệu suất làm việc không cao.

WordMove được sinh ra để giúp chúng ta đồng bộ những thay đổi trong mã nguồn (kể cả database) ở nhiều môi trường khác nhau. Mình sẽ lấy một ví dụ sử dụng WordMove đơn giản để bạn thấy được sự tiện dụng của nó.

Ví dụ mình có một website đang chạy trên môi trường Production, mình sẽ gõ lệnh sau để lấy toàn bộ nội dung website WordPress đó về localhost.

wordmove pull -e production --all

Hoặc mình chỉ muốn lấy theme thì dùng lệnh sau.

wordmove pull -e production --themes

Sửa xong ở localhost, mình muốn đưa toàn bộ nội dung ở localhost lên website thử nghiệm thì mình dùng lệnh sau:

wordmove push -e staging --all

Hoặc lấy nội dung từ staging về localhost

wordmove pull -e staging --plugins

Lưu ý là những lần push hay pull sau, nó chỉ lấy nội dung đã được chỉnh sửa so với lần trước đó nên rất tiết kiệm thời gian.

Rất tiện lợi phải không nào, chúng ta không cần sử dụng đến FTP nữa khi dùng WordMove.

Hướng dẫn cài đặt WordMove

Trước khi cài đặt RubyGem từ source thì bạn hãy update các software trong hệ điều hành và cài một số software cần thiết.

sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

Để cài đặt được WordMove thì trước hết máy cần cài phải được cài đặt Ruby phiên bản mới nhất.

wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz
tar -xvf ruby-2.3.1.tar.gz
cd ruby-2.3.1
./configure
sudo make install

Sau khi cài xong Ruby thì cập nhật gem mới nhất.

sudo gem update --system

Cuối cùng là cài đặt WordMove

sudo gem install wordmove

Cài đặt rsync và lftp

rsync được bắt buộc yêu cầu phải được cài đặt trên máy của bạn nếu như bạn muốn sử dụng giao thức SSH để đồng bộ hóa dữ liệu trên các môi trường khác nhau. Còn lftp là ứng dụng yêu cầu nếu bạn cần sử dụng giao thức FTP để đồng bộ. Tốt nhất bạn nên cài cả 2 ứng dụng này vào máy luôn, ví dụ cài đặt rsync và lftp trên Ubuntu.

sudo apt-get install lftp rsync -y

Để cài đặt WordMove trên Mac OS. Trước tiên bạn cần cài đặt homebrew tại theo hướng dẫn tại http://brew.sh/.

Sau đó sử dụng lệnh brew để cập nhật Ruby mới nhất.

brew install ruby

Cuối cùng là cài WordMove

sudo gem install wordmove

Đối với Mac bạn cần cài thêm SSHPass.

brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

Sau khi cài đặt xong, bạn thử gõ lệnh wordmove, nếu nó ra kết quả giống như bên dưới thì đã cài đặt thành công.

wordmove-01

Đối với người dùng Ubuntu không sử dụng Vagrant

Nếu bạn không sử dụng Vagrant làm localhost và đang sử dụng Ubuntu thì phải làm một bước nữa đó là thêm thư mục chứa các lệnh MySQL của phần mềm localhost đang sử dụng vào .bashrc để nó có thể import và export database khi sử dụng.

Trước tiên bạn cần xác định thư mục bin của MySQL trong phần mềm localhost đang sử dụng. Ví dụ nếu bạn dùng Ampps, thì thư mục bin của MySQL sẽ nằm ở /usr/local/ampps/mysql/bin, bạn thử chạy dòng sau xem nó có ra thông tin lệnh mysqldump không.

/usr/local/ampps/mysql/bin/mysqldump

Kết quả trả về như thế này là đúng đường dẫn:

Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

Sau đó gõ lệnh sau:

echo 'PATH="/usr/local/ampps/mysql/bin:$PATH"' >> ~/.bashrc

Nhớ sửa lại đường dẫn /usr/local/ampps/mysql/bin thành thư mục chứa mysqldump phù hợp với localhost của bạn.

Bây giờ bạn hãy tắt Terminal và mở lại rồi gõ mysqldump xem nó có ra thông tin mysqldump như ở trên không, nếu hiện ra thì thành công.

Kế tiếp là hãy chmod thư mục localhost thành 777 để nó có quyền ghi (trường hợp bạn không sử dụng tài khoản root).

sudo chmod -R 777 /usr/local/ampps

Vậy là xong rồi, chúng ta tiến hành cấu hình Wordmove thôi.

Cấu hình WordMove

Để cấu hình Wordmove, bạn truy cập vào thư mục gốc của website trên localhost và dùng lệnh wordmove init để tạo tập tin Movefile, tập tin này sẽ chứa đựng các cấu hình của các môi trường để có thể đồng bộ với nhau.

cd /usr/local/ampps/www/testwm
wordmove init

Sau khi dùng lệnh wordmove init, bạn mở tập tin Movefile ra sẽ thấy nội dung sau (dòng nào có dấu # là chưa được kích hoạt, muốn dùng thì xóa dấu đó đi):

local:
 vhost: "http://vhost.local"
 wordpress_path: "/usr/local/ampps/www" # use an absolute path here

 database:
 name: "database_name"
 user: "user"
 password: "password"
 host: "127.0.0.1"

production:
 vhost: "http://example.com"
 wordpress_path: "/var/www/your_site" # use an absolute path here

 database:
 name: "database_name"
 user: "user"
 password: "password"
 host: "host"
 # port: "3308" # Use just in case you have exotic server config
 # mysqldump_options: "--max_allowed_packet=1G" # Only available if using SSH

 exclude:
 - ".git/"
 - ".gitignore"
 - "node_modules/"
 - "bin/"
 - "tmp/*"
 - "Gemfile*"
 - "Movefile"
 - "wp-config.php"
 - "wp-content/*.sql"

 # paths: # you can customize wordpress internal paths
 # wp_content: "wp-content"
 # uploads: "wp-content/uploads"
 # plugins: "wp-content/plugins"
 # mu_plugins: "wp-content/mu-plugins"
 # themes: "wp-content/themes"
 # languages: "wp-content/languages"

 # ssh:
 # host: "host"
 # user: "user"
 # password: "password" # password is optional, will use public keys if available.
 # port: 22 # Port is optional
 # rsync_options: "--verbose" # Additional rsync options, optional
 # gateway: # Gateway is optional
 # host: "host"
 # user: "user"
 # password: "password" # password is optional, will use public keys if available.

 # ftp:
 # user: "user"
 # password: "password"
 # host: "host"
 # passive: true
 # scheme: "ftps" # default "ftp"

# staging: # multiple environments can be specified
# [...]

Trước tiên bạn lưu ý, ở tập tin trên mình đã khai báo ra hai môi trường tên là local (tượng trưng cho localhost) và production (tượng trưng cho môi trường đang chạy website chính thức), bạn có thể tạo ra bao nhiêu môi trường cũng được tùy thích.

Ở mỗi môi trường, chúng ta có các thiết lập sau:

Thiết lập đường dẫn và thư mục

 vhost: "http://vhost.local"
 wordpress_path: "/home/john/sites/your_site" # use an absolute path here

Lưu ý đường dẫn thư mục phải là đường dẫn tuyệt đối trên localhost, nếu thiết lập FTP cho môi trường trên host thì xem thêm ở dưới.

Thiết lập thông tin database

 database:
   name: "database_name"
   user: "user"
   password: "password"
   host: "127.0.0.1"

Lưu ý, trường hợp bạn dùng Vagrant và thiết lập cho môi trường trên host thì phần host là địa chỉ IP của máy chủ nha.

Thiết lập bỏ qua tập tin và thư mục

Khi tiến hành đồng bộ dữ liệu ở nhiều môi trường, bạn có thể sẽ cần bỏ qua một số tập tin mà không cho phép nó đồng bộ. Ví dụ như tập tin wp-config.php chúng ta sẽ không nên đồng bộ vì nó chứa thông tin database riêng của mỗi môi trường. Để khai báo các thành phần không muốn đồng bộ bạn sẽ khai báo bằng từ khóa exclude như phía dưới.

 exclude:
   - ".git/"
   - ".gitignore"
   - ".sass-cache/"
   - "bin/"
   - "tmp/*"
   - "Gemfile*"
   - "Movefile"
   - "wp-config.php"
   - "wp-content/*.sql"

Thiết lập thông tin SSH

Nếu server trên môi trường của bạn có hỗ trợ giao thức SSH để truy cập vào thì hãy khai báo phần này trong môi trường đó.

 ssh:
   host: "host"
   user: "user"
   password: "123456"
   port: "22"

Thiết lập thông tin FTP

Nếu bạn không có SSH thì có thể sử dụng FTP để truy cập vào máy chủ.

 ftp:
   host: "ftp.domain.com"
   user: "user"
   password: "123456"
   port: "21"

Lưu ý khi sử dụng FTP, phần wordpress_path của môi trường đó bạn sẽ phải nhập đường dẫn tương đối chứ không phải đường dẫn tuyệt đối trên máy chủ. Ví dụ khi đăng nhập vào FTP, bạn thấy thư mục public_html thì sẽ khai báo wordpress_path như sau:

wordpress_path: "/public_html" # use an absolute path here

Trường hợp website bạn không chứa dữ liệu ở thư mục gốc public_html thì có thể thêm đường dẫn vào cho phù hợp. Nói chung là chỉ ghi đường dẫn thư mục bắt đầu từ thư mục hiện tại của tài khoản FTP.

Lưu ý khi thiết lập

Khi thiết lập mỗi môi trường trong Movefile thì các thành phần bên trong môi trường đó phải được thụt vào, giống như đoạn thiết lập mẫu ở trên. Đó là quy chuẩn bắt buộc.

Cấu hình đường dẫn trong wp-config.php

Khi tiến hành đồng bộ database ở nhiều môi trường, thì thiết lập site_url và site_address trong database sẽ bị đổi nên dẫn tới việc load trang không đúng. Vì vậy bạn cần phải thiết lập đường dẫn của website hiện tại trong wp-config.php ở tất cả môi trường bằng cách thêm đoạn sau vào:

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

Nhớ là thiết lập ở môi trường nào thì hãy sửa URL cho đúng với môi trường đó.

Cách sử dụng

Sau khi đã thiết lập xong rồi, chúng ta sẽ tiến hành sử dụng nó bằng cách truy cập vào thư mục đang chứa tập tin Movefile và dùng lệnh WordMove.

Trong tập hợp lệnh này, chúng ta có một lệnh ví dụ như sau:

wordmove pull -e production --all

Lệnh trên nghĩa là chúng ta sẽ kéo (pull) toàn bộ dữ liệu WordPress (--all) trên môi trường production (-e production) về localhost của bạn. Nếu bạn có đặt nhiều môi trường khác nhau thì sẽ nhập tên môi trường tương ứng vào tham số -e.

Trường hợp bạn muốn chuyển dữ liệu từ localhost lên trên môi trường production thì sẽ dùng tham số push như sau:

wordmove push -e production --all

Ngoài tham số --all để đồng bộ tất cả thì chúng ta có một số tham số khác như:

  • --db: Chỉ đồng bộ database
  • --themes: Chỉ đồng bộ themes
  • --plugins: Chỉ đồng bộ plugins
  • --uploads: Chỉ đồng bộ thư mục wp-content/uploads.

Nếu bạn cần hướng dẫn chi tiết thì có thể gõ lệnh wordmove help.

Một số thông tin tham khảo

Ở bài hướng dẫn này mình đã viết khá chi tiết và đầy đủ nhưng cũng không thể tránh khỏi các thiếu sót. Nếu bạn muốn tra cứu thêm thông tin về WordMove thì có thể vào các bài viết dưới đây để hiểu thêm về nó:

Mình sử dụng WordMove cùng với Vagrant và VVV hằng ngày nên thấy nó rất tốt và hiệu quả. Nếu các bạn gặp trở ngại trong khi cài đặt thì có thể comment bên dưới mình sẽ hỗ trợ kỹ hơn.

Thạch Phạm

Đam mê với web và lập trình, thích viết và chia sẻ, nghiện cà phê và xăm mình, hứng thú với nhạc dân ca và nhạc không lời.

Xem thêm bài viết Subscribe

Để lại bình luận

9 Bình luận trên "Hướng dẫn sử dụng WordMove toàn tập"

avatar
Sắp xếp theo:   mới nhất | cũ nhất | đánh giá nhiều
DaPhuCo
Khách

Trước có thiết kế web vài chỗ giờ tự làm bằng wp hết, thấy cũng tiên lợi, nhanh gọn chuẩn SEO nữa

tuấn hoàng
Khách

Tuyệt vời,mình mới biết trang này nhờ một người bạn ,toàn những bài viết mình đang cần tìm hiểu vì mình đang muốn trang phuquocxinchao.vn của mình được hoàn thiện

Duan Le
Khách

Cái này đề xuất bác Thạch nên cho 1 note là: server production cần được open port mysql 3306, tạo mysql user remote dạng ‘user_db’@’Ip_or_hostname_or_%’

Phương
Khách

với những source khác thì phần mềm nào giống với wordmove ko? ví dụ như Yii2

Tai Le
Khách

Thanks Thạch, tool này rất là hay. Nhưng ko biết nó có chạy tốt vs Heroku ko nhỉ

wpDiscuz
menu
menu