2019年5月

由于个人有直播间在使用脚本推流,所以在进行脚本代码的变更时候,如果能现在本地进行一次测试就最好不过了。自己安装配置Nginx等确实可行,但是毕竟只是自己测试使用,大费周章的做一系列工作有点儿麻烦了,所以我最终选择了docker上编译好的rtmp环境直接使用。

一、安装Docker

Docker 官网上并没有提供关于 Deepin 的 Docker 安装教程,由于 Deepin 是基于 Debian 的,所以可以参照官网 Debian的安装教程安装,但 Deepin 在定制过程中进行了大量修改,所以使用官方教程可能会失败,所以需要先在 Deepin 下完成 Docker 的安装。

1、关于深度中的Docker

深度官方 Deepin 的应用仓库已经集成了docker,但不是类似于 docker-ce 这样的最新版本。要想使用最新版可以参考官网 debian 安装教程安装,不过由于深度 sid 版本开发,通过 $(lsb_release -cs) 获取的版本信息为 unstable,而 docker 官方源并没提供 sid 这种 unstable 版本的 docker,所以使用官方教程是安装不成功的。

2、前提—安装 docker-ce 和密钥管理以及下载相关的工具

使用命令

sudo apt-get install apt-transport-https ca-certificates curl python-software-properties software-properties-common

安装 curl命令、提供add-apt-repository工具的software-properties-common包 和密钥管理工具。

3、下载并安装秘钥

通过命令

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

安装。之后可以通过 sudo apt-key fingerprint 0EBFCD88 查看是否安装成功。若成功,会类似下面的信息:

pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) mailto:[email protected]
sub 4096R/F273FCD8 2017-02-22

4、添加docker官方仓库

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian wheezy stable"

之后使用命令 sudo apt update 来更新系统

5、安装Docker

sudo apt-get install docker-ce

6、验证完成安装

现在,可以通过 systemctl start docker 来启动docker服务,并使用 docker version 来查看docker版本。若能返回版本信息,则安装已完成。

若启动启动服务时报错,可查看 docker.service 的 unit文件,路径为 /lib/systemd/system/docker.service,把 ExecStart=/usr/bin/dockerd -H fd:// 修改为ExecStart=/usr/bin/dockerd,即可以正常启动 docker 。

7、更改docker权限

因为安装过程都是超级用户身份,所以现在可以对权限进行更改,使普通用户可用。

#将当前用户添加到docker组
sudo gpasswd -a ${USER} docker

#修改docker.sock权限
sudo chmod a+rw /var/run/docker.sock

完成。现在可以通过 sudo docker run hello-world 来验证docker是否能正常使用。正常情况下,终端会显示Hello from Docker一系列欢迎界面。

8、使用国内加速源

编辑 /etc/docker/daemon.json 文件,并输入docker-cn 镜像源地址

sudo nano /etc/docker/daemon.json

输入以下内容:

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

保存。

最后,重启一下docker服务

sudo service docker restart

Docker安装完成,接下来可以安装rtmp环境了。

二、在Docker上获取RTMP环境

1、拉取容器

docker pull alfg/nginx-rtmp

待拉取完毕,RTMP环境便搭建好了。

2、启动RTMP环境并推流

通过命令

docker run -it -p 1935:1935 -p 8080:80 --rm alfg/nginx-rtmp

来运行RTMP环境。之后,便可通过OBS或ffmpeg来向其进行推流了。

推流地址配置如下。

对于OBS:

流类型: 自定义流媒体服务器
URL: rtmp://localhost:1935/stream
流名称: hello(这里可以自定义,只需在拉流时对应更换好即可)

对于ffmpeg,推流地址写成

rtmp://localhost:1935/stream/hello

即可。其中,hello同OBS,可以自定义。

3、通过vlc查看流

在地址处输入 http://localhost:8080/live/hello.m3u8 即可。注意hello更换成前边推流自定义的流名称。

最近才找到服务器内存爆满的原因,是php并发数太高了。所以感觉还是写一个备忘录比较好,毕竟如果日后迁移服务器的话,还能有一个参照。

1、降低php-fpm子进程数量

宝塔面板→软件管理,找到php 5.6后面的“配置”,弹出的窗口中选择“性能调整”。

将max_children、start_servers、min_spare_servers、max_spare_servers降低。其中,后三项数值均不超过第一项,中间两项数值相等,最后一项的数值为第一项的60%-80%.
目前的设置值为:20 5 5 16。

2、调整上传文件大小限制

由于Nginx默认大小限制是20M,对于个人的服务器来讲空间和带宽都算是庞大了,而且也没有必要上传这么大的东西,遂将其与Apache默认限制看齐,最大2M。
  • 宝塔面板→软件管理,找到php 5.6后面的“配置”,弹出的窗口中选择“配置修改”,将upload_max_filesize项更改为2(默认20)
  • 切换到“上传限制”,将其更改为2

3、MySQL性能调整

这里根据服务器配置做一下调整即可。目前服务器2G内存。
宝塔面板,首页“软件”一项中选择“MySQL”,弹出的窗口选择“性能调整”,顶部优化方案选“1G-2G”(此处根据服务器配置自行更改)

如果之后还发现有关设置上面的问题,将在这里更新。

最近出现的问题。在文件管理器里边粘贴、新建、删除文件或文件夹的时候,文件夹内容不会实时变化,需要手动按F5才行。之后通过论坛解决。在这里记录一下

可以先通过命令 sudo sysctl -a | grep fs.inotify.max_user_watches 查看当前设置。默认应该是8192.

现在,通过命令 sudo sysctl -w fs/inotify/max_user_watches="一个数字" 来指定该参数的大小。之后重启即可。

关于这个参数

fs.inotify.max_user_watches:表示同一用户同时可以添加的watch数目(watch一般是针对目录,决定了同时同一用户可以监控的目录数量)

针对该参数的修改方法,还有一种就是直接修改文件:

/proc/sys/fs/inotify/max_user_watches

但是修改后,Linux系统重启inotify配置max_user_watches可能会因无效被恢复默认值8192。这个该如何解决呢?

很简单,通过 vim /etc/sysctl.conf

在其中添加 fs.inotify.max_user_watches=99999999(你想设置的值) 即可。