米米的博客

做了一点微小的工作

BBR 的全称是 Bottleneck Bandwidth and RTT congestion control。该技术的目的是通过优化和控制 TCP 的拥塞,充分利用带宽并降低延迟,起到神奇般的加速效果 —— 通俗来讲就是对 Linux 内核 TCP 协议的优化从而达到提速的目的。一些受制于特殊网络环境的网民,近年来一直在寻找各种提速的方法。不论是之前流行的锐速(后开始收费),还是 FinalSpeed 等都曾备受大家的爱戴。BBR 则提供了一个全新的加速方式,自 Google 于 2016 年 9 月宣布将 BBR 开源起,这一全新的加速方案便受到了广泛的关注。在内核较新的 Linux 系统,例如 Ubuntu 18.04 上,它可以方便的开启;而一些较旧的系统,则需要先升级内核才能启用。
这篇文章将介绍在 CentOS 7 上,启动 BBR 的方法。文中使用的是 yum 包管理工具。如果你的系统环境不同,本文可能并不适用。

yum 系统更新

将 CentOS 系统版本更新到 7.3 或更高:

1
2
yum update
yum upgrade

查看系统版本

1
cat /etc/redhat-release

输出如下,则表示已升级到 7.3

1
CentOS Linux release 7.3.1611 (Core)

安装 elrepo 并升级内核

执行 uname -r 查看内核版本,例如:

1
4.9.0-1.el7.elrepo.x86_64

如果内核版本低于 4.9,需要升级内核;否则可以跳过这一步,直接到「开启 BBR」部分。

1
2
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

这时,执行 yum repolist all 可以看到所有安装的源,可以启用 elrepo-kernal

1
2
yum-config-manager --enable elrepo-kernel
yum install kernel-ml -y

如果只是执行一次,也可以使用:

1
yum --enablerepo=elrepo-kernel install kernel-ml -y

正常情况下这个命令将输出如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Transaction Summary
================================================================================
Install 1 Package

Total download size: 39 M
Installed size: 169 M
Downloading packages:
kernel-ml-4.9.0-1.el7.elrepo.x86_64.rpm | 39 MB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
Installing : kernel-ml-4.9.0-1.el7.elrepo.x86_64 1/1
Verifying : kernel-ml-4.9.0-1.el7.elrepo.x86_64 1/1

Installed:
kernel-ml.x86_64 0:4.9.0-1.el7.elrepo

Complete!

随后更新 grub 文件并重启。执行:

1
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

或者

1
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

这时,所有可用的内核会被输出。记下新内核所在的行数,第一行为 0,第二行为 1,以此类推。
执行以下命令来启用最新内核,需要把 0 替换成上一步得到的新内核所在的行数:

1
2
grub2-set-default 0
reboot

重启后,ssh 会断开,稍等一会儿重新连接。可以再次查看内核版本,检查更新是否成功。如果一切顺利,下一步就是启动 bbr 了。

阅读全文 »

下面这两张图片拥有相同的 MD5 值 253dd04e87492e4fc3471de5e776bc3d


阅读全文 »

近年来,网络视频直播处于蓬勃的发展期,各大直播平台的竞争也趋于白热化。在游戏直播领域,就有许多电子竞技的前职业选手,退役后转行做游戏主播,收入不菲。当然,网络直播的用处不仅仅是娱乐行业,诸如实时视频监控等应用,同样具有广阔的市场。事实上,如果没有太高的并发播放需求,完全可以自己运行一个小型的直播平台。
笔者在参看了大量教程后,借助于 Nginx 和一些拓展模块,成功地在 VPS 上搭建了一台视频直播服务器。经过测试,能够正常地使用 OBS Studio 推流,在浏览器上实现 HLS 视频流播放。下面附上具体步骤,你会发现,视频直播的相关配置其实并不复杂。

下载 Nginx 及扩展模块

首先,需要下载可编译的 Nginx 源代码,以及 nginx-http-flv-module 拓展库。

获取 Nginx 源码

这一步需要根据你所使用的系统的实际情况选择:

  • 未安装或曾使用包管理工具安装了 Nginx:参考文章 Nginx 环境搭建中「源码安装」的「准备工作」步骤获取源码;
  • 此前通过源码编译安装了 Nginx:如果下载的源码没有删除,可以继续使用,具体操作会在后文中讲到;也可以参考上一条下载最新的源码;
  • 如果你已经非常熟悉 Linux 和 Nginx 的安装配置,当然也可以使用你喜欢的其他方式安装。

下载拓展库

GitHub 项目地址:nginx-http-flv-module,克隆到本地即可:

1
2
3
4
5
#为 Nginx 创建扩展模块目录
mkdir nginx_module
cd nginx_module
#下载扩展包到 nginx 扩展模块目录下
git clone https://github.com/winshining/nginx-http-flv-module.git

安装 Nginx

查看 Nginx 配置参数

如果此前已经安装过 Nginx,执行 nginx -V 会输出配置参数,类似于这样:

Nginx编译配置参数

复制 configure arguments 后的所有参数,例如:

1
--prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module

这会在后面用到。

如果是初次安装则可以跳过这一步,使用默认的 configure 参数。

编译 Nginx

首先进入 Nginx 源码目录:

1
cd nginx-1.14.0

然后用 configure 生成 Makefile 脚本。configure 参数是刚才从 nginx -V 中复制的参数,加上 --add-module=/path/to/nginx-http-flv-module,即 nginx-http-flv-module 扩展包的目录。例如

1
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --add-module=/root/nginx_module/nginx-http-flv-module

之后就可以编译安装了

1
make && make install

再次执行 nginx -V 查看安装状态,如果 configure arguments 后出现 nginx-http-flv-module 说明安装成功!

最后重启 Nginx 服务即可。

1
systemctl restart nginx

注意:在部分系统下需要使用 service 代替 systemctl 命令。

阅读全文 »

本文将介绍几种常见的搭建 Nginx(以及 PHP)环境的方法。

包管理工具

使用包管理工具安装无疑是最方便、可控的。我们以 Ubuntu 为例,使用以下命令即可安装 Nginx。

1
apt install nginx

PHP 和一些常用的 PHP 拓展库也可以一并安装:

1
apt install php php-fpm php-mysql php-mbstring php-curl php-zip php-imagick

安装完成后需要进行配置。比较关键的是以下两个配置文件:

  • php-fpm 配置文件 /etc/php/7.2/fpm/pool.d/www.conf
  • Nginx 配置文件 /etc/nginx/nginx.conf

这里的 7.2 是笔者测试时安装的 PHP 版本,可以根据情况替换。为了避免权限问题,需要确保两者的用户名一致。即

  • php-fpm 配置文件中的 listen.ownerlisten.group
  • 以及 Nginx 配置文件中的 user

是相同的。默认情况下它们都是 www-data,如果自己修改就需要注意两处都要改。

最后需要为 Nginx 启用 PHP。可以参考默认的网站配置文件 /etc/nginx/sites-available/default,其中有一段关于 location ~ \.php$ 的配置被注释掉了。根据需要启用这段配置即可,注意 fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; 同样需要设置得与 php-fpm 配置文件中一致。

源码安装

源码安装的优点是可以方便地自定义各种第三方库。

准备工作

首先还是用包管理工具安装必须的依赖包:

1
apt install g++ zlib1g-dev libjemalloc-dev libssl-dev libpcre3 libpcre3-dev

Nginx 源码在此处下载,我们以 1.14.0 版本为例。你可以换成更新的版本。

1
2
3
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzf nginx-1.14.0.tar.gz
cd nginx-1.14.0

编译安装

然后编译安装 Nginx。

1
2
./configure --user=www-data --group=www-data --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module
make && make install

configure 参数中的 usergroup 都设置为了 www-data。如果要修改为其它用户,需要注意一并修改 php-fpm 配置文件中的相关设置,否则会出现权限问题。
此外,如果是通过 ssh 连接的远程服务器,在执行 make 时可以开一个 screen,避免连接断开导致编译终止。

LNMP

如果你是萌新,请按照👇教程安装搭建 lnmp 环境!
lnmp 环境一键安装脚本

1
2
3
4
5
#下载并安装lnmp环境,将1.4替换为最新版本
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz
tar -xzf lnmp1.4.tar.gz
cd lnmp1.4
./install.sh lnmp

请按照脚本的提示选择你要安装的各个组件版本,若不确定,选择默认选项即可。安装完成后,命令行输出:

LNMP安装成功

此时访问服务器地址会出现如下界面:

默认服务器首页

这就说明安装成功了。

在我的世界中,制作不同区域的地图后,可以使用物品展示框将它们挂起来,这样便能拼出一幅巨大的高分辨率地图。这是笔者对一个经营了多年的存档拍摄的「卫星图」:

MCPE卫星图

效果还是挺不错的。

0%