Thứ hai, 21/10/2013 | 00:00 GMT+7

Cách cấu hình Varnish cho Drupal với Apache trên Debian và Ubuntu

Drupal là một nền tảng quản lý nội dung open-souce được viết bằng PHP. Được sử dụng để xây dựng các giải pháp phong phú, dựa trên back-end cho các trang web ở bất kỳ kích thước nào và các ứng dụng web như nhau, nó rất phổ biến với số liệu thống kê cực kỳ cao về tỷ lệ chấp nhận. Việc phân phối nó theo Giấy phép Công cộng GNU nghĩa là bất kỳ ai cũng có thể tự do sử dụng phần mềm, đóng góp cho dự án theo nhiều cách khác nhau và chia sẻ nó với những người khác. Bản phân phối chính của Drupal được gọi là Drupal Core và tính đến tháng 10 năm 2013, nó có thể mở rộng với hơn 20 nghìn module và gần 2 nghìn chủ đề.

Việc tận dụng các nền tảng như Drupal để nhanh chóng tạo mẫu và phát triển ứng dụng là điều tuyệt vời. Tuy nhiên, nhanh chóng, các vấn đề như giải quyết sự phát triển của sản phẩm của bạn bắt đầu phát sinh. Điều này sẽ đòi hỏi bạn phải mở rộng quy mô nhanh chóng để tiếp tục phục vụ khách hàng nhanh chóng, nhằm duy trì sự quan tâm của họ đối với sản phẩm của bạn và duy trì sự hạnh phúc của họ.

Trong bài viết DigitalOcean này, là một phần của loạt bài giúp các nhà phát triển mở rộng quy mô , ta sẽ nói về việc cấu hình Varnish với Drupal. Điều này sẽ giảm đáng kể thời gian user tải trang web dựa trên Drupal của bạn và tăng khả năng phục vụ đồng thời của VPS DigitalOcean của bạn bằng cách chuyển yêu cầu qua phần mềm Varnish Cache trước.

Mở rộng quy mô


Khi nói về việc mở rộng quy mô về mặt phần mềm, những gì mọi người thường nghĩa là khả năng của [một hệ thống] để xử lý và đáp ứng dung lượng công việc lớn hơn so với dung lượng công việc được xây dựng (sẽ được xử lý) và dữ liệu ( được lưu giữ và sử dụng trong thời gian thực hoặc sau này). Về mạng, việc xác định và xác định vấn đề trở nên đơn giản hơn, mặc dù một giải pháp triệt để thường tốn kém hơn để thực hiện vì nó có thể yêu cầu kết hợp thêm phần cứng vào hệ thống.

Hai cách tiếp cận phổ biến nhất để chia tỷ lệ trang web (hoặc ứng dụng web) là: Chia tỷ lệ theo chiều dọc và / hoặc theo chiều ngang .

Vertical partitioning (Mở rộng quy mô!)


Nói một cách đơn giản, Vertical Scaling nghĩa là tăng tài nguyên của một, một máy tính là server hoặc của bất kỳ máy tính nào tạo thành hệ thống theo chiều dọc, bằng cách thêm nhiều tài nguyên hơn vào chúng hoặc tăng dung lượng của chúng. Thêm nhiều bộ nhớ hơn, thay thế CPU bằng CPU nhanh hơn, nhận được dung lượng cao hơn và ổ đĩa nhanh hơn với tốc độ đọc-ghi tuyệt vời (ví dụ: SSD của server DigitalOcean ) đều có thể được coi là Tỷ lệ theo chiều dọc. Đôi khi, điều này còn gọi là Mở rộng quy mô .

Horizontal partitioning (Mở rộng quy mô!)


Khi ta quyết định tận dụng mức giá thấp tuyệt vời của các server riêng ngày nay và kết hợp nhiều server hơn trong hệ thống của bạn , nó được gọi là Định tỷ lệ ngang hoặc “Mở rộng quy mô”. Điều này có thể xảy ra theo nhiều cách, chẳng hạn như chạy từng phần mềm trong ứng dụng trên máy của chính nó hoặc sao chép các web server để tạo một số server khác giống nhau và phân phối các yêu cầu đến từ các client trên chúng bằng cách sử dụng Reverse Proxy , chẳng hạn như NGINX. Để biết thêm thông tin về Reverse Proxy , hãy truy cập http://en.wikipedia.org/wiki/Reverse_Proxy .

Varnish


Ngồi trước trang web , Varnish Cache giải quyết việc cung cấp nội dung tĩnh hoặc gần như tĩnh trực tiếp mà không cần chuyển yêu cầu trở lại web server (tức làApache) để xử lý nhiều lần. Vì rất nhiều nội dung (bất chấp lượng thời gian chúng sẽ được truy cập) chỉ cần được tính toán và tạo một lần duy nhất, việc lưu trữ và sau đó phục vụ chúng từ bộ nhớ truy cập nhanh giúp giảm tải đáng kể của web server và tăng số lượng yêu cầu có thể được xử lý đồng thời bởi toàn bộ hệ thống .

Varnish có thể giúp gì?


Sử dụng Varnish trong (hầu hết) bất kỳ trang web nào nghĩa là một trang web nhanh hơn bởi nhiều lực (tất nhiên tùy thuộc vào kiến trúc!). Nó cũng nghĩa là một sản phẩm tin cậy hơn (vì những lý do bạn sẽ thấy trong quá trình cấu hình) nhờ chức năng mở rộng của Varnish Cache. Tất cả điều này nghĩa là những khách hàng hạnh phúc hơn, những người thích sử dụng sản phẩm của bạn hơn và một hệ thống mà bạn có thể tin tưởng để phân phối tốt hơn.

Để Lưu ý: Trừ khi ta sử dụng một trường hợp server ứng dụng riêng biệt cho Varnish (mà ta nên, vì nhiều lý do tốt!) Này là về mặt kỹ thuật không mở rộng quy mô (không lên, cũng không ra), nhưng có một kiến trúc hệ thống tốt và về cơ bản là thông minh. Tuy nhiên, do sự gia tăng tải có thể được xử lý bởi một server duy nhất, điều này có thể được gọi là mở rộng theo một số cách, vì ta sẽ có hiệu suất tổng thể tốt hơn nhiều từ hệ thống của bạn . Đây thực sự là kết quả mong đợi từ việc mở rộng quy mô và ta kết thúc với một kiến trúc hệ thống sẵn sàng mở rộng thực sự nếu cần thiết; tuy nhiên, cần lưu ý hiệu suất tốt hơn không nghĩa là mở rộng quy mô.

1. Chuẩn bị web server cho Varnish


Trong bài viết này, mục tiêu là cài đặt Varnish để phục vụ các trang một cách nhanh chóng, trực tiếp từ bộ nhớ. Đây được gọi là bộ nhớ đệm và để điều này hoạt động, trước tiên Varnish cần có khả năng xử lý các yêu cầu đến. Do web server (ví dụ: Apache) được cài đặt để thực hiện điều tương tự (xử lý các yêu cầu đến), ta cần thực hiện một số sửa đổi để Varnish vào đúng vị trí của nó. Cách để đạt được điều này là sửa đổi cổng mà nó lắng nghe (tức là cổng 80).

Sửa đổi Apache


Theo mặc định, Apache chạy trên (lắng nghe) cổng 80 và ta cần sửa đổi điều đó.

Sửa đổi cài đặt của Apache trên port.conf :

Cài đặt cổng mà ta cần sửa đổi được xác định trong một file có tên là port.conf nằm trong folder /etc/apache2/ .

Hãy sửa đổi điều đó bằng cách sử dụng editor . Ta sẽ làm việc với nano ở đây, được biết đến với sự thân thiện với user so với một số loại khác.

Chạy lệnh sau để mở editor để chỉnh sửa nội dung của file port.conf :

sudo nano /etc/apache2/ports.conf 

Bên trong file này (theo mặc định), bạn sẽ thấy một cái gì đó tương tự như:

NameVirtualHost *:80 Listen 80  <IfModule mod_ssl.c>     # If you add NameVirtualHost *:443 here, you will also have to change     # the VirtualHost statement in /etc/apache2/sites-available/default-ssl     # to <VirtualHost *:443>     # Server Name Indication for SSL named virtual hosts is currently not     # supported by MSIE on Windows XP.     Listen 443 </IfModule>  <IfModule mod_gnutls.c>     Listen 443 </IfModule> 

Vì vậy, hãy tiếp tục và sửa đổi hai dòng đầu tiên mà số cổng được chỉ định, từ ban đầu thành, giả sử, 8000 (và nhớ số này):

NameVirtualHost *:8000 Listen 8000 

Bây giờ để lưu và đóng, hãy nhấn CTRL + X và khi được yêu cầu , hãy nhập Y rồi nhấn enter. Điều này sẽ lưu file .

Nếu bạn cũng có Cấu hình _ VirtualHost (vhost ) _

Trong trường hợp bạn đang lưu trữ nhiều trang web (hoặc đã đặt các tùy chọn dành riêng cho domain ), bạn cũng có thể có cấu hình VirtualHost mà ta cần cập nhật.

Chạy lệnh sau để mở editor để chỉnh sửa cài đặt cho trang web :

sudo nano /etc/apache2/sites-availbable/my-domain-dot-com 

!! Đừng quên thay thế my-domain-dot-com bằng tên thích hợp.

!! Nếu bạn không có cấu hình VirtualHost được đặt tên tùy chỉnh, bạn có thể tìm cài đặt mặc định trên /etc/apache2/sites-available/default .

Tùy thuộc vào cài đặt hiện tại của bạn, bạn sẽ thấy một tài liệu, bắt đầu bằng (hoặc chứa) thông tin như sau:

<VirtualHost *:80> 

Mà bây giờ ta cần thay thế bằng cùng một cổng từ port.conf :

<VirtualHost *:8000> 

Đóng và lưu file bằng cách nhấn CTRL + X , sau đó nhập Y và nhấn enter theo cách tương tự.

Để các thay đổi có hiệu lực, ta cần khởi động lại Apache:

sudo service apache2 reload 

Hiện tại, Apache sẽ chấp nhận các yêu cầu đến trên cổng cài đặt mới là 8000.
Và ta đã sẵn sàng để chuyển sang bước tiếp theo!

2. Cài đặt Varnish Cache


Đối với Debian và Ubuntu:


Việc cài đặt Varnish trên Debian và Ubuntu khá đơn giản, vì nó được phân phối với trình quản lý gói hệ thống mặc định: apt . Tuy nhiên, cách được khuyến khích , đảm bảo ta đang nhận được version mới nhất, là như sau (ref. Https://www.varnish-cache.org/installation/debian ):

Ta cần thêm URL download cho Varnish vào danh sách nguồn của trình quản lý gói aptitude. Để xác minh nguồn, trước tiên ta cần thêm khóa bảo mật được cung cấp bởi http://repo.varnish-cache.org .

Hãy bắt đầu với việc thêm khóa bảo mật [Debian và Ubuntu]:

wget http://repo.varnish-cache.org/debian/GPG-key.txt apt-key add GPG-key.txt 

Bây giờ hãy thêm URL gói vào danh sách nguồn repository apt-get.

Debian:

echo "deb http://repo.varnish-cache.org/debian/ wheezy varnish-3.0" >> /etc/apt/sources.list 

Ubuntu:

echo "deb http://repo.varnish-cache.org/ubuntu/ precise varnish-3.0" | sudo tee -a /etc/apt/sources.list 

Cuối cùng, hãy cập nhật trình quản lý gói và download / cài đặt Varnish Cache [Debian và Ubuntu]

apt-get update apt-get install varnish 

3. Sửa đổi cài đặt của Varnish


Sau khi đã sửa đổi cổng của Apache và cài đặt Varnish, ta sẵn sàng tiếp tục sửa đổi cài đặt của Varnish để nó hoạt động theo cách ta cần.

Đưa Varnish vào Sản xuất Mod


Là một trong những lý do cho phép administrator kiểm tra Varnish khi cài đặt, cài đặt mặc định không được đặt để chạy trên cổng 80 mặt trước và ta cần thay đổi điều đó.

Tệp cấu hình trên Debian và Ubuntu nằm ở /etc/default/varnish .

Mở editor để chỉnh sửa file :

nano /etc/default/varnish 

Khi chạy lệnh này, bạn sẽ phải đối mặt với một tài liệu khá dài nhưng khá dễ hiểu. Nếu bạn cuộn xuống, bạn sẽ thấy một khối văn bản xác định các tùy chọn daemon Varnish bắt đầu bằng text DAEMON_OPTS , tương tự như:

DAEMON_OPTS="-a :6081 \              -T localhost:6082 \              -f /etc/varnish/default.vcl \              -S /etc/varnish/secret \              -s malloc,256m" 

Hãy sửa đổi nó để thay đổi cổng từ 6081 thành 80:

DAEMON_OPTS="-a :80 \              -T localhost:6082 \              -f /etc/varnish/default.vcl \              -S /etc/varnish/secret \              -s malloc,256m" 

Ngôn ngữ và Tệp VCL


Varnish sử dụng file .vcl (mặc định nằm tại /etc/varnish/ as default.vcl ) chứa các hướng dẫn được viết bằng Ngôn ngữ VCL để chạy chương trình của nó. Điều này được sử dụng để xác định cách Varnish xử lý các yêu cầu và cách hệ thống bộ nhớ đệm tài liệu hoạt động. Khi một bộ hướng dẫn mới (thông qua file .vcl ) được tải, một quy trình (trình quản lý) do Varnish quay sẽ chuyển đổi chúng thành mã C và biên dịch nó - sau đó sẽ được sử dụng để thực hiện công việc.

Sửa đổi file VCL mặc định trong /etc/varnish/


VCL Language và các file tin có thể phức tạp lúc đầu do có rất nhiều tác vụ có thể được xác định để Varnish thực hiện. May mắn là ta được cung cấp khá nhiều ví dụ tuyệt vời, kèm theo các schemas (đối với một số) trên https://www.varnish-cache.org/trac/wiki/VCLExamples . Nếu bạn có câu hỏi hoặc ý tưởng nào về những gì bạn muốn Varnish làm, đọc một số ví dụ này chắc chắn sẽ cho phép bạn dễ dàng giải quyết vấn đề theo cách bạn cần.

Phải nói rằng, đối với tổ hợp cấu hình mặc định ít nhiều cho Drupal (và cho hầu hết các trang web), ta sẽ đi đến các cài đặt có thể tìm thấy bên dưới. Copy paste tất cả mã trong mỗi khối mã để tạo thành file .vcl của bạn.

Hãy mở trình soạn thảo để sửa đổi nội dung của default.vcl (nằm dưới / etc / varnish / ) cho Drupal .

Để mở editor , hãy chạy lệnh sau:

nano /etc/varnish/default.vcl 

Bạn sẽ thấy một tài liệu dài chứa các cài đặt mặc định.

Để bắt đầu, ta cần xác định web server và cho Varnish biết cách liên hệ với nó. Vì vậy, hãy sửa đổi backend default :

backend default {     .host = "127.0.0.1";     .port = "8000";     .max_connections = 250;     .connect_timeout = 300s;     .first_byte_timeout = 300s;     .between_bytes_timeout = 300s; } 

Lưu ý: Bên dưới, bạn sẽ thấy một khối lớn mã cấu hình VCL mặc định được chú thích. Bạn có thể tự do giữ nó miễn là bạn không ghi chú nhầm vào chúng, trong trường hợp đó việc biên dịch nó sẽ tạo ra lỗi.

Bây giờ ta sẽ đặt các địa chỉ khách hàng được phép thanh lọc (vui lòng tham khảo các câu hỏi bên dưới để tìm hiểu thêm về việc thanh lọc ):

acl purge {     "localhost";     "127.0.0.1"; } 

Để xác định các địa chỉ được phép có thể truy cập cron.php hoặc install.php, hãy thêm vào như sau:

acl internal {   "192.10.0.0"/24;   # For remote access, add your IP address here.   # Ex: 162.xxx.xx.xx } 

Ở đây ta sẽ viết chương trình để xử lý các yêu cầu đến (đã nhận) từ các client . Tiếp tục với việc thêm khối mã sau:

sub vcl_recv {      # A great functionality of Varnish is to check     # your web server's health and serve stale pages     # if necessary.      # In case of web server lag, let's return the      # request with stale content.      if (req.backend.healthy)     {         set req.grace = 60s;     }     else     {         set req.grace = 30m;     }      # Modify (remove) progress.js request parameters.      if (req.url ~ "^/misc/progress\.js\?[0-9]+$")     {         set req.url = "/misc/progress.js";     }      # Modify HTTP X-Forwarded-For header.     # This will replace Varnish's IP with actual client's.      remove req.http.X-Forwarded-For;     set    req.http.X-Forwarded-For = client.ip;      # Check if request is allowed to invoke cache purge.      if (req.request == "PURGE")     {         if (!client.ip ~ purge)         {             # Return Error 405 if not allowed.             error 405 "Forbidden - Not allowed.";         }         return (lookup);     }      # Verify HTTP request methods.      if (req.request != "GET"    && req.request != "HEAD" &&         req.request != "PUT"    && req.request != "POST" &&         req.request != "TRACE"  && req.request != "OPTIONS" &&         req.request != "DELETE" && req.request != "PURGE")     {             return (pipe);     }      # Handling of different encoding types.      if (req.http.Accept-Encoding)     {         if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$")         {             remove req.http.Accept-Encoding;         }         elsif (req.http.Accept-Encoding ~ "gzip")         {             set req.http.Accept-Encoding = "gzip";         }         elsif (req.http.Accept-Encoding ~ "deflate")         {             set req.http.Accept-Encoding = "deflate";         }         else         {             remove req.http.Accept-Encoding;         }     }      # Force look-up if request is a no-cache request.          if (req.http.Cache-Control ~ "no-cache")     {         return (pass);     }      # Do not allow outside access to cron.php or install.php. Depending on your access to the server, you might want to comment-out this block of code for development.     if (req.url ~ "^/(cron|install)\.php$" && !client.ip ~ internal)     {                 # Throw error directly:          error 404 "Page not found.";         # Or;         # Use a custom error page on path /error-404.          # set req.url = "/error-404";     }       # Remove certain cookies.     set req.http.Cookie = regsuball(req.http.Cookie, "has_js=[^;]+(; )?", "");     set req.http.Cookie = regsuball(req.http.Cookie, "Drupal.toolbar.collapsed=[^;]+(; )?", "");     set req.http.Cookie = regsuball(req.http.Cookie, "__utm.=[^;]+(; )?", "");     if (req.http.cookie ~ "^ *$")     {         unset req.http.cookie;     }      # Cache static content of themes.             if (req.url ~ "^/themes/" && req.url ~ ".(css|js|png|gif|jp(e)?g)")     {         unset req.http.cookie;     }      # Do not cache these URL paths.     if (req.url ~ "^/status\.php$" ||         req.url ~ "^/update\.php$" ||         req.url ~ "^/ooyala/ping$" ||         req.url ~ "^/admin"        ||         req.url ~ "^/admin/.*$"    ||         req.url ~ "^/user"         ||         req.url ~ "^/user/.*$"     ||         req.url ~ "^/users/.*$"    ||         req.url ~ "^/info/.*$"     ||         req.url ~ "^/flag/.*$"     ||         req.url ~ "^.*/ajax/.*$"   ||         req.url ~ "^.*/ahah/.*$")     {         return (pass);     }              # Cache the following file types.     if (req.url ~ "(?i)\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?[a-z0-9]+)?$")     {         unset req.http.Cookie;     }      # !! Do not cache application area     if (req.url ~ "(^/app.php|^/app_dev.php|^)/([a-z]{2})/(payment|order|booking|media|autocomplete|monitor).*")     {         return (pass);     }      # !! Do not cache admin area     if (req.url ~ "(^/app.php|^/app_dev.php|^)/admin" || req.url ~ "(^/app.php|^/app_dev.php|^)/(([a-z]{2})/admin)")     {         return (pass);     }      # !! Do not cache security area     if (req.url ~ "(^/app.php|^/app_dev.php|^)/(([a-z]{2}/|)(login|logout|login_check).*)")     {         return (pass);     }      # Do not cache editor logged-in user sessions     if (req.http.Cookie ~ "(sonata_page_is_editor)")     {         return (pass);     }      return (lookup); }  sub vcl_hit {     if (req.request == "PURGE")     {         purge;         error 200 "Purged.";     } }  sub vcl_miss {     if (req.request == "PURGE")     {         purge;         error 200 "Purged.";     } } 

Chạy Varnish


Bây giờ ta đã sẵn sàng khởi động lại daemon Varnish.

Chạy lệnh sau để Varnish chạy:

/etc/init.d/varnish restart 

Xác minh trạng thái của ứng dụng


Hãy chạy hai lệnh sau để xác minh cả Apache và Varnish đều được liên kết với các cổng chính xác:

Apache:

netstat -lp | grep apache2 

Varnish :

netstat -lp | grep varnish 

Kết quả sẽ tương tự như sau:

tcp    0    0    localhost:8000    *:*     LISTEN   xxxx/apache2 -- or -- tcp6   0    0    [::]:8000         [::]:*  LISTEN   xxxx/apache2  -- and -- tcp    0    0    localhost:6082    *:*     LISTEN   xxxx/varnishd    tcp    0    0    *:http            *:*     LISTEN   xxxx/varnishd    tcp6   0    0    [::]:http         [::]:*  LISTEN   xxxx/varnishd    

Cuối cùng


Ta đã cài đặt Apache và Varnish để làm việc với cài đặt Drupal . Nếu bạn muốn khai thác thêm từ chương trình backend Drupal của bạn liên quan đến Varnish, bạn có thể cần dùng thử Mô-đun Drupal Varnish có tại https://drupal.org/project/varnish .

Kể từ tháng 10 năm 2013, những gì module này thực hiện được nêu là:

  • Mô-đun này cung cấp tích hợp cổng quản trị cho phép Drupal tự động vô hiệu hóa các mục nhập bộ nhớ cache và cũng cho phép bạn truy vấn giao diện quản trị Varnish về trạng thái, v.v.

Lưu ý: Nếu bạn đang sử dụng hệ thống Drupal cũ hơn version 7, bạn cũng cần sử dụng module này do cách xử lý cookie của Drupal đối với khách truy cập.

Khắc phục sự cố, Ghi chú và Mẹo


Làm cách nào để biết Bản phân phối Linux và version của nó?

Vì bài viết này nói về nhiều bản phân phối và version , bạn có thể cần đảm bảo mình đang nhắm đến đúng bản. May mắn là giải pháp khá đơn giản. Chỉ cần chạy lệnh sau:

cat /etc/*-release 

Điều này sẽ cung cấp cho bạn tên và version phân phối của bạn.

Tôi có thể tìm hiểu thêm về VirtualHost Apache ( vhosts ) ở đâu?

Để biết thêm thông tin về file VirtualHost , vui lòng truy cập http://httpd.apache.org/docs/2.2/vhosts/examples.htmlhttps://www.digitalocean.com/community/articles/how-to-set- up-apache-virtual-hosts-on-ubuntu-12-04-lts tương ứng.

Làm cách nào để quyết định sử dụng cổng nào? Tôi có thể tìm hiểu thêm về các cổng ở đâu?

Bạn có thể chọn bất kỳ cổng nào bạn muốn nhưng tốt hơn hết bạn nên tránh một số cổng để tránh các sự cố hoặc va chạm trong tương lai với các ứng dụng khác. Một số cổng này là:

  • Giao thức truyền thư đơn giản (SMTP) trên cổng 25
  • Đồng bộ hóa giao thức truyền tải tin tức mạng (NNTP) trên cổng 119
  • HTTP qua TLS / SSL (HTTPS) trên cổng 443
  • Hệ thống database MySQL trên cổng 3306

Để có danh sách đầy đủ, vui lòng tham khảo:
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Thanh lọc nghĩa là gì về chức năng của Varnish?

Xóa là vô hiệu hóa các file được lưu trong bộ nhớ cache. Để biết thêm thông tin về chủ đề này, vui lòng tham khảo: https://www.varnish-cache.org/docs/3.0/tutorial/purging.html

Daemon là gì?

Trong máy tính, daemon là một tiến trình tự chạy thay vì tương tác trực tiếp với user . Trong trường hợp của Varnish, daemon của nó, sau khi biên dịch file cấu hình VCL, chạy liên tục, thực hiện các hướng dẫn được cài đặt trước và biên dịch giống như web server .

<div class = “author”> Gửi bởi: <a href=osystemhttps://twitter.com/ostezerosystem> OS Tezer </div>


Tags:

Các tin liên quan

Cách thiết lập mod_security với Apache trên Debian / Ubuntu
2013-10-21
Cách cài đặt Apache Wave trên VPS CentOS 6.4 x64
2013-09-18
Cách cấu hình bộ nhớ đệm nội dung bằng module Apache trên VPS
2013-08-16
Cách tạo chuyển hướng tạm thời và vĩnh viễn với Apache và Nginx
2013-08-12
Cách cấu hình web server Apache trên Ubuntu hoặc Debian VPS
2013-08-07
Cách thiết lập Apache với Chứng chỉ SSL đã ký miễn phí trên VPS
2013-07-17
Cách bắt đầu với mod_pagespeed với Apache trên Ubuntu và Debian Cloud Server
2013-07-09
Cách bắt đầu với mod_pagespeed với Apache trên server cloud CentOS và Fedora
2013-07-09
Cách tạo chứng chỉ SSL trên Apache trên Arch Linux
2012-11-09
Cách cài đặt LAMP (Linux, Apache, MySQL, PHP) trên Fedora
2012-11-06