1. 程式人生 > >Varnish的部署與使用例項(內附一鍵安裝部署指令碼github連結)

Varnish的部署與使用例項(內附一鍵安裝部署指令碼github連結)

Varnish的部署與使用

指令碼及原始碼安裝包連結

GitHub

概述

  • Varnish是一款高效能且開源的反向代理伺服器和http加速器
  • 與傳統的Squid相比,Varnish具有效能更高,速度更快,管理更方便等諸多優點。

編譯安裝

這裡展示指令碼檔案的一部分

tar -xf $INSTALL_FILE
cd $CODE_DIR
[ -f configure ] && ./configure --prefix=/usr/local/varnish  &> $NULL || exit 40
echo "configure success."
make &> $NULL
[ $? -eq 0 ] && echo "make success." || exit 41 make install &> $NULL [ $? -eq 0 ] && echo "make install success." || exit 42

由於這是原始碼包安裝,所以安裝後並不能像其他服務那樣會在etc下有相應的配置檔案等,
雖然這些檔案在原始碼包中都有,所以很明顯我們需要將一些對應的檔案進行操作。

##進行配置檔案的複製操作;
cp redhat/varnish.initrc /etc/init.d/varnish
cp redhat/varnish.sysconfig
/etc/sysconfig/varnish cp redhat/varnish_reload_vcl /usr/bin/ ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/ mkdir /etc/varnish cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/ uuidgen > /etc/varnish/secret

檔案的具體說明:

  • /etc/varnish/ :配置檔案目錄
    • /etc/init.d/varnish :varnish的啟動程式
    • /etc/sysconfig/varnish :配置檔案,varnish定義自身屬性
    • /etc/varnish/default.vcl :預設配置檔案,定義後端節點的
  • /usr/bin/varnish_reload_vcl :載入vcl
  • /usr/bin/varnishadm : 客戶端程式
  • /usr/bin/varnishstat :狀態監控

配置檔案引數說明:

[root@svr5 ~]# vim /etc/sysconfig/varnish
VARNISH_VCL_CONF=/etc/varnish/default.vcl                #vcl檔案路徑
VARNISH_LISTEN_PORT=80                                #預設埠
VARNISH_SECRET_FILE=/etc/varnish/secret                #金鑰檔案
VARNISH_STORAGE_SIZE=64M                                #快取大小
VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"        #基於記憶體方式

[root@svr5 ~]# vim  /etc/varnish/default.vcl
backend default {
     .host = "192.168.4.205";   ##後端web伺服器的ip
     .port = "80";      ##後端web伺服器的httpd使用的埠號
 }

操作例項

例項需求

通過配置Varnish快取伺服器,實現如下目標:

  • 使用Varnish加速後端Apache Web服務
  • 使用varnishadm管理快取頁面
  • 使用varnishstat檢視Varnish狀態

具體操作

使用3臺RHEL6虛擬機器,其中一臺Web伺服器,一臺Varnish代理伺服器,一臺作為測試用的Linux客戶機。
這幾臺伺服器都不需要配閘道器,客戶端計算機和web伺服器不能之間ping通,具體的ip地址見下文。

首先在進行web伺服器的搭建,這裡我們進行最簡單的httpd的伺服器就可以了,以便於測試。

[[email protected] ~]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 54:52:01:01:16:02  
          inet addr:192.168.2.16  Bcast:192.168.2.255  Mask:255.255.255.0
[[email protected] ~]# yum clean all
[[email protected] ~]# yum repolist
...
repolist: 3,819
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# echo "This is index.html." > /var/www/html/index.html
[[email protected] ~]# service httpd restart
停止 httpd:                                               [失敗]
正在啟動 httpd:httpd: apr_sockaddr_info_get() failed for web02.wolf.cn
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [確定]
[[email protected] ~]# chkconfig httpd on
//測試web服務,測試web服務正常
[[email protected] ~]# curl http://192.168.2.16
This is index.html.

然後進行代理伺服器的配置和搭建,這裡使用自己編寫的指令碼進行服務的安裝和部署,
指令碼檔案和原始碼包都放在gethub上了,連結:

[root@proxy02 varnish]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 54:52:01:01:13:01  
          inet addr:192.168.4.6  Bcast:192.168.4.255  Mask:255.255.255.0
[root@proxy02 varnish]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 54:52:01:01:13:02  
          inet addr:192.168.2.6  Bcast:192.168.2.255  Mask:255.255.255.0
[root@proxy02 varnish]# ll
total 2008
-rwxr-xr-x. 1 root root    2969 Jan  5 12:27 install_varnish.sh
-rw-r--r--. 1 root root 2049810 Jan  5 09:47 varnish-3.0.6.tar.gz
[root@proxy02 varnish]# ./install_varnish.sh 
configure success.
make success.
make install success.
//對於對應的配置檔案的修改,都在指令碼中使用sed進行修改,
//在這裡就直接開啟服務,並設定為開機啟動即可。
[root@proxy02 varnish]# service varnish restart
Stopping Varnish Cache:                                    [確定]
Starting Varnish Cache:                                    [確定]
[root@proxy02 varnish]# chkconfig varnish on
[root@proxy02 varnish]# chkconfig varnish --list
varnish         0:off   1:off   2:on    3:on    4:on    5:on    6:off

最後進行客戶端的測試即可。

[root@client02 ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 54:52:01:01:15:01  
          inet addr:192.168.4.15  Bcast:192.168.4.255  Mask:255.255.255.0
//這裡就可以看到我們訪問的是代理伺服器的ip就可以訪問web服務
[root@client02 ~]# curl http://192.168.4.6
This is index.html.

當對網頁的資訊更新頻率要求很高時,就可以使用下列命令進行設定
[[email protected] varnish]#ln -s /usr/local/varnish/bin/* /usr/bin/
[[email protected] varnish]#varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url index.html
[[email protected] varnish]#varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url “.*”

附指令碼全文

#!/bin/bash
#LANG=en_US.UTF-8
#      exit code
# exit 39 yum error
# exit 40 configure error
# exit 41 make error
# exit 42 make install errot

#static variable
INSTALL_FILE="varnish-3.0.6.tar.gz"
CODE_DIR=$(tar -tf $INSTALL_FILE | head -1)
NULL=/dev/null

test_yum () {
#set yum configure file do not display Red Hat Subscription Management info.
    if [ -f /etc/yum/pluginconf.d/subscription-manager.conf ];then
        sed -i '/enabled/s/1/0/' /etc/yum/pluginconf.d/subscription-manager.conf
    fi
    yum clean all &>$NULL
    repolist=$(yum repolist 2>/dev/null |awk '/repolist:/{print $2}'|sed 's/,//')
    if [ $repolist -le 0 ];then
        exit 39
    fi
}

test_yum
##安裝variable需要依賴包
yum -y install gcc* readline-devel pcre-devel &> $NULL

##新增對應使用者,以該使用者進行操作後續
useradd -s /sbin/nologin varnish

tar -xf $INSTALL_FILE
cd $CODE_DIR
[ -f configure ] && ./configure --prefix=/usr/local/varnish  &> $NULL || exit 40
echo "configure success."
make &> $NULL
[ $? -eq 0 ] && echo "make success."  || exit 41
make install &> $NULL
[ $? -eq 0 ] && echo "make install success." || exit 42
##進行配置檔案的複製操作;
cp redhat/varnish.initrc /etc/init.d/varnish
cp redhat/varnish.sysconfig  /etc/sysconfig/varnish
cp redhat/varnish_reload_vcl /usr/bin/
ln -s /usr/local/varnish/sbin/varnishd /usr/sbin/
mkdir /etc/varnish
cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/
uuidgen > /etc/varnish/secret

#最大的執行緒數和最小執行緒數受計算機的配置有關,其中什麼時候增加程序,在有些配置檔案會新增一個空
#閒執行緒的引數,通過該引數進行相關的操作
#VARNISH_ADMIN_LISTEN_ADDRESS 最小執行緒數
#VARNISH_MAX_THREADS=1000 最大執行緒數
#VARNISH_STORAGE_SIZE=64M 快取大小,快取大小受業務和快取總容量影響。
#VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" 使用記憶體快取頁面,記憶體大小為64M,
#還可以使用硬碟進行快取操作,不過那樣速度會慢,無法體現出varnish的優勢
# VARNISH_VCL_CONF=/etc/varnish/default.vcl  

#sed -n '/VARNISH_VCL_CONF=/p' /etc/sysconfig/varnish 
#VARNISH_LISTEN_PORT 預設埠,修改為httpd預設的埠
sed -i '/VARNISH_LISTEN_PORT=/  s/=.*/=80/' /etc/sysconfig/varnish
sed -i '/VARNISH_MIN_THREADS=/ s/=.*/=1000/' /etc/sysconfig/varnish
sed -i '/VARNISH_MAX_THREADS=/ s/=.*/=10000/' /etc/sysconfig/varnish
sed -i '/VARNISH_STORAGE_SIZE=/ s/=.*/=128M/' /etc/sysconfig/varnish
sed -i '/VARNISH_STORAGE=/ s/=.*/="malloc,${VARNISH_STORAGE_SIZE}"/' /etc/sysconfig/varnish 

#修改主配置檔案(定義後臺伺服器)default.vcl
#backend default {
#     .host = "192.168.2.100";
#         .port = "80";
#      }
sed -i '/backend default/ s/.*back/back/' /etc/varnish/default.vcl
sed -i '/.host =/ s/.*\.host =.*/    .host = "192.168.2.16";/' /etc/varnish/default.vcl
sed -i '/.port =/ s/.*\.port =.*/    .port = "80";/' /etc/varnish/default.vcl
sed -i '/.port =/a }' /etc/varnish/default.vcl

#當對網頁的資訊更新頻率要求很高時,就可以使用下列命令進行設定
#ln -s /usr/local/varnish/bin/* /usr/bin/
#varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url index.html
#varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 ban.url ".*"


相關推薦

Varnish部署使用例項安裝部署指令碼github連結

Varnish的部署與使用 指令碼及原始碼安裝包連結 概述 Varnish是一款高效能且開源的反向代理伺服器和http加速器 與傳統的Squid相比,Varnish具有效能更高,速度更快,管理更方便等諸多優點。 編譯安裝 這裡展

用Python和WordCloud繪制詞雲讓字體清晰的秘笈

txt文件 gen 擴展 其中 詞匯 平臺 jieba分詞 名稱 個數 環境及模塊:   Win7 64位   Python 3.6.4   WordCloud 1.5.0   Pillow 5.0.0   Jieba 0.39 目標:   繪制安徽省2018年某些科技項

親測完美centos7部署Nginx1.6.3(安裝nginx1.13.8腳本

親測 group 安裝 centos oot roo down 測試 eve 1. 創建預備環境 [[email protected] ~]# test -f /services/current_apps || mkdir /services/current_a

Nexus3.x安裝及使用Docker方式安裝

文章目錄 Nexus介紹 docker安裝Nexus3.x 安裝docker 安裝Nexus3 登入驗證 web介面使用 配置阿里雲公共倉庫 Maven配置使用Nexus Maven配置私服

thinkphp5 在nginx下的配置lnmp1.4安裝環境

本地用的環境是Apache,將專案上傳至伺服器後,發現不能訪問,然後就在網上查詢各種資料,新增各種配置,同時也出現各種報錯,access deiny   ,  file not found 等,最後發現讓nginx支援pathinfo僅僅只需要配置幾個選項就可以了。伺服器用的

MYSQL安裝指令碼

系統環境:CENTOS7 MYSQL:mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz MYSQL的安裝包的路徑:/shared/app/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz [[email p

SLAM環境配置--安裝ROS指令碼

當我們的系統出了問題時,需要重新配置環境,這樣是一個很繁瑣的過程,所以如果把這些步驟寫到腳本里,直接執行shell指令碼進行安裝就會方便很多。 ubuntu版本:14.05 ROS版本:indgo #!

rsync客戶端安裝rsync指令碼(原始碼)

# 客戶端 ```bash read -np "請輸入原始碼rsync的URL 地址 包名(例如:https://rsync.samba.org ftp/rsync/src rsync-3.0.7):" URL DZ BM yum remove -y rsync &>>/dev/null cd /

手把手教你部署WEB郵件系統Squirrelmail小松鼠源碼包

.gz fff usr oss 通訊 mua 文件 ins login 簡介 Web郵件系統指的是提供給用戶發信、收信的網頁操作界面,能夠完成和MUA軟件類似的郵件管理、通訊簿等附加功能,同時Web郵件系統依賴於已有的收信、發信服務器,但不需要用戶預先配置郵箱屬性,因此使用

超詳解百萬PV網站架構案例部署安裝

事先 接下來 ecc vim 兩臺 keepaliv lis chm back 網站架構概述 網站架構是根據客戶需求分析的結果,準確定位網站目標群體,設定網站的整體架構,規劃、設計網站欄目及其內容,制定網站開發流程的順序,最大限度地進行高效資源分配與管理的設計。 網站架

如何將量子鏈引入業務系統,使用JSON-RPC錢包通訊區塊鏈學習論,個人理解,歡迎交流

提示 Tip1.本文適合想要深入瞭解區塊鏈技術的人員閱讀 Tip2.本文適合需要在業務系統中引入比特幣/量子鏈的技術人員閱讀 引言 入門區塊鏈技術之前,如果對於去中心化有一定了解,這無疑將幫助你更好的理解區塊鏈的底層技術;區塊鏈的底層技術由密碼學,共識演算法,

【利用python進行資料分析】準備例項

我已經分享了本書的ipynb,所以跟著我一起來實驗吧。如果你不懂怎麼開啟ipynb格式的檔案,那也沒關係,anaconda3讓一切變得更簡單(我像是打廣告的)。安裝玩anaconda之後,我們在開始裡就可以找到它的資料夾,裡面有一個Jupyter Notebook,就是它了。

Android中基於ServerSocket的實際使用簡單介紹一個PC端群控多臺手機的訊息傳送和接收Demo

一、要想將ServerSocket整明白首先至少先要知道或是瞭解幾點基礎內容部分(大神或是有一定能力的小神跳過): 1.ServerSocket是需要在服務端定義書寫的而在客戶端不需要ServerSocket,客戶端只需要建立socket就可以了。 2.socket需要在子

如何更加安全、高效地選擇開源項目詳解

編譯 com 再次 即時聊天 能力 時代 核心 只需要 重新編譯   前言在平時的開發過程中,難免會遇到這樣那樣的難題,或者一些繁瑣且不想純手工完成的功能,對於這些問題,解決的姿勢有很多種,可以通過同事間的交流、上網查資料、去官網找文檔等,隨著開源的推動和完善,尋找合適的開

高效、易用、功能強大的 api 管理平臺彩蛋

運維 接口管理 centos linux 前言導讀 實際環境的需求可以說是:只有你沒想到,沒有實現不了的,征對於目前實際開發、測試、生產等環境中,需要用到各類的接口可達幾十、甚至上百個,因此,必須需要一個統一管理的工具平臺來統一管理這類接口,從而方便後續使用。那麽今天來簡單介紹下開源的接口

詳解postfix郵箱服務器安裝、配置及其工作原理源碼包

zhang 關閉防火墻 互聯 分享 接收郵件 目錄 ifconfig shutdown 數字 簡介 postfix是Wietse Venema在IBM的GPL協議之下開發的MTA(郵件傳輸代理)軟件。postfix是Wietse Venema想要為使用最廣泛的sendmai

Apach實現創建虛擬目錄以及用戶訪問控制源碼包

direct min selinux httpd服務 follow virt 涵蓋 掛載 域名 簡介 基於用戶的訪問控制就是對網頁目錄進行認證配置,用戶輸入用戶名密碼之後才能訪問網頁 認證方式 httpd服務器支持使用摘要認證(Digest)和基本認證(Basic)兩種方式

源碼手工編譯LAMP架構搭建Discuz論壇源碼包

default work 默認 都是 手工編譯 end 火墻 configure 網頁 簡介 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因為常被放在一起使用,擁

Centos7.4搭建Nginx服務器實現訪問狀態統計源碼包

nginx源碼包 net sysconf wall sys centos7.4 9.4 host name 動態 Nginx簡介 Nginx是一個網站架設軟件,與Apache一樣可完成網站架設。由俄羅斯程序設計師伊戈爾·賽索耶夫開發。目前新浪、網易、騰訊、Purk等都在使用

源碼手工編譯LNMP架構源碼包

ram may boot 服務腳本 復制 devel root config nginx源碼包 簡介 LNMP指的是一個基於CentOS/Debian編寫的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一鍵安裝包。可以在VPS、獨立主機上輕松