centos搭建流媒体服务器

要做流媒体服务,普通的web服务肯定是不行的,把视频文件丢到web目录里,只能做下载用,不能用来播放的,这是基本的概念。

搜了一下,centos用Darwin Streaming Server做流媒体服务器是比较多的,一致建议用5.5版本,下载安装配置如下:

yum -y install gcc gcc-c++ perl ld-linux.so.2 libstdc++.so.6
wget http://dss.macosforge.org/downloads/DarwinStreamingSrvr5.5.5-Linux.tar.gz
tar -zxvf DarwinStreamingSrvr5.5.5-Linux.tar.gz
cd DarwinStreamingSrvrlinux-Linux
./Install

安装完成后在命令行端会提示设置管理员和密码,按照提示输入就可以了,记住设置的用户名和密码,打开http://服务器ip:1220/可以访问到web管理端,按需配置就可以了,有一个配置,是否用80端口,不要勾选,否则肯定和web服务有冲突。

默认视频文件目录放在/usr/local/movies,播放地址是:rtsp://服务器ip/视频文件

接下来才是重点,如果用自带的视频文件播放,你不会发现有什么问题,但是你用自己制作或者网上下来的视频文件,就不对了,客户端无法播放。

问题出在一个叫hint track的东西,一般视频缺这个,需要下载一个叫mp4creator.exe的软件,做些处理,linux端也有,不过安装配置太麻烦,懒得去搞了。

下载mp4creator后,用命令行打开,对视频文件执行以下两个操作:

mp4creator hint=1 视频文件
mp4creator hint=2 视频文件

忽略任何提示和警告,处理完的视频文件再上传到/usr/local/movies目录,再用客户端播放,就没问题了。

centos删除海量文件

一不小心,日志目录就可能爆上千万级甚至更多文件,df -i,结果发现inode都爆满,这是非常衰的事情。

这个时候用rm命令是不起作用了,要么停在那里不动,要么报内存不够。

这个时候要用rsync,强悍的同步文件工具,还可以用来删除含量文件。

rsync --delete-before -a -H -v --progress --stats  /var/spool/postfix/maildrop  /tmp

第一个目录就是要删除文件的目录,后面是临时目录,删完重启就ok了

第一次挂载硬盘

新插的硬盘,通过df -h命令是看不到的,需要用fdisk -l查看,在df -h里看不到,而在fdisk -l看到的盘信息,就是刚插入还没挂载的盘了,比如我插的这块是/dev/sda

先进行分区:

fdisk -S 56 /dev/sda

上面命令会进入分区命令行,m=查看全部命令,n=新建分区,直接输入n,接下来提示创建ext分区还是主分区,选择主分区,也就是接着输入p,接下来提示输入分区号(1-4),输入1,如果提示分区1已存在,打p命令看一下有哪些已分好的分区,不需要的话,可以用d命令删除已有分区,接下来继续分区,最后输入w命令保存分区。顺利的话,应该分别输入的是n p 1 w

接下来再次使用fdisk -l查看盘,应该就可以看到sda盘下面详细的分区了,比如我只分一个区,那么就是sda1

格式化分区

mkfs.ext3 /dev/sda1

时间有点长,直到提示writing superblocks and filesystem accounting information:done,一定要等到最后done出现,就表示格式化完成了

添加分区信息

echo '/dev/sda1  /mnt ext3    defaults    0  0' >> /etc/fstab

挂载分区

mount -a

最后用df -h,应该就可以看到新盘的分区了

监控php命令行程序shell

用php做值守进程实时处理数据是经常用到的,不过php做值守进程不是很稳定,经常会自动宕掉,有必要再写个shell做个监控,发现宕掉,立即重开一个进程。

假如被监控的程序叫mytask.php,监控脚本如下:

#/bin/sh
while true; do
  count=`ps -fe |grep "mytask" | grep -v "grep"`
  if [ "$?" != "0" ]; then
   /usr/local/webserver/php/bin/php /var/www/html/mytask.php
  fi
  sleep 2
done

其实就是调用grep命令,统计一下进程名是mytask的个数,当然要去掉grep mytask本身这个进程,如果没有mytask进程在跑,就起一个进程,如此而已。

假如这个监控进程也宕掉呢?那就要把监控进程写到crontab里,每分钟跑一次吧,然后shell里while循环去掉,原本这个sh也是值守进程,去掉while运行完就会自动结束掉。

采集网站之利器wget和批量替换内容

wget采集:

wget --mirror -p --convert-links -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6" http://www.hao535.com/

 

批量替换内容,主要要到网站所在目录下执行:

find -type f|xargs perl -i -pe s%查找内容%替换后内容%g

有了这两个法宝,纯静态的网站,一般都能顺利采集完

服务器攻击防御作业指导书

一、             攻击和防御的基本认识

1、  攻击类型

a)       CC:CC是我们比较常见的攻击方式,攻击者通过大量请求我们的页面,消耗服务器资源和带宽资源,达到网站无法访问的目的;

b)       DDOS:DDOS也是经常遇到的攻击,攻击者挟持大量肉鸡,对服务器进行半连接的攻击,使得服务器带宽堵塞,正常访问无法进入服务器;

c)       ARP:这个攻击我们不常见,表现形式是在我们的网站页面上出现其他的广告,但检查页面代码,却没有广告代码。

2、  防御的思路和方法

a)       CC:优化页面程序代码,减少每段代码对服务器资源的消耗,尽量使用html页面,如确实需要动态页面,则必须使用缓存技术,减少对数据库的压力;

b)       DDOS:对服务器做一些配置优化,但基本上无法防御住大量肉鸡的攻击,此时可以将DNS解析到高防服务器;

c)       ARP:防御较为简单,直接联系机房,查找异常mac,处理掉ARP。


遭受CC或DDOS攻击后的处理流程

i

 

操作注释:

操作1:判断攻击类型

a)       命令:

netstat -an|grep SYN|wc -l

 

看检查到的包多不多,一般我们服务器只有20以下,超过200,基本可以确认是DDOS攻击

b)       命令:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

 

看 ESTABLISHED ,非常大是DDOS,数值大概在1万以上,正常值在2000左右或以下

c)       查看nginx日志,检查是否大量请求某个页面,日志增长数量迅速,若确认,则为CC

操作2.1:开启CC登陆判断

进入common文件夹,修改configWeb.php文件,将include(“proxy.php”)的注释去掉

操作2.2:转移到高防

进入dnspod.cn,修改域名dns解析地址,指向高防服务器,同时替换主服务器上的nginx配置文件为应急nginx.conf,并重启nginx,目的是关闭80端口

操作3.1:开启多台服务器共同防御CC

在dnspod.cn里增加多个A记录,使得用户平均解析到各个服务器,共同防御CC,此时主服务器不需要关闭80端口

操作3.2:和联盟高防轮切

在单台高防无法防御的时候,重新修改dnspod里的IP地址,将地址解析到联盟高防,等到联盟防不住的时候,切到自己高防,通过不停的来回切换,使攻击对我们的影响,降到最低

         操作4:攻击结束

通过监控和主服务器测试,判断攻击是否结束,若结束后,域名解析回到自己主服务器,nginx配置文件换回攻击以前的版本,注释掉CC防御的代码。

一、             服务器状态监控

1、  iptraf监控网卡流量,一般DDOS和CC都会引发网卡收到的包数量增长;

2、  netstat -an|grep SYN|wc –l命令检查SYN包数量;

3、  检查nginx日志,是否存在大量同时请求某个页面,以及日志文件的增长速度;

4、  若为DDOS攻击,在攻击一段时间后,开启主服务器80端口,检查是否还有大量SYN包进入服务器。

二、             注意事项

1、在被DDOS攻击时,确保主服务器的nginx配置文件为应急版本,80端口必须关闭,可用netstat –ntupl 命令检查开启的端口。

2、要经常检查高防服务器,确保高防服务器随时待命,且程序代码和主服务器同步,可在高防服务器用 /root/rsync/rsync-client.sh 命令手动同步,默认为每2小时一次自动同步。

3、检测攻击是否还存在,可以把正常的nginx配置文件换上,并重启nginx,观察SYN包和iptraf的流量,一切正常,则可在15分钟后把域名解析回主服务器,并继续观察;若有异常,则马上逆操作,替换应急nginx配置文件,域名解析到高防服务器。

4、对于技术部,要确保在被攻击时,理清思路,严格按步骤操作。

本文由www.hao535.com原创。

增加swap空间

有台服务器,最近nginx假死了几次,我以为是nginx问题,重启就ok了,随着过段时间又假死,负载很小,仔细一看,原来是swap满了,默认分配的交换空间不够。增大swap

dd if=/dev/zero of=swapzone bs=10240 count=409600    
dd if=/dev/zero of=swapzone bs=4096 count=1024000    
mkswap swapzone     
swapon swapzone

前两步是分配空间,耗时较长,需要耐心等待。