Nginx 搭建 RTMP 流媒体直播服务器

为了在远处查看屋里的情况,又把以前用过的Nginx – rtmp服务器搭起来了,大致记录下:

编译Nginx(带有RTMP模块):

Nginx使用1.6.3,Nginx-rtmp使用master最新版本,系统为CentOS 7

准备Nginx源代码:

wget

Nginx-rtmp:

git clone

配置:

在CentOS下:

在Gentoo下:

编译:

make -j9

安装:

make install

Nginx 配置:

加入rtmp block

rtmp{

}

Iptables配置:

Selinux配置:

启动Nginx:

Systemd中:

systemctl start nginx

systemctl enable nginx

非Systemd:

/etc/init.d/nginx start

使用 Dnspod 的 DDNS 功能,动态 IP 搭建网站

虽然我有台学生版阿里云,但还是更愿意将自己的网站放在看得见摸得着的主机上,家用宽带只有动态IP,可以用将域名 解析交给 Dnspod 的,通过 DDNS 动态解析 IP。

域名设置 Nameserver:

GoDaddy

Dnspod 设置:

 

服务器上配置 DDNS 自动更新服务:

 

emerge -v dev-python/httplib2

chmod 750 /usr/local/bin/pypod.py

chgrp ddns /usr/local/bin/pypod.py

useradd -s /sbin/nologin -d /var/empty ddns

usermod -a -G tpe,noserver ddns

互联网信任链

经过这段时间的几次建站和证书申请,和Let’s Encrypt等的兴起,近期要研究一下整个互联网信任链大致工作方式。

非对称加密,公钥,私钥:

非对成加密即,即加密解密所需密钥不统一。非对称加密会有公钥。任何人公钥持有人可以用公钥对一段数据进行加密,但只有私钥的持有人能解密。非对称加密被广泛应用于各种安全通讯领域。通讯过程即使被全程监听也几乎不可能被破译。(目前破译一个4096位,RSA加密之后的数据大概普通PC会耗费几个世纪吧)。

证书:

证书中包含了证书持有人发布的公钥。

 

证书链,证书机构:

证书机构是一些可靠的机构,负责给证书”签字”,确保这个证书是和一个(或多个)域名绑定的,合法的。

 

域名,域名注册机构,所有人:

域名注册时会记录域名所有人给的email地址等信息,

 

DNS,MX地址:

每个地址会被对应解析为一个IP,

 

 

HTTPS:

 

信任:

 

MITM:

 

HTTPS优化:

>>def nexts(*iters):
>> nexts = [i for i in iters]
while nexts:
>> t = nexts
try:
>> for n, i in enumerate(t):
if iter(i):
yield n
>> except:
>> t = next[:n] + next[n+1:]
nexts = t

>>for i in nexts([[1,1],[2,2],3]):
pass

Grsecurity 的用户组加固

Grsecurity提供了基于GID,UID的执行控制(TPE)和网络控制,可以让指定用户组的用户无法执行非root所有的可执行文件,或者禁止建立监听端口或者出站连接等,可以加固服务器,防止漏洞被利用。

我是这样使用的,如果有更好的方法或者哪里不妥的话欢迎拍砖讨论。

 

UID是在内核中设置好的,根据内核config来建立用户组:

groupadd -g 65532 tpe

groupadd -g 65531 nonet

groupadd -g 65530 noclient

groupadd -g 65529 noserver

useradd -g tpe -s /sbin/nologin -u 65532 tpe

useradd -g nonet -s /sbin/nologin -u 65531 nonet

useradd -g noclient -s /sbin/nologin -u 65531 noclient

useradd -g noclient -s /sbin/nologin -u 65530 noclient

useradd -g noserver -s /sbin/nologin -u 65529 noserver

useradd -g nonet -s /sbin/nologin -u 65528 nonet-tpe

useradd -g noclient -s /sbin/nologin -u 65527 noclient-tpe

useradd -g noserver -s /sbin/nologin -u 65526 noserver-tpe

usermod -a -G tpe noclient-tpe

usermod -a -G tpe noserver-tpe

usermod -a -G tpe nonet-tpe

让特定程序以特定身份运行,比如php的用户名就叫php:

Scheme 的奇妙表示

前段时间读 《SICP》 的时候被 lambda 重新定义的皮亚诺公理惊艳到了。

lambda表示皮亚诺公理:

最早接触数学归纳法大概i是在初中时,那时并不懂得什么叫数学,什么叫归纳,感觉这个方法的使用和命名都颇为莫名其妙。

归纳,是通过根据已有的,通过观察的来的规律,总结出一个通用规则。数学归纳,就是用严格的

推演,证明

让一个推测可被证明。

 

lambda表示数学归纳法:

数学归纳法和递归颇为相似。我们对第n个命题求结果,有数学归纳法的定义这个取决于n-1个命题(n-1成立时,n成立),一层层直到第一个命题,也就是n=1时命题成立。此处为尾递归。

通过归纳之后,我们不仅

 

lambda:

归纳法相比直接通过工程学方法去证明在直观感受上更加不直观,颇有种“流氓有文化“的感觉。工程学所带来的”直观感受”有是如何得来的?(比如?)

其实工程学的任何推导都是归纳的一部分,lambda层层“递归“最终可以实现任何计算模型可实现的功能。递归的最底层只有三条命题。

数学,数字是从现实中抽象化得来,随着发展,很多数学概念很难直接推演到。