宝塔面板+Fikker+BBR算法+CloudXNS---搭建一个简易的全球CDN缓存节点给网站加速

一、组件简介
1)宝塔面板

宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率。例如:创建管理网站、FTP、数据库,拥有可视化文件管理器,可视化软件管理器,可视化CPU、内存、流量监控图表,计划任务等功能。我们在这里只用到它的LNMP/LAMP一键安装功能。



linux(centos)版:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh



windows版:
http://download.bt.cn/win/panel/BtSoft.zip



说明:本文使用的服务器系统是centos7.6,所以只演示linux(centos)版。其他版本详情请访问宝塔面板官方网站:
https://www.bt.cn/
卸载宝塔面板的命令:
wget http://download.bt.cn/install/bt-uninstall.sh && sh bt-uninstall.sh

2)Fikker

Fikker 是一款跨平台(Windows/Linux)网站加速服务器软件。还同时提供强大的实时监控,防盗链,源站负载均衡,站点流量统计,URL转向(Ajax跨域/伪静态),黑名单管理等一站式解决方案,为网站必备之服务器软件。
总之一句话:我们将用Fikker自建CDN,进行源站缓存加速
说明:Fikker并不是开源软件,是收费软件,全功能免费是7天,具体收费详情请访问Fikker官网的报价网页:https://www.fikker.com/price.htm
但是呢,博主大表哥已经破解了Fikker,现在我把我的全功能永久破解版链接地址发出来,大家可以下载破解版使用,功能和收费版一模一样,网上也有其他人发的破解版,但是骗子比较多,有的还有病毒,博主大表哥的破解版大家尽可放心使用,如有问题可随时来找我。如果博友不差钱的,可以选择官方收费版。
破解版百度云盘链接如下:
https://pan.baidu.com/s/1xMOZUunQcni3oZ09NKIIEA

3)BBR算法

在使用BBR之前,我们首先要了解它是什么。BBR是谷歌的研究成果,了解计算机网络的人都知道,在TCP连接中,由于需要维持连接的可靠性,引入了拥塞控制和流量管理的方法。Google BBR就是谷歌公司提出的一个开源TCP拥塞控制的算法。在linux内核版本4.9及以上的内核版本中已被采用(截止2019年5月15日发稿时间,最新版的内核版本是5.1.2)。对于该算法的分析,ss不经过其它的任何的优化就能轻松的跑满带宽。(speedtest测试或fast测试)。由于Google BBR非常新,任何低于4.9的linux内核版本都需要升级到4.9及以上才能使用,故若VPS本身内核版本较低的话,只有KVM架构的VPS才能使用本教程升级内核并使用,openvz的VPS用户若内核版本较低则无法使用!博主大表哥亲测,开启BBR前后,同一个服务器,同一个下载包,同一个测试机,同一个WIFI,
开启BBR前是:大约260KB/s
开启BBR后是:大约10MB/s
速度大约提升了40倍,简直是飞一般的感受!!!
注意一点:重要的事情说三遍,
只有VPS(就是虚拟机)才能用!!!物理实体机不能用BBR算法!!!!
只有VPS(就是虚拟机)才能用!!!物理实体机不能用BBR算法!!!!
只有VPS(就是虚拟机)才能用!!!物理实体机不能用BBR算法!!!!

4)CloudXNS

这是博主大表哥建议的域名供应商,因为给域名添加解析的时候有选择线路类型的功能,比如移动线路、联通线路、电信线路、铁通线路、海外线路等等,你可以指定你的域名解析的时候走什么线路,大大可以缩短玩家的请求和响应时间,也可以起到加速的作用,同一个IP记录值可以选择好几种线路类型。
CloudXNS官方网站:
https://www.cloudxns.net/
除此之外,大表哥还推荐腾讯的DNSPOD,效果同样不错,DNSPOD的官网:
https://www.dnspod.cn/

二、搭建过程

OS:centos7.6
服务器数目:2台(1台CDN、1台源站),由于是实验就2台,生产环境可以对源站和CDN扩充,可以做集群,Fikker就有集群功能。
本次试验测试域名:www.007lhj.com
fikker(CDN):34.80.164.244 hostname:fikker-cdn
源站:35.229.244.15 hostname:web-yuanzhan

1)安装宝塔面板,一键部署LNMP环境

宝塔面板的具体安装和一键安装LNMP的操作,请参看我的另一篇的博文第六部分内容,一直看到“恭喜,站点创建成功”部分即可:
https://blog.51cto.com/zpf666/2391930
看到如下页面,说明你的站点创建成功:

我们在站点根目录下创建一个1G的文件测试下载速度,具体操作如下:
[[email protected] ~]# cd /www/wwwroot/www.007lhj.com
[[email protected] www.007lhj.com]# ls
404.html index.html
[[email protected] www.007lhj.com]# **rm -rf *
[[email protected] www.007lhj.com]#
dd if=/dev/zero of=1G.zip bs=1024k count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.56463 s, 301 MB/s
[[email protected] www.007lhj.com]#
du -sh 1G.zip**
1.0G 1G.zip
去浏览器下载1G.zip这个文件,我们看一下下载的速度:下面是博主随便截取的一张速度图:

2)安装BBR算法
①在升级之前,您可以查看当前内核

[[email protected] ~]# uname -r
3.10.0-957.10.1.el7.x86_64
如您所见,当前内核为3.10.0,因此我们需要更新内核

②更新内核之前,先安装 ELRepo 仓库

导入公钥:
[[email protected] ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装 ELRepo 仓库:
[[email protected] ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

③使用ELRepo repo安装最新的内核(新内核必须在4.9.0以上)

[[email protected] ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y

④确认结果

[[email protected] ~]# rpm -qa | grep kernel
kernel-tools-3.10.0-957.10.1.el7.x86_64
kernel-ml-5.1.2-1.el7.elrepo.x86_64
kernel-tools-libs-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-devel-3.10.0-957.12.1.el7.x86_64
kernel-3.10.0-957.el7.x86_64
kernel-headers-3.10.0-957.12.1.el7.x86_64
如果安装成功,您应该看到类似于上面一列,其中kernel-ml-5.1.2-1.el7.elrepo.x86_64就在输出的列表中

⑤通过设置默认引导为grub2 ,来启用5.1.2内核,首先
显示 grub2 菜单中的所有条目:

[[email protected] ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \‘
CentOS Linux (5.1.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-b3157f60d1ef5b83c40655e1ace8fdab) 7 (Core)

⑤由于行计数开始于 0 ,且5.1.2内核条目位于第一行,因此将默认引导条目应设置为 0

[[email protected] ~]# grub2-set-default 0

⑥重启服务器,使新内核生效

[[email protected] ~]# reboot

⑦重新运行uname -r命令以确认您使用的是正确的内核

[[email protected] ~]# uname -r
5.1.2-1.el7.elrepo.x86_64
以上结果显示使用的是最新版的5.1.2内核

⑧启用 BBR 算法前,还需要修改 sysctl 配置

[[email protected] ~]# echo ‘net.core.default_qdisc=fq‘ | sudo tee -a /etc/sysctl.conf
[[email protected] ~]# echo ‘net.ipv4.tcp_congestion_control=bbr‘ | sudo tee -a /etc/sysctl.conf
[[email protected] ~]# sysctl -p

⑨确认是否已经启用了BBR

[[email protected] ~]# sysctl net.ipv4.tcp_available_congestion_control
看到类似如下结果说明启用了BRR:
net.ipv4.tcp_available_congestion_control = reno cubic bbr

⑩继续验证

[[email protected] ~]# sysctl -n net.ipv4.tcp_congestion_control
看到类似如下结果说明启用了BRR:
bbr

?检查内核模块是否已加载
[[email protected] ~]# lsmod | grep bbr

看到类似如下结果说明启用了BRR:
tcp_bbr 20480 5
至此BBR已经启用成功,我们再次去验证一下,网速是否增强。

由前后两张下载速度的截图,我们可以看出;
启用BBR算法前的下载速度是:
35KB/s
启用BBR算法后的下载速度是:
10.6MB/s
后者是前者的310倍,就问你吊不吊。

?删除无用的旧内核

升级内核之后,往往老旧的内核也保留下来了,执行以下命令,将自动筛选并删除当前无用的系统内核版本。
[[email protected] ~]# yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))

3)安装fikker,并做相关缓存配置
①安装fikker
[[email protected] ~]# ls
fikkerd-3.7.6-linux-x86-64-crack.tar.gz
[[email protected] ~]# tar zxf fikkerd-3.7.6-linux-x86-64-crack.tar.gz
[[email protected] ~]# mv fikkerd-3.7.6-linux-x86-64 /usr/local/fikker
[[email protected] ~]# cd /usr/local/
[[email protected] local]# chmod 777 -R fikker/
[[email protected] local]# cd fikker/
[[email protected] fikker]# ./fikkerd.sh install && ./fikkerd.sh start
install fikkerd service ...
install fikkerd service OK!
checking disk cache index for public ... OK!
checking disk cache index for member ... OK!
checking disk cache index for visitor ... OK!
checking disk cache index for content ... OK!
Starting fikkerd [OK]

②防火墙上开启80、443、6780端口例外
[[email protected] fikker]# firewall-cmd --permanent --add-port=80/tcp
success
[[email protected] fikker]# firewall-cmd --permanent --add-port=443/tcp
success
[[email protected] fikker]# firewall-cmd --permanent --add-port=6780/tcp
success
[[email protected] fikker]# firewall-cmd --reload
success

③登录你的fikker后台
http://your-fikker-ip:6780/
管理员/监控员的初始密码:123456

然后登录fikker后台,你可以看到大表哥破解版的授权结束日期:9999-12-31 12:20:21,如果是正式版,而是7天免费时间。

④配置fikker后台
⑴主机管理里面添加您的网站域名和源站IP

⑵页面缓存配置
Ⅰ、设置带有图片的静态页面的缓存规则
^.+.(jpg|jpeg|gif|bmp|png|ico|swf|css|js|txt|xls|cur)$

Ⅱ、设置缓存首页的匹配规则

Ⅲ、设置缓存视频的匹配规则
^.+.(m3u8|ts)$

Ⅳ、设置新闻页面的缓存匹配规则

⑶拒绝缓存配置
Ⅰ、动态页面不缓存
^.+.(php|aspx|asp|jsp|do|cgi|xhtml|shtml|htm|html|xml)(\??|\?.+)$

Ⅱ、主页和目录页不缓存
^.+/(\??|\?.+)$

Ⅲ、管理后台页面不缓存

⑷硬盘缓存设置

⑸转向管理设置
Ⅰ、访问二级域名跳转设置

^007lhj\.com/(.*)$
http://www.007lhj.com/$1

Ⅱ、访问任意主机头的域名的时候,跳转到HTTPS

^www\.007lhj\.com/(.*)$
https://www.007lhj.com/$1

⑹分量统计设置
Ⅰ、只统计首页流量

Ⅱ、 统计站点 php 页面流量(两种方法)
第一种:采用通配符匹配规则实现

第二种:
*^www.007lhj.com/.+.php(.)$**
采用正则表达式匹配规则实现

⑺防盗链管理
^www.007lhj.com/.+.(jpg|gif|png|ts|m3u8)$

⑻黑名单设置
Ⅰ、屏蔽单个IP地址

Ⅱ、屏蔽IP地址段

⑼系统配置

其实Fikker还有很多功能, 比如页面缓存、实时监控、流量统计、转向管理、防CC***等等,但是免费版本不包括页面缓存, 如果您需要缓存这个功能, 那么建议购买他们的全功能商业版本, 价格是399元/年.但是你用了博主的破解版,你就可以想享用Fikker全功能商业版本。

通过上面的方法, 您可以在全球架设多个节点, 如果您的节点比较多, 那么还可以通过他们的主控系统来集中化管理。

Fikker主控端下载地址
https://www.fikker.com/dl/FikkerCDN.zip

如果你的网站基本上全是图片,可以不使用Fikker,缓存服务器也安装宝塔面板来完成,具体的操作请借鉴如下网址:
https://www.openos.org/post/107/

4)智能DNS解析
配置好了源站和Fikker(CDN),最后就可以去CloudXNS里面,把域名的解析地址改成CDN服务器的IP,前面做BBR的实验的时候解析改的是源站的IP,现在CDN已经搭建好了,就把解析改成CDN的IP,这样CDN就起到了缓存加速的作用。

至此宝塔面板+Fikker+BBR算法+CloudXNS---搭建一个简易的全球CDN缓存节点给网站加速这一套就彻底搭建完了。

最后去访问www.007lhj.com,然后再来看Fikker后台,你会在右上角发现如下内容:

原文地址:https://blog.51cto.com/zpf666/2395252

时间: 2024-12-30 21:41:19

宝塔面板+Fikker+BBR算法+CloudXNS---搭建一个简易的全球CDN缓存节点给网站加速的相关文章

Angularjs,WebAPI 搭建一个简易权限管理系统

Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一) 1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 WebAPI项目主体结构 Angularjs前端主体结构 2. 前言 Angularjs开发CRUD类型的Web系统生产力惊人,与jQuery,YUI,kissy,Extjs等前端框架区别非常大,初学者在学习的过程中容易以自己以往的经验来学习Angularjs 往往走入误区,最典型的特征是在的开发过程中,使用

使用EF Code First搭建一个简易ASP.NET MVC网站,允许数据库迁移

本篇使用EF Code First搭建一个简易ASP.NET MVC 4网站,并允许数据库迁移. 创建一个ASP.NET MVC 4 网站. 在Models文件夹内创建Person类. public class Person { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } 在Controls文件夹内创建PersonControlle

如何搭建一个简易的Web框架

Web框架本质 什么是Web框架, 如何自己搭建一个简易的Web框架?其实, 只要了解了HTTP协议, 这些问题将引刃而解. 简单的理解:  所有的Web应用本质上就是一个socket服务端, 而用户的浏览器就是一个socket客户端. 用户在浏览器的地址栏输入网址, 敲下回车键便会给服务端发送数据, 这个数据是要遵守统一的规则(格式)的, 这个规则便是HTTP协议. HTTP协议主要规定了客户端和服务器之间的通信格式 浏览器收到的服务器响应的相关信息可以在浏览器调试窗口(F12键开启)的Net

自己动手搭建一个简易的SpringBoot环境

什么是springboot? Spring Boot俗称微服务.Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 1, 新建一个maven工程 先选择workspace 点击[next] 直接默认,再点击[n

python -m http.server 搭建一个简易web下载服务器

在打vulnhub靶场的时候遇到的一个问题 目录 一.进到需要发送的安装包目录 二.开启http服务 三.访问服务器 一.进到需要发送的安装包目录 比如设置一个专门发送,传输的文件的文件夹,cmd命令打开即可以 二.开启http服务 python2 python -m SimpleHTTPServer 9000 python3 python -m http.server 9000 (这里要注意了,python2跟python3的命令是不一样的,我之前就是上网搜搭建方法,大都是搜到了python3

Django1.11搭建一个简易上传显示图片的后台

项目展示需要,之前没研究过Django,网上查资料快速做了一个后台,写下了防止自己忘了. p { margin-bottom: 0.1in; line-height: 120% } a:link { } 1. 安装Django: pip install Django 2. 测试Django: python >> import django >>django.VERSION 显示版本为(1, 11, 5, 'final', 0),刚接触,github也没找到能运行起来的. 3. 运行

19.3.19 使用Flask框架搭建一个简易登录服务器

import Flask import json from Flask import request server1 = flask.Flask(__name__) #实例化一个flask对象 @server1.route('/login',methods=['get','post']) #@server.route()可以将普通函数转换为服务器,包括登录接口路径.请求方式 def login(): username = request.values.get('name') #获取通过url请求

python3 使用http.server模块 搭建一个简易的http服务器

from http.server import HTTPServer, BaseHTTPRequestHandler import json data = {'result': 'this is a test'} host = ('localhost', 8888) class Resquest(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', '

实验楼mysql实验-搭建一个简易的成绩管理系统的数据库

网址如下https://www.shiyanlou.com/courses/running ,pass之后的体验还蛮好的,. 首先打开终端,双击xfce终端或右键打开终端 开启数据库服务 ,连接数据库 首先创建新的数据库create database gradesystem; 接着选择新创建的数据库 use gradesystem; 进行建表,使用create table 语句,分别建立三个表,student,course,mark 其中stdent表的sid和course表的cid分别是mar