Thứ ba, 12/11/2013 | 00:00 GMT+7

Cách thiết lập WordPress với W3 Total Cache trên Lighttpd Server

Bài viết này sẽ hướng dẫn bạn cách cài đặt WordPress trên web server Lighttpd với plugin bộ nhớ đệm phổ biến W3 Total Cache. Giả sử rằng bạn đã cài đặt ngăn xếp LLMP và có PHP hoạt động với Lighttpd. Ta sẽ thực hiện nhiều cấu hình thủ công để làm cho bộ nhớ cache trang và thu gọn hoạt động với Lighttpd, vì W3 Total Cache không hỗ trợ web server này ngay lập tức (như với Apache và Nginx).


Bật các module bắt buộc


WordPress yêu cầu mod_rewrite cho liên kết cố định nhưng module này được comment trong file Lighttpd configurationp. Vì vậy, hãy chỉnh sửa file và xóa dấu #

nano /etc/lighttpd/lighttpd.conf  server.modules = (         "mod_access",         "mod_alias",         "mod_compress",         "mod_redirect", #       "mod_rewrite", ) 

Thay đổi

#       "mod_rewrite", 

đến

        "mod_rewrite", 

Ta cũng cần log truy cập cho trang web của bạn , vì vậy hãy bật module accesslog .

lighttpd-enable-mod accesslog 

Tạo server ảo


Thêm server ảo cho trang web WordPress– đảm bảo thay thế example.com bằng domain của bạn .

nano /etc/lighttpd/lighttpd.conf  $HTTP["host"] =~ "(^|www\.)example.com$" {     server.document-root = "/var/www/example.com"     accesslog.filename = "/var/log/lighttpd/example.com-access.log"     server.error-handler-404 = "/index.php" } 

Đặt “error-handler-404” thành “index.php” là đủ để liên kết cố định hoạt động. Reload dịch vụ lighttpd.

service lighttpd force-reload 

Download và cài đặt WordPress


Trước khi tải WordPress xuống VPS của bạn , bạn sẽ tạo database MySQL và user có quyền cho database đó.

echo "CREATE DATABASE wordpress" | mysql -u root -p echo "GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost' IDENTIFIED BY 'S3cRet_pass'" | mysql -u root -p 

Thay wpuserS3cRet_pass với các giá trị của bạn . Download version mới nhất của WordPress.

wget http://wordpress.org/latest.tar.gz 

Extract các file bên trong gốc tài liệu của server ảo. Đến đây bạn sẽ có một folder tên là “wordpress” ở vị trí này. Đổi tên domain này thành domain của bạn để phù hợp với giá trị của chỉ thị server.document-root .

cd /var/www tar -xf ~/latest.tar.gz mv wordpress example.com 

Thay đổi quyền sở hữu của tất cả các file bên trong folder này thành “www-data”

chown www-data:www-data -R example.com/ 

Mở trình duyệt, nhập domain của bạn và hoàn tất cài đặt WordPress. Ta phải kích hoạt và chọn một cấu trúc liên kết cố định. Nhưng trước đó, ta có một vấn đề cần giải quyết: WordPress thực hiện kiểm tra Apache mod_rewrite trước khi bật liên kết cố định sẽ không thành công trên lighttpd. Vì vậy, ta phải buộc WordPress kích hoạt liên kết cố định.

Tạo folder Plugin “Phải sử dụng” .

mkdir /var/www/example.com/wp-content/mu-plugins 

Tạo một file bên trong nó

nano /var/www/example.com/wp-content/mu-plugins/rewrite.php 

với đoạn mã sau.

<?php add_filter( 'got_rewrite', '__return_true' ); 

Thẻ PHP đóng ?> Đã được cố tình bỏ qua.

WordPress Permalinks

Đăng nhập vào wp-admin , chuyển đến Cài đặt> Permalinks và chọn cấu trúc liên kết cố định .

Cài đặt Plugin W3 Total Cache


Việc cấu hình plugin này trong lighttpd là khác nhau, vì W3TC chỉ hỗ trợ Apache và Nginx, vì vậy ta sẽ thực hiện phần lớn cấu hình theo cách thủ công. Cài đặt plugin này từ Plugins> Add New , kích hoạt và dừng ở đây. Ta sẽ không sử dụng trang tùy chọn của plugin này để cài đặt ban đầu.

Chỉnh sửa các file cấu hình lighttpd và thêm chỉ thị viết lại cho việc rút gọn và trang bộ nhớ đệm. Cấu hình bổ sung sẽ đi vào bên trong khối server ảo sau trình xử lý lỗi-404 .

nano /etc/lighttpd/lighttpd.conf  $HTTP["host"] =~ "(^|www\.)example.com$" {     server.document-root = "/var/www/example.com"     accesslog.filename = "/var/log/lighttpd/example.com-access.log"     server.error-handler-404 = "/index.php"      #Rewrite rules for minified files     url.rewrite-if-not-file = (         "^/wp-content/cache/minify/(.+\.(css|js))$" => "/wp-content/plugins/w3-total-cache/pub/minify.php?file=$1"     )      #Rewrite rules for page cache enhanced     #This is to prevent page cache rules from messing up minify rules     $HTTP["url"] !~ "(.+\.(css|js|xml|html))" {      #Bypass cache if the request contains any of these cookies     $HTTP["cookie"] !~ "(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle)" {      #Bypass cache for POST requests     $HTTP["request-method"] != "POST" {      #Bypass cache if query string isn't empty     $HTTP["querystring"] !~ "(.*)" {         url.rewrite-if-not-file = (             "(.*)" => "/wp-content/cache/page_enhanced/example.com/$1/_index.html"         )     }     }     }     } } 

Thay thế example.com trong đường dẫn /wp-content/cache/page_enhanced/example.com/$1/_index.html bằng domain chính xác mà bạn đã cài đặt WordPress.

Lưu file và reload lighttpd

service lighttpd force-reload 

Đi tới bảng quản trị WordPress (wp-admin), chuyển đến Plugins> Add New , tìm kiếm và cài đặt plugin.

Cài đặt W3 Total Cache

Kích hoạt plugin và quay lại console SSH mà không cần thay đổi cài đặt nào.

Mô-đun cache trình duyệt của plugin W3 Total Cache tạo các file được extract từ cache trang và thu nhỏ cache ẩn, sẽ được phân phát cho user dựa trên tiêu đề yêu cầu “Chấp nhận-Mã hóa”. Nhưng lighttpd có thể nén nội dung nhanh chóng với module mod_compress, vì vậy ta sẽ tắt tùy chọn này.

Sử dụng lệnh sed , tìm và thay thế các mục cấu hình.

cd /var/www/example.com/ sed -i "s/'browsercache.cssjs.compression' => true/'browsercache.cssjs.compression' => false/" wp-content/w3tc-config/master.php sed -i "s/'browsercache.html.compression' => true/'browsercache.html.compression' => false/" wp-content/w3tc-config/master.php sed -i "s/'browsercache.other.compression' => true/'browsercache.other.compression' => false/" wp-content/w3tc-config/master.php sed -i "s/'browsercache.cssjs.compression' => true/'browsercache.cssjs.compression' => false/" wp-content/cache/config/master.php sed -i "s/'browsercache.html.compression' => true/'browsercache.html.compression' => false/" wp-content/cache/config/master.php sed -i "s/'browsercache.other.compression' => true/'browsercache.other.compression' => false/" wp-content/cache/config/master.php 

Giảm thiểu


Tùy chọn này được coi là phá vỡ thiết kế của các chủ đề và plugin, vì vậy hãy chỉ sử dụng nó nếu bạn biết nó sẽ phù hợp với bạn. Đối với bài viết này, chủ đề Twenty Thirteen đã được sử dụng, hoạt động tốt với việc thu nhỏ.

Trước khi bật tùy chọn này, "Tự động thu nhỏ kiểm tra" phải được tắt. Điều này là do plugin yêu cầu một bộ luật viết lại để kiểm tra Tự động thu nhỏ hoàn tất thành công. Mặc dù ta có thể cố gắng chuyển đổi chúng cho lighttpd (từ .htaccess hoặc nginx.conf), nhưng không đáng để mất thời gian, vì tự động thu nhỏ hoạt động trên trang web ngay cả khi không có các thử nghiệm này.

cd /var/www/example.com/ sed -i "s/'minify.auto.disable_filename_length_test' => false/'minify.auto.disable_filename_length_test' => true/" wp-content/w3tc-config/master.php sed -i "s/'minify.auto.disable_filename_length_test' => false/'minify.auto.disable_filename_length_test' => true/" wp-content/cache/config/master.php 

Quay lại wp-admin, chuyển đến Hiệu suất> Cài đặt chung và bật tính năng thu nhỏ.

Bật Minify

Mở trang web WordPress của bạn trên trình duyệt và tìm trong phần <head> . Bạn sẽ tìm thấy CSS và JS được rút gọn như thế này:

<!DOCTYPE html>   *** <html lang="en-US"> *** <head><link rel="stylesheet" type="text/css" href="http://example.com/wp-content/cache/minify/000000/M9AvKU_NK6ksycgsKklNzdNPy88rKdZPT81LLcpMzs8r1jFAV1FcUpmTCgA.css"media="all" /> <script type="text/javascript" src="http://example.com/wp-content/cache/minify/000000/M9bPKixNLarUMYYydHMz04sSS1L1cjPz4IJ6uYnF-XkgGihooF9SnppXUlmSkVlUkpqap59VrJ9WmpdckpmfVwwA.js"></script> 

Nếu thiết kế của trang web có vẻ bị hỏng, điều đó có thể nghĩa là các luật viết lại minify không chính xác trong lighttpd.conf hoặc bạn đã quên reload lighttpd.

Trang Cache


Bộ nhớ đệm trang tạo các file HTML tĩnh của nội dung của bạn và phân phát chúng cho user với luật ghi lại. Vì ta đã thêm luật viết lại, ta có thể bật bộ nhớ đệm trang bằng cách đi tới wp-admin> Hiệu suất> Cài đặt chung .

Trang Cache

Phương pháp Cache Trang mặc định là Disk: Enhanced tuy nhiên nếu bạn vô tình thay đổi nó thành một thứ khác, bạn không thể thay đổi nó trở lại vì tùy chọn này bị vô hiệu hóa.

Vì vậy, ta cần phải sửa đổi thủ công điều này bằng cách chỉnh sửa file .

cd /var/www/example.com sed -i "s/'pgcache.engine' => '\([a-z]\+\)'/'pgcache.engine' => 'file_generic'/" wp-content/w3tc-config/master.php sed -i "s/'pgcache.engine' => '\([a-z]\+\)'/'pgcache.engine' => 'file_generic'/" wp-content/cache/config/master.php 

Điều này cho phép bộ nhớ đệm Trang với Disk Enhanced . Để kiểm tra xem nó có hoạt động hay không, hãy sử dụng curl để truy cập một trang không được lưu trong bộ nhớ cache.

# curl -v -s -o /dev/null http://example.com/about/ * About to connect() to example.com port 80 (#0) *   Trying 1.1.1.1... connected > GET /about/ HTTP/1.1 > User-Agent: curl/7.23.1 > Host: example.com > Accept: */* > < HTTP/1.1 200 OK < Link: <http://example.com/?p=28>; rel=shortlink < Last-Modified: Tue, 05 Nov 2013 15:55:53 GMT < Vary: < X-Pingback: http://example.com/xmlrpc.php < Content-Type: text/html; charset=UTF-8 < Transfer-Encoding: chunked < Date: Tue, 05 Nov 2013 15:55:53 GMT < Server: lighttpd/1.4.31 < { [data not shown] * Connection #0 to host example.com left intact * Closing connection #0 

Thực hiện lại cùng một yêu cầu.

# curl -v -s -o /dev/null http://example.com/about/ * About to connect() to example.com port 80 (#0) *   Trying 1.1.1.1... connected > GET /about/ HTTP/1.1 > User-Agent: curl/7.23.1 > Host: example.com > Accept: */* > < HTTP/1.1 200 OK < Vary: Accept-Encoding < Content-Type: text/html < Accept-Ranges: bytes < ETag: "94995388" < Last-Modified: Tue, 05 Nov 2013 15:55:53 GMT < Content-Length: 23659 < Date: Tue, 05 Nov 2013 15:55:55 GMT < Server: lighttpd/1.4.31 < { [data not shown] * Connection #0 to host example.com left intact * Closing connection #0 

Lưu ý sự khác biệt giữa cả hai tiêu đề. Phản hồi đầu tiên có tiêu đề Liên kết:X-Pingback được PHP thêm vào. Phản hồi thứ hai hoàn toàn là HTML nên nó không có những tiêu đề đó. Bạn cũng có thể xem các trang đã lưu trong bộ nhớ cache trên đĩa.

root@wp-lighttpd:~# ls -lR /var/www/example.com/wp-content/cache/page_enhanced/www.example.com/ /var/www/example.com/wp-content/cache/page_enhanced/www.example.com/: total 12 drwxr-xr-x 2 www-data www-data 4096 Nov  5 21:25 about drwxr-xr-x 2 www-data www-data 4096 Nov  5 21:21 front-page drwxr-xr-x 2 www-data www-data 4096 Nov  5 21:23 sample-page  /var/www/example.com/wp-content/cache/page_enhanced/www.example.com/about: total 24 -rw-r--r-- 1 www-data www-data 23659 Nov  5 21:25 _index.html  /var/www/example.com/wp-content/cache/page_enhanced/www.example.com/front-page: total 28 -rw-r--r-- 1 www-data www-data 25100 Nov  5 21:21 _index.html  /var/www/example.com/wp-content/cache/page_enhanced/www.example.com/sample-page: total 28 -rw-r--r-- 1 www-data www-data 25837 Nov  5 21:23 _index.html 

Để kiểm tra xem trang web có hỗ trợ nén hay không, hãy sử dụng tùy chọn curl được nén .

# curl -v -s -o /dev/null/ --compressed http://example.com/about/ * About to connect() to example.com port 80 (#0) *   Trying 1.1.1.1... connected > GET /about/ HTTP/1.1 > User-Agent: curl/7.23.1 > Host: www.example.com > Accept: */* > Accept-Encoding: deflate, gzip > < HTTP/1.1 200 OK < Vary: Accept-Encoding < Content-Encoding: gzip < Last-Modified: Tue, 05 Nov 2013 15:55:53 GMT < ETag: "2062104151" < Content-Type: text/html < Accept-Ranges: bytes < Content-Length: 4819 < Date: Tue, 05 Nov 2013 16:01:03 GMT < Server: lighttpd/1.4.31 < { [data not shown] * Connection #0 to host www.example.com left intact * Closing connection #0 

Lưu ý các tiêu đề Nội dung-Độ dàiMã hóa Nội dung : độ dài nội dung trước đây là 23659, nhưng bây giờ chỉ là 4819.

Bộ nhớ cache của trình duyệt


Loại bộ nhớ cache này cho trình duyệt biết thời gian nó có thể giữ các đối tượng (như hình ảnh, CSS và JS) trong bộ nhớ cache của chính nó. Điều này yêu cầu thêm các tiêu đề ExpiresCache-Control được thực hiện bằng cách sử dụng module mod_expire .

Bật module này

lighttpd-enable-mod expire 

và thêm cấu hình cần thiết bên trong server ảo.

nano /etc/lighttpd/lighttpd.conf

#Browser Cache $HTTP["cookie"] !~ "(wordpress_logged_in)" { $HTTP["url"] =~ "^/(.+\.(css|js|png|jpg|bmp|ico)\??.*)$" {     expire.url = ( "" => "access plus 365 days" ) } } 

Trong khối này, ta kiểm tra xem trước tiên user chưa đăng nhập và sau đó khớp các file có phần mở rộng được đề cập. Bạn cũng có thể thêm các phần mở rộng khác bên trong dấu ngoặc vuông được phân tách bằng “|”. Reload lighttpd

service lighttpd force-reload 

và kiểm tra các tiêu đề mới với cuộn tròn.

# curl -I example.com/wp-content/themes/twentythirteen/style.css  HTTP/1.1 200 OK Expires: Wed, 05 Nov 2014 16:31:33 GMT Cache-Control: max-age=31536000 Content-Type: text/css Accept-Ranges: bytes ETag: "2905279475" Last-Modified: Thu, 24 Oct 2013 19:39:10 GMT Content-Length: 52290 Date: Tue, 05 Nov 2013 16:31:33 GMT Server: lighttpd/1.4.31 

Cập nhật Plugin


Cấu hình này được thực hiện trên WordPress 3.7.1 với W3 Total Cache 0.9.3 và hoạt động tốt với chúng. Bất kỳ bản cập nhật nào trong tương lai cho W3 Total cache làm thay đổi cấu trúc folder ghi lại sẽ phá vỡ bộ nhớ đệm trang và bộ nhớ đệm nhỏ (mặc dù không hiển thị sau). Vì vậy, trước khi nâng cấp plugin này, hãy quay một server với hình ảnh WordPress trên Ubuntu 12.10 , cài đặt W3 Total Cache và kiểm tra file .htaccess để biết các luật viết lại mới.

Việc di chuyển chúng sang lighttpd sẽ dễ dàng hơn. Hiện tại Apache sử dụng luật sau để thu nhỏ

RewriteBase /wp-content/cache/minify/ RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L] 

Trong lighttpd luật này trở thành

url.rewrite-final = (         "^/wp-content/cache/minify/(.+\.(css|js))$" => "/wp-content/plugins/w3-total-cache/pub/minify.php?file=$1"     ) 

Đối với cache trang Apache có

RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index.html" [L] 

Lighttpd không cho phép các biến server ở vị trí ghi lại, vì vậy ta đã mã hóa nó.

url.rewrite-if-not-file = (     "(.*)" => "/wp-content/cache/page_enhanced/example.com/$1/_index.html" ) 

<div class = “author”> Người gửi: <a rel=p>author[ href=osystemhttp://jesin.tk/[> Jesin A </a> </div>


Tags:

Các tin liên quan

Thiết lập server ban đầu với Debian 7
2013-11-04
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Debian 7
2013-10-31
Cách sử dụng Tìm và Định vị để Tìm kiếm Tệp trên VPS Linux
2013-09-27
10 Trứng Phục sinh hàng đầu trên Linux
2013-09-18
Cách sử dụng SSH để kết nối với server từ xa trong Ubuntu
2013-09-10
Cách sử dụng ps, kill và hay để quản lý các tiến trình trong Linux
2013-09-06
Cách xem người dùng hệ thống trong Linux trên Ubuntu
2013-09-05
Cách sử dụng mật khẩu và trình bổ sung để quản lý mật khẩu trên VPS Linux
2013-09-04
Cách cài đặt Linux, Lighttpd, MySQL và PHP5 (LLMP Stack) trên CentOS 6
2013-08-30
Cách sử dụng Top, Netstat, Du và các công cụ khác để giám sát tài nguyên server
2013-08-26