Hướng dẫn cài đặt Varnish Cache trên DirectAdmin

13/09/2019 136

Cài đặt thư viện: 

yum -y install automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

Với CentOS 5:

rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release/varnish-release-3.0-1.el5.centos.noarch.rpm

Với CentOS 6:

rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el6/noarch/varnish-release/varnish-release-3.0-1.el6.noarch.rpm

Cài đặt Varnish Cache:

yum install varnish

Sửa /etc/varnish/default.vcl Và thay đổi (Giả sử bạn sử dụng port 8080 cho apache), Đổi IP 123.123.123.123 thành  IP server của bạn: 

backend default {
        .host = "123.123.123.123";
        .port = "8080";
}

Sửa file /etc/httpd/conf/httpd.conf và đổi listening port thành 8080:

Listen 8080

Sửa file /etc/httpd/conf/extra/httpd-vhosts.conf:

Include /etc/httpd/conf/ips.conf
# -SNIP-
#
<VirtualHost 123.123.123.123:80>

Thành:

#Include /etc/httpd/conf/ips.conf
LogFormat "%O \"%r\"" homedir
NameVirtualHost 127.0.0.1:8080
NameVirtualHost 123.123.123.123:8080
NameVirtualHost 123.123.123.123:443
# -SNIP-
#
<VirtualHost 127.0.0.1:8080 123.123.123.123:8080>

Copy templates DirectAdmin đến folder "custom" directory:

cp -p /usr/local/directadmin/data/templates/virtual_host2.conf  /usr/local/directadmin/data/templates/custom/virtual_host2.conf
cp -p /usr/local/directadmin/data/templates/virtual_host2_sub.conf  /usr/local/directadmin/data/templates/custom/virtual_host2_sub.conf
cp -p /usr/local/directadmin/data/templates/redirect_virtual_host.conf  /usr/local/directadmin/data/templates/custom/redirect_virtual_host.conf

Chúng ta cần thay đổi tất cả các biến trong các file template

cd /usr/local/directadmin/data/templates/custom
sed -i 's/<VirtualHost |IP|:|PORT_80| |MULTI_IP|>/<VirtualHost 127.0.0.1:8080 |IP|:8080 |MULTI_IP|>/g' *

Sau đó cài reverse proxy module choApache:

wget http://www.stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
hoặc wget https://fossies.org/linux/www/apache_httpd_modules/old/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs -cia mod_rpaf-2.0.c

Nếu bạn đã cài đặt Apache 2.4, bạn sẽ nhận được lỗi thông bao khi thực thi lệnh apxs:

Trích

mod_rpaf-2.0.c:150: error: 'conn_rec' has no member named 'client_ip'
mod_rpaf-2.0.c:151: error: 'conn_rec' has no member named 'client_addr'
mod_rpaf-2.0.c:151: error: 'conn_rec' has no member named 'client_ip'
mod_rpaf-2.0.c: In function 'change_remote_ip':
mod_rpaf-2.0.c:164: error: 'conn_rec' has no member named 'client_ip'
mod_rpaf-2.0.c:183: error: 'conn_rec' has no member named 'client_ip'
mod_rpaf-2.0.c:186: error: 'conn_rec' has no member named 'client_ip'
mod_rpaf-2.0.c:187: error: 'conn_rec' has no member named 'client_addr'
mod_rpaf-2.0.c:187: error: 'conn_rec' has no member named 'client_ip'
apxs:Error: Command failed with rc=65536

Chúng ta cần patch file trước khi thực thi lệnh apxs:

yum install git
git clone git://gist.github.com/2716030.git
patch mod_rpaf-2.0.c 2716030/mod_rpaf-2.0.c.patch
apxs -cia mod_rpaf-2.0.c

Sửa file /etc/httpd/conf/extra/httpd-includes.conf và thêm:

<IfModule mod_rpaf-2.0.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader X-Forwarded-For
</IfModule>

Chúng ta đổi tất cả các file cấu hình DirectAdmin cho các user hiện tại:

echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue

Sửa /etc/sysconfig/varnish và đổi VARNISH_LISTEN_PORT thành 80:

VARNISH_LISTEN_PORT=80

Restart httpd và start varnish:

service httpd restart
service varnish start

Cuối cùng là cấu hình cho varnish auto start khi reboot:

chkconfig varnish on

Chúc các bạn thành công.