Sep 18, 2017
127 Views

EasyEngine & WordPress

Written by

EasyEngine là gì?

easyengine-logoEasyEngine là một *UNIX script dành cho hệ điều hành Ubuntu/Debian giúp bạn tự động cài đặt một webserver sử dụng NGINX và PHP-FPM hoàn chỉnh phục vụ riêng cho WordPress. Điều này có nghĩa là nó sẽ tự tối ưu hóa cho NGINX để làm việc với WordPress tốt nhất. Bởi vì chúng ta đã quá quen với việc sử dụng Apache nên có thể nhiều bạn cảm thấy khó khăn khi chuyển sang dùng NGINX nên script này là “phao cứu sinh” dành cho bạn.

Các chức năng của NGINX

  • Tự cài đặt NGINX bản mới nhất.
  • Tự thiết lập PHP-FPM cho NGINX.
  • Có hỗ trợ HHVM.
  • Hỗ trợ Redis Cache.
  • Hỗ trợ SSL miễn phí từ Let’s Encrypt.
  • Hỗ trợ tự cài website WordPress mới nhanh chóng.
  • Tự thiết lập các cấu hình dành cho WordPress bao gồm cấu hình cho WP Super Cache, W3 Total Cachevà , Redis Cache và ngx_fastcgi_cache
  • Hỗ trợ Opcache, Memcached.
  • Cài sẵn phpMyAdmin và bảo mật.
  • Cài sẵn Postfix để tối ưu gửi mail, không vào spam.
  • Có sẵn WP-CLI để quản trị WordPress với dòng lệnh. Cái này khá quan trọng cho người dùng WordPress.
  • Cấu hình NGINX cho WordPress Multisite.

Chỉ vậy thôi nên EasyEngine là sự lựa chọn rất tối ưu nếu bạn sử dụng chỉ một vài website cá nhân trên máy chủ của bạn. Nếu bạn chưa có máy chủ thì có thể sử dụng dịch vụ VPS tại AZDIGI để được một cấu hình tốt chạy EasyEngine với chi phí phải chăng.

MỘT SỐ LƯU Ý TRƯỚC KHI DÙNG EASYENGINE

Để tránh nhiều bạn thắc mắc sau này nên mình khuyến khích các bạn xem qua một vài lưu ý sau trước khi bắt đầu làm theo serie này để sử dụng EasyEngine cho máy chủ để chạy WordPress nhé.

  • NGINX không sử dụng .htacces
  • Sử dụng EasyEngine 100% qua dòng lệnh, đây là script chứ không phải là control panel.

CHUẨN BỊ

  • Một máy chủ Linux sử dụng hệ điều hành Ubuntu 12/14 hoặc Debian 7 trở lên. Lưu ý chọn loại 64-bits nếu bạn muốn dùng HHVM.
  • Bộ nhớ RAM ít nhất là 1GB. Nếu bạn chỉ có 512MB RAM thì hãy tạo swap

Trước khi cài đặt script EasyEngine lên máy chủ, các bạn hãy chắc chắn rằng máy chủ chưa được cài đặt bất cứ phần mềm nào, hoặc chưa được cài đặt MySQL Server. Tóm lại là một máy chủ mới hoàn toàn.

Việc cài đặt EasyEngine cũng diễn ra rất nhanh, trước tiên chúng ta tiến hành clone script EasyEngine về từ repository của họ và cài đặt script với lệnh sau.

$ apt-get update && apt-get install sudo ca-certificates -y && wget -qO ee rt.cx/ee && sudo bash ee

Nó sẽ hỏi bạn nhập tên và email vào (2 thông số này sẽ được áp dụng khi sau này bạn cài website WordPress mới).

caidateasyengine-01

Sau khi cài đặt EasyEngine xong, bạn sẽ thấy thông báo này.

For EasyEngine (ee) auto completion, run the following command
source /etc/bash_completion.d/ee_auto.rc
EasyEngine (ee) installed/updated successfully
EasyEngine (ee) help: http://docs.rtcamp.com/easyengine/

THÊM DOMAIN VÀ CÀI WORDPRESS NHANH

Với EasyEngine, một ưu điểm của nó là bạn có thể thêm domain vào máy chủ và đồng thời nó sẽ tự cài WordPress tối ưu chỉ với một dòng lệnh duy nhất. Chắc mình cũng không cần nói thêm là bạn có thể thêm bao nhiêu tuỳ thích chứ nhỉ, chỉ cần làm lại bước này thôi (do nhiều bạn có những câu hỏi thế này nên mình nói luôn).

Thêm domain và cài WordPress tự động

Để thêm domain vào và tự động cài website WordPress mới, bạn có những dòng lệnh như sau:

ee site create domain.com --wp
ee site create domain.com --w3tc
ee site create domain.com --wpfc
ee site create domain.com --wpsc
ee site create domain.com --wpredis

Trong đó, sự khác  nhau là giữa các tham số là:

  • --wp: Tự cài đặt một website WordPress đơn giản.
  • --w3tc: Tự cài đặt một website WordPress chạy với plugin W3 Total Cache.
  • --wpfc: Tự cài đặt một website WordPress chạy với NGINX FastCGI Cache.
  • --wpsc: Tự cài đặt một website WordPress chạy với plugin WP Super Cache.
  • --wpredis: Tự cài đặt một website WordPress sử dụng Redis làm Page Cache và Object Cache.

Dĩ nhiên, khi sử dụng các tham số như vậy, EasyEngine đã tự thiết lập cho bạn để sử dụng tốt các plugin đó trên NGINX, và lỗi 404 trên NGINX chắc chắn không bao giờ xảy ra.

Trong đó, mình khuyến khích bạn sử dụng --wpfc hoặc –wpredis vì nó nhẹ. Nếu bạn bối rối thì có thể chọn cấu hình --w3tc cho dễ sử dụng.

Sau khi gõ lệnh thêm domain như ở trên, EasyEngine sẽ tiến hành cài đặt những phần mềm cần thiết và khi cài xong nó sẽ hiển thị thông tin đăng nhập như ở bên dưới:

themdomaineasyengine-01

Bây giờ bạn có thể vào trang quản trị website vừa thêm theo đường dẫn họ cung cấp và đăng nhập với thông tin họ cung cấp luôn nhé. Nếu bạn cần chuyển một website đã có dữ liệu sẵn trên EasyEngine thì hãy xem bài kế tiếp.

TỰ CẤU HÌNH MẬT KHẨU VÀ USERNAME

Mặc định nếu bạn thêm domain vào và cài đặt thì username và mật khẩu của website nó sẽ tạo ra ngẫu nhiên. Nếu bạn không thích như vậy thì có thể thêm tham số --user và --pass vào để thiết lập lại. Ví dụ:

ee site create domain.com --wpredis --user=thachpham --pass=123456

THÊM WEBSITE SỬ DỤNG WORDPRESS MULTISITE

Thay vì sử dụng WordPress thông thường, nếu bạn muốn nó tự thêm domain vào và sử dụng nó với WordPress Multisite trên NGINX thì có thể thêm tham số --wpsubdir hoặc --wpsubdom vào, trong đó:

  • --wpsubdir: WordPress Multisite sử dụng tên miền dạng thư mục như www.domain.com/site/
  • --wpsubdom: WordPress Multisite sử dụng tên miền dạng subdomain như www.site.domain.com.

Ví dụ:

ee site create domain.com --wpredis --wpsubdir

THAY ĐỔI CẤU HÌNH WEBSITE

Giả sử như bạn đang sử dụng cấu hình –wpredis và muốn đổi thành cấu hình –w3tc thì chúng ta có thể sử dụng lệnh ee site update như sau.

ee site update domain.com --w3tc

LỆNH XOÁ WEBSITE

Để xoá một website trên máy chủ, cũng như xoá toàn bộ dữ liệu của nó thì bạn có thể sử dụng lệnh sau.

ee site delete domain.com

CHUYỂN WEBSITE KHÁC VỀ MÁY CHỦ

Việc mang dữ liệu từ website khác về máy chủ đang sử dụng EasyEngine cũng rất dễ dàng, và cũng có rất nhiều cách để làm nhưng ở bài này, mình sẽ chuyển về bằng cách mình hay làm đó là sử dụng WP-CLI đã được tích hợp vào trong EasyEngine và bạn nên làm theo cách này để website của bạn hoạt động tốt ở EasyEngine.

BƯỚC 1. THÊM DOMAIN

Trước tiên, bạn cần thêm domain của website cần chuyển về bằng lệnh của EasyEngine.

ee site create domain.com --wpredis

Sau đó truy cập vào thư mục chứa dữ liệu của domain vừa thêm vào với 2 lệnh sau:

ee site cd domain.com
cd htdocs

BƯỚC 2. XÓA DỮ LIỆU Ở WEBSITE TẠO SẴN

Lệnh ở trên nó sẽ tạo sẵn database và chứa sẵn dữ liệu, bây giờ chúng ta nên xóa toàn bộ dữ liệu có sẵn của nó để chút nữa mình nhập dữ liệu cũ vào:

wp db reset --allow-root

Và xóa toàn bộ mã nguồn được cài sẵn:

rm -rf *

Lệnh trên rất nguy hiểm, hãy chắc chắn là đã truy cập vào thư mục của website mới sử dụng nhé.

BƯỚC 3. MANG DỮ LIỆU CỦA WEBSITE CŨ VỀ

Bằng cách nào đó, bạn hãy mang toàn bộ dữ liệu mã nguồn của website vào thư mục /var/www/domain.com/htdocs, bao gồm tập tin database (.sql) luôn nhé vì mình sẽ import bằng WP CLI.

Nếu VPS cũ sử dụng EasyEngine

Sau đó, hãy đổi tên tập tin wp-config.php của mã nguồn website cũ thành tên gì đó, miễn không phải là wp-config.php.

mv wp-config.php wp-config.old.php

Nếu máy chủ cũ dùng EasyEngine thì nó không mang tập tin wp-config.php theo.

BƯỚC 4. IMPORT DATABASE

Bây giờ bạn hãy nhập các dữ liệu database của website cũ vào database của website đã thêm ở EasyEngine bằng lệnh wp như sau:

wp db import data.sql --allow-root

Trong đó, data.sql là tên tập tin .sql bạn đã upload lên thư mục htdocs. Đây chính là tập tin database ở website cũ mà bạn đã chuyển về.

BƯỚC 4. KIỂM TRA WP-CONFIG.PHP

Bây giờ, website của bạn sẽ sử dụng tập tin wp-config.php tại /var/www/domain.com/.

Lưu ý là nếu bạn có sử dụng table prefix khác với wp_ mặc định thì hãy sửa lại phần $table_prefix trong file wp-config.php để tránh lỗi WordPress nó kêu bạn cài lại.

BƯỚC 5. PHÂN QUYỀN LẠI THƯ MỤC

Để tránh tình trạng bị hỏi thông tin FTP khi cài hoặc cập nhật gì đó trên WordPress thì bạn phải phân quyền lại để đảm bảo các tập tin và thư mục của website vừa chuyển về thuộc sở hữu của user www-data và group www-data.

chown -R www-data:www-data /var/www/domain.com

BƯỚC 6. CÀI PLUGIN CẦN THIẾT

Sau khi chuyển xong, bạn nên chạy lệnh ee site update để nó tự động cài các plugin cache và thiết lập cho chính xác với cấu hình đang sử dụng. Đầu tiên là đổi cấu hình của tên miền sang một cấu hình khác và sau đó dùng lại lệnh này để chuyển về cấu hình mong muốn của bạn. Ví dụ mình đang dùng --wpredis thì sẽ chuyển sang --wpfc rồi chuyển ngược về lại --wpredis.

ee site update domain.com --wpfc

Sở dĩ mình phải làm như vậy là mỗi lần đổi cấu hình website thì EasyEngine sẽ tự động cài plugin và thiết lập lại trên cả webserver và plugin WordPress để đảm bảo tương thích nhất.

 

Sau khi bạn cài đặt EasyEngine như các lệnh của mình thì bạn sẽ được cung cấp sẵn một số công cụ quản lý máy chủ của mình thông qua UI như xem thống kê Memcached, xoá NGINX FastCGI Cache, phpMyAdmin,…và trang quản trị này bạn sẽ truy cập thông qua cổng 22222, nghĩa là bạn sẽ truy cập vào website với địa chỉ http://IP:22222.

CÀI ĐẶT CÁC CÔNG CỤ ADMIN VÀ PHPMYADMIN

Trước tiên để sử dụng được các công cụ admin trong đây thì bạn phải cài vào, chạy lệnh dưới đây để cài:

ee stack install --utils --phpmyadmin

Bây giờ bạn có thể truy cập sử dụng các công cụ đó tại địa chỉ http://IP:22222 rồi nhé. Tuy nhiên để vào được trang này bạn phải có mật khẩu bảo vệ và xem tiếp bên dưới để thiết lập mật khẩu bảo vệ.

TẠO MẬT KHẨU BẢO VỆ

Để có thể truy cập vào khu vực Admin Tools bạn sẽ cần phải nhập đúng username và mật khẩu bảo vệ. Bạn sẽ cần tạo ra nó với lệnh:

ee secure --auth

Sau đó nhập username và mật khẩu bạn cần tạo ra. Bây giờ bạn có thể vào trang http://IP:22222 với username và mật khẩu vừa thiết lập. Đừng quan tâm lắm với cảnh báo SSL.

easyengine-admin-tools

ĐỔI CỔNG ADMIN TOOLS

Nếu bạn không thích cổng 22222 làm cổng vào Admin Tools thì có thể đổi nó đi với lệnh.

ee secure --port 1234

Trong đó, 1234 là cổng cần đổi sang.

CÁCH TRUY CẬP VÀO PHPMYADMIN

Để truy cập vào phpMyAdmin, bạn có thể vào với đường dẫn http://IP:22222//db/pma/. Bạn có thể đăng nhập vào bằng database username và database password của từng website (xem file wp-config.php sẽ có thông tin này).

Hoặc bạn có thể đăng nhập vào bằng user root trong MySQL Server. Để lấy được mật khẩu của user root trong MySQL, bạn sử dụng lệnh này sẽ thấy.

cat /etc/mysql/conf.d/my.cnf

VỊ TRÍ CÁC TẬP TIN CẤU HÌNH

Trong khi sử dụng EasyEngine bạn có thể sẽ cần tìm một số tập tin cấu hình (như php.ini chẳng hạn) để cấu hình lại website của mình, nên ở bài này mình sẽ nêu rõ vị trí các tập tin cấu hình bên trong EasyEngine để bạn dễ nắm bắt.

NGINX

Cấu hình NGINX:

  • /etc/nginx/ – Tất cả các file cấu hình liên quan tới NGINX đều lưu ở đây.
  • /etc/nginx/nginx.conf – File cấu hình chính của NGINX.
  • /etc/nginx/sites-available/ – File cấu hình của các domain đã thêm vào máy chủ. Nếu cần sửa gì ở từng domain thì nên sửa trong đây.
  • /etc/nginx/sites-enables/ – Thư mục chứa các symbolic link dẫn đến file cấu hình của domain tương ứng, nó chỉ có trong đây nếu domain đó đang kích hoạt. Không cần sửa/xem.
  • /etc/nginx/common/ – Thư mục chứa các cấu hình thêm vào NGINX như hhvm, W3 Total Cache, WP Super Cache, Pagespeed,…

Log:

  • /var/log/nginx/ – Thư mục chứa toàn bộ các file log của NGINX.
  • /var/log/nginx/example.com.access.log – File access log của domain example.com.
  • /var/log/nginx/example.com.error.log – File error log của domain example.com.

PHP

Cấu hình PHP:

  • /etc/php5/ – Tất cả các file cấu hình của PHP nằm trong đây.
  • /etc/php5/fpm/php.ini – File cấu hình chính của PHP.
  • /etc/php5/fpm/php-fpm.conf – Các cài đặt của PHP-FPM.
  • /etc/php5/fpm/conf.d/www.conf – File cấu hình PHP-FPM riêng lẻ, bạn có thể tạo ra nhiều file với tên khác nhau nếu có nhu cầu.

Log:

  • /var/log/php5-fpm/ – Tất cả các log liên quan đến PHP-FPM đều nằm ở đây.
  • /var/log/php5-fpm/slow.log – Xem log các script thực thi chậm.
  • /var/log/php5-fpm/php.log – Log liên quan đến PHP.

MYSQL – CẤU HÌNH & LOGS

Cấu hình MySQL:

  • /etc/mysql/my.cnf – Đây là file cấu hình chính dành cho MySQL.
  • /root/.my.cnf – File này chứa user & pass root của MySQL.

Log:

  • /var/log/mysql/mysql.log – Các log chung liên quan đến MySQL.
  • /var/log/mysql/mysql-slow.log – Log ghi lại các query thực thi lâu đến MySQL.

CẤU TRÚC THƯ MỤC WEBSITE

Following is the convention we will be using for WordPress as well as non-WordPress sites.

  • /var/www – Tất cả các thư mục của từng domain sẽ được lưu trong đây.
  • /var/www/example.com – Tất cả dữ liệu liên quan đến domain example.com đều lưu trong đây. Thư mục này cũng chứa file wp-config.php của WordPress.
  • /var/www/example.com/htdocs – Thư mục gốc chứa dữ liệu website mà nó sẽ hiển thị ra ngoài, đây chính là thư mục public_html mà bạn hay gặp.
  • /var/www/example.com/logs – Thư mục chứa log liên quan đến domain example.com

 

CÁC LỆNH QUẢN LÝ WEBSITE

Một trong các tính năng mình rất thích trong EasyEngine đó là nó được tích hợp rất nhiều lệnh để chúng ta quản lý website dễ dàng mà không cần trông cậy vào các chương trình hỗ trợ UI. Và việc quản lý các website trong EasyEngine sẽ được khai báo bằng domain.

Các lệnh trong bài viết này sẽ được bắt đầu bằng ee site.

Tham khảosite – EasyEngine

LỆNH TRUY CẬP (CD)

Để truy cập vào thư mục gốc của một website nào đó, bạn sẽ cần dùng lệnh ee site cd như sau.

ee site cd domain.com

XOÁ WEBSITE HOẶC DỮ LIỆU CỦA WEBSITE (DELETE)

Bạn có thể xoá toàn bộ dữ liệu của một website với lệnh ee site delete.

ee site delete domain.com

Hoặc nếu bạn chỉ cần xoá mã nguồn thì thêm tham số --files vào, hoặc nếu chỉ cần xoá database thì thêm tham số --db vào. Ví dụ:

ee site delete domain.com --files #Xóa dữ liệu web của domain này

TẮT WEBSITE (DISABLE)

Nếu bạn cần tắt một website mà không phải xoá dữ liệu thì có thể sử dụng lệnh ee site disable.

ee site disable domain.com

Còn nếu muốn bật lên thì sử dụng ee site enable.

ee site enable domain.com

SỬA CẤU HÌNH NGINX CỦA WEBSITE (EDIT)

Để sửa cấu hình NGINX của một website nào đó (tại /etc/nginx/sites-available) thì chỉ cần sử dụng lệnh ee site edit.

ee site edit domain.com

Nó có thể sẽ cần hỏi bạn cần dùng chương trình soạn thảo văn bản nào ở lần đầu tiên sử dụng, hãy chọn số 2 để sử dụng Nano cho đơn giản. Sau khi sửa và lưu lại, hệ thống sẽ tự động test và restart lại NGINX.

XEM THÔNG TIN WEBSITE (INFO)

Nếu bạn cần xem thông tin website như thông tin database, các software sử dụng,…thì sử dụng lệnh ee site info.

ee site info domain.com

XEM DANH SÁCH WEBSITE (LIST)

Chỉ cần sử dụng lệnh ee site list là bạn sẽ xem được danh sách các website có trên máy chủ.

CẬP NHẬT THÔNG TIN WEBSITE (UPDATE)

Đây là một lệnh rất hữu ích nếu bạn cần bổ sung tính năng nào đó vào website mà lúc thêm vào bạn chưa cài cho nó, ví dụ bạn muốn đổi từ cấu hình W3 Total Cache sang WP Super Cache thì sẽ sử dụng lệnh này.

ee site update domain.com --wpfc

Ở lệnh trên, nghĩa là mình cần cập nhật cho website domain.com sử dụng WordPress với cấu hình FastCGI Cache.

LỆNH XOÁ CACHE (EE CLEAN)

Mặc dù không phải là lệnh quản lý website nhưng mình sẽ đưa vào đây vì nó cũng ngắn và dễ sử dụng. Lệnh xoá cache này được sử dụng để xoá cache của Pagespeed, Memcached và Opcache. Cách sử dụng rất đơn giản, chỉ cần gõ lệnh ee clean --all là được.

CÁC LỆNH XEM LOG CỦA HỆ THỐNG VÀ WEBSITE

Để xem log chúng ta có thể truy cập vào các tập tin mà mình đã trình bày ở phần Vị trí các tập tin cấu hình để xem, nhưng trong EasyEngine nó có tích hợp sẵn những lệnh đơn giản để xem log nhanh thì tại sao lại không sử dụng nhỉ. Các lệnh xem log của EasyEngine giống như chúng ta xem live log bằng lệnh tail trong Linux vậy.

Khi xem log, nếu bạn muốn thoát ra thì dùng tổ hợp phím Ctrl + C.

Xem log toàn bộ hệ thống

Để xem toàn bộ log của hệ thống (bao gồm MySQL, PHP và access log) thì chúng ta có thể sử dụng lệnh đơn giản.

ee log show

Hoặc nếu bạn muốn xem log cụ thể thì thêm tham số –mysql, –php, –nginx, –fpm hoặc –access vào.

ee log show --php

Xem log từng domain cụ thể

Nếu bạn có nhiều domain trên máy chủ và cần xem log của một domain nào đó thì có thể thêm tham số domain cần xem log vào. Ví dụ:

ee log show domain.com

hoặc

ee log show domain.com --fpm

TẠO CHỨNG CHỈ SSL MIỄN PHÍ VỚI LET’S ENCRYPT

Một trong những tính năng được nhiều người thích ở EasyEngine bản 3.4.0 trở đi là họ có tích hợp bộ tạo chứng chỉ SSL miễn phí từ Let’s Encrypt để website bạn hỗ trợ giao thức HTTPS vừa an toàn lại vừa thân thiện với máy tìm kiếm Google nhé.

Lưu ý rằng để có thể tạo chứng chỉ Let’s Encrypt thì bạn phải trỏ tên miền về máy chủ của bạn và không qua proxy nào (bao gồm tên miền có www và không có www).

Nếu bạn đang sử dụng CloudFlare thì Let’s Encrypt sẽ không hoạt động được nên bạn cần phải sử dụng một DNS trung gian khác hoặc sử dụng SSL của CloudFlare.

Để tạo chưng chỉ SSL thì chúng ta chỉ cần thêm tham số --letsencrypt vào lệnh tạo website (ee site create) hoặc lệnh cập nhật website (ee site update) nếu đã có website sẵn. Ví dụ:

ee site update domain.com --letsencrypt

Bạn sẽ cần đợi vài phút để nó tiến hành cài đặt Let’s Encrypt vào máy chủ. Sau khi cài xong bạn sẽ thấy thông báo như hình dưới.

easyengine-letsencrypt

Lúc này bạn không cần thiết lập gì trong WordPress nữa vì nó đã tự cấu hình sử dụng giao thức https trên website rồi, bạn có thể chỉ cần sử dụng plugin SSL Insecure Content Fixer để tự đổi các liên kết bên ngoài với giao thức http thành https để khắc phục lỗi không hiện ổ khóa màu xanh.

Mặc định các chứng chỉ Let’s Encrypt chỉ có hiệu lực trong 90 ngày và bạn phải gia hạn khi các chứng chỉ nó hết hạn, tuy nhiên EasyEngine đã tạo sẵn một cronjob tự chạy lệnh gia hạn chứng chỉ nên bạn không cần lo lắng về vấn đề này (xem bằng lệnh crontab -l).

Thế nhưng vài trường hợp nếu máy chủ bạn có gặp vấn đề gì mà không thể thực thi cronjob thì hãy gia hạn bằng lệnh sau nếu bạn nhận được email cảnh báo chứng chỉ hết hạn từ Let’s Encrypt:

ee site update example.com --letsencrypt=renew
Article Tags:
· · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Article Categories:
Code/Web · IT & Network
    http://linholiver.com

    https://linholiver.com/diary/about/