未解決問題:換成靜態路由的話,怎麼就 apt-get udpate 出現錯誤信息!php
解決辦法:麼有設置網關html
1、Ubuntu 系統下載地址:mysql
https://certification.ubuntu.com/certification/hardware/201412-16241/linux
二、uiso9_cn_9.6.6.3300.exe 下載nginx
三、ubuntu server12.04系統U盤安裝詳細教程git
https://wenku.baidu.com/view/64e4c33c2b160b4e777fcf28.htmlgithub
四、Ubuntu 14.04 Server開發者安裝指南web
五、網卡信息看查看(cat /proc/version Ubuntu 系統查看)sql
2、有多塊硬盤,安裝系統的時候先安裝一個硬盤(例如:有一個固態硬盤和我普通硬盤,這時候先把普通硬盤卸載下來,只安裝一個固態硬盤就能夠)
開機、選擇F10 (Dell 服務器自帶的一個控制系統),爲了建立一個RAID 0 以下所示:
建立好後,直接退出,從新啓動便可。
3、上一步結束以後,選擇F11,安裝系統就能夠了(USB安裝)
具體安裝步驟:
(14.04)安裝英文版參考:http://www.win789.com/linux/2016/37
(16.04)安裝中文版參考:http://www.win789.com/linux/2016/37
4、系統安裝好後,查看硬盤信息,沒有普通硬盤,個人錯,是我忘記沒有插入普通硬盤。
關機(poweroff),插入普通硬盤(1T),重啓開機,發現仍是沒有加載過來,爲何?
解決辦法:
服務器開機,系統自檢,加載到PERC卡自檢界面的時候,按<CTRL+R>進入PERC BIOS管理界面
沒有啊!
若是下面的State 不爲Ready 和Online ,而是foreign 狀態時候
移動到首頁最上面 摁F2 選擇foreign config 以後選擇clear既能夠
使用上下、鍵 選中:Create New VD
使用上下鍵選中這個硬盤,直接Ok就能夠了
繼續OK
這時候咱們發現有了,分別爲Group :0 Group :1(這個是剛纔新建立的)
繼續選擇這個ID:爲 1T的普通硬盤按住 F2鍵便可,
回車鍵,選擇fast Init 直接OK就能夠
繼續 OK
建立完畢,
5、重啓系統,查看硬盤信息,已是有了的
查看磁盤具體信息
下面使用LVM硬盤管理及LVM擴容:
詳情參考:http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html
具體用到的命令:
1 sudo poweroff 2 ls /dev/sd*
3 sudo poweroff 4 ls /dev/sd*
5 df -lh 6 sudo fdisk /dev/sdb 7 sudo apt-get install lvm2 8 sudo fdisk -l 9 sudo fdisk /dev/sdb 10 sudo fdisk -l 11 sudo partprobe 12 sudo fdisk -l 13 sudo pvcreate /dev/sdb 14 sudo pvcreate /dev/sdb1 15 pvdisplay 16 sudo pvdisplay 17 sudo vgdisplay 18 sudo vgcreate VolGroup00 /dev/sdb1 19 sudo vgdisplay 20 sudo lvcreate -L 1.09T -n lvData VolGroup00 21 sudo mkfs -t ext3 /dev/VolGroup00/lvData 22 sudo mount /dev/VolGroup00/lvData /mnt 23 df -lh 24 cd /mnt 25 ks 26 ls 27 history >~/lvmoperation.txt
建立和管理LVM
一、 建立分區
使用分區工具(如:fdisk等)建立LVM分區,方法和建立其餘通常分區的方式是同樣的,區別僅僅是LVM的分區類型爲8e。以下列圖所示:
Disk /dev/sdb doesn't contain a valid partition table(磁盤/ dev / sdb不包含有效的分區表)
查看磁盤分區表
使用fdisk建立分區,根據設備文件的絕對路徑(/dev/sdb)進入分區管理
6、網絡、網卡配置
0、阿里雲配置
auto eth1 (外網) iface eth1 inet static address 121.40.58.62 netmask 255.255.252.0 up route add -net 0.0.0.0 netmask 0.0.0.0 gw 121.40.59.247 dev eth1 auto eth0 (內網) iface eth0 inet static address 10.251.249.160 netmask 255.255.248.0 up route add -net 172.16.0.0 netmask 255.240.0.0 gw 10.251.255.247 dev eth0 up route add -net 100.64.0.0 netmask 255.192.0.0 gw 10.251.255.247 dev eth0 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.251.255.247 dev eth0
一、網絡配置,參照這個博客
1,首先運行ifconfig命令,發現網卡沒有啓動,只有本地環回。 2,查看服務器網卡:ifconfig -a 發現有四個網卡分別是:em1, eth1, p1p1, p1p2 3,加載網卡:ifconfig em1 up 4,配置ip,掩碼,網管。有兩種選擇,一種是配置文件,另外一種是命令行 ***1,配置文件方式: 編輯文件:/etc/network/interfaces 添加下面內容: auto em1 iface em1 inet static address 127.127.127.127 #示例ip netmask 255.255.255.0 gateway 127.127.127.254 讓後從新啓動網卡: /etc/init.d/networking restart ifconfig em1 down ifconfig em1 up ifconfig #查看 service networking restart #不用sudo 若是不行,就用命令行 ***2,命令行方式 ifconfig em1 127.127.127.127 netmask 255.255.255.0 route add default gw 127.127.127.254 #添加網關 重啓網卡如上命令。 5,如今ping一下網關能通就好,而後設置DNS服務器,編輯文件: /etc/resolv.conf 添加以下: nameserver 114.114.114.114 #這個能夠用 重啓網絡,這樣應該能夠聯網了。
Linux不能上網提示ping:unknown host 檢查步驟??
問題:ping: unknown host www.baidu.com
解決辦法:打開 sudo vim /etc/resolv.conf 添加一下內容
nameserver 114.114.114.114
重啓網卡服務:sudo service networking restart
在一般狀況下,咱們在ubuntu系統中能夠經過resolv.conf來設置DNS地址。但重啓後,resolv.conf中的地址仍然會返回爲原來的內容。
這是由於resolv.conf文件實際上是一個Link文件,如圖:
在Ubuntu中有一個 resolvconf 的服務,這個服務用來控制/etc/resolv.conf的內容。因此一旦咱們重啓了系統或者該服務,那麼/etc/resolv.conf文件中的內容將被還原爲原來的內容。因此直接修改/etc/resolv.conf並不能解決這個問題。
解決辦法:
(1)在網卡的配置文件中定義DNS地址:
iface eth0 inet static address 192.168.0.10 netmask 255.255.255.0 gateway 192.168.0.1 dns-nameserver 8.8.8.8 8.8.4.4
(2)修改resolvconf服務的配置文件:
vim /etc/resolvconf/resolv.conf.d/base 在其中添加或修改: nameserver 8.8.8.8 8.8.4.4
最後:dig 看看是否設置成功
二、這裏須要兩個網卡,分別爲:
em1(主網卡(外網+內網)):192.168.18.149
em2(內網網卡):10.10.10.100
說明:
em1 是鏈接的公網網線(固然了,能夠是交換機分配過來的地址,可是必須是公網能夠訪問的):網段爲:192.168.18.1 的局域網(這個之後會映射成公網IP地址)
em2 鏈接的是一個內網網線(一個局域網的路由器分配的ip地址),咱們能夠看到em2 爲網段爲:10.10.10.1 網段的局域網
這兩個網卡都要配置成靜態網卡
知識點:
【1】在虛擬機測試的時候就一個網口。
【2】忽略了服務器有四個網口,插得是em2網口,本身配置的是em1網口,致使怎麼也ping不一樣局域網(em1 對應服務器 1號網口,em2 對應服務器 2號網口;em3 對應服務器 3號網口;em4 對應服務器 4號網口)
【3】重啓網絡:$ sudo /etc/init.d/networking restart 或 sudo ifdown eth0(em1)&& sudo ifup eth0(em1)
以上配置成功後,咱們用一臺筆記本電腦連接路由器(網段爲:10.10.10.1 的局域網 ),咱們能夠看到這時候筆記本電腦的IP地址爲:10.10.10.101 (注意區分:上面服務器的IP:10.10.10.100)
如今使用OBS推流到:10.10.10.100 服務器上去,
一、按照下面的步驟便可完成推流和播流效果(注意:如下都是在10.10.10.1網段網完成的)
查看本機(筆記本電腦IP):
本機訪問直播服務器地址:10.10.10.100
OBS推流地址信息:
VLC播放結果:
播放地址:
播放結果:
二、192.168.18.1 網段的播流效果(注意:如下都是在192.168.18.1網段(至關於外網))
播放地址:
播放效果:
7、靜態網卡配置
默認的DHCP 網卡配置信息
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto em1 iface em1 inet dhcp auto em2 iface em2 inet dhcp
如今咱們修改成靜態網卡信息(暫時沒有配置路由信息) interfaces 爲新建的網卡配置信息:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto em1 iface em1 inet static address 192.168.18.125 netmask 255.255.255.0 auto em2 iface em2 inet static address 10.10.10.125 netmask 255.255.255.0
這個文件是默認(沒修改以前的配置):interfaces-bak
配置完成後,重啓網卡使設定生效:sudo /etc/init.d/networking restart
關閉網卡:(sudo) ifdown eth0 (注意:這裏可能會稍微慢點,耐心等待)
開啓網卡: (sudo) ifup eth0
重啓網卡,優勢是能夠指定網卡,不影響其餘網絡接口
如今咱們從新查看網卡地址和IP地址信息
知識點:
【1】查看Ubuntu網卡命令:ifconfig -a
【2】在虛擬機上會顯示出:eth0 和 lo lo是本地回傳
【3】在服務器上會顯示出:em一、em二、em三、em四、lo 一共是4個網卡(1234分別對應4個以太網口)
【4】在服務器上 ifconfig 會只顯示lo ,這說明其餘四塊網卡沒有被加載,
【5】執行命令:ifconfig em1 up 加載網卡
【6】ifconfig em1 down 卸載網卡 加載網卡後,
【7】執行ifconfig 就會看到em1網卡被加載進來了,而後進行配置網卡。
加載剩餘的2個網卡:
sudo ifconfig em3 up
sudo ifconfig em4 up
區別:
【0】/etc/init.d/network restart # 重啓網卡服務
【1】ifconfig :設定網絡參數使用的指令
up 啓動指定網卡。啓動 (up) 或關閉 (down) 該網絡接口(不涉及任何參數)
down 關閉指定網卡。
【2】ifup、ifdown:激活與關閉某個網絡適配卡
ifup {interface}
ifdown {interface}
這2個程序主要是搜尋/etc/sysconfig/network-scripts目錄下的配置文件 (ifcfg-ethx) 來進行啓動與關閉的,
ifconfig eth0 up 或者是 ifconfig eth0 down 可使用 ifup eth0 或 ifdown eth0 來替代!,可是 ifup 與 ifdown 是以 /etc/sysconfig/network-scripts/ifcfg-eth[n ](這裏的n取0,1,2……)的檔案來進行激活的!因此 ifcfg-eth0 必須存在才能使用 ifup/ifdown eth0 也就是說ifup和ifdown必需要有相關的檔案存在才能激活呦!
舉個例子來講,上面咱們要激活 eth0 這塊網絡卡的時候,那麼你的 Linux 系統當中就必需要存在 /etc/sysconfig/network-scripts/ifcfg-eth0 這個網絡適配卡的設定檔案才行!同理可證!若是要激活 eth1 ,除了存在 eth1 這個實體網絡卡以外,還要存在 ifcfg-eth1 才行! 而ifconfig eth0 up/down則不須要這兩個檔案存在。
這也就是ifconfig eth0 up/down與ifup/ifdown eth0的區別!
能夠看出,全部的配置信息有已經生效了,如今咱們在另一臺臺式電腦(192.168.168.1 網段)經過ssh登陸,看看是否能夠遠程登陸
Ok,已經登陸成功了,下一步OBS進行推流,測試公網和內網時候能夠同時播放直播,如下爲推流PC級
紅色指示爲:123456
推流成功,使用VLC去播放測試
OK@!測試Success
下一步,換成 網段爲:10.10.10.1的PC機播放測試
VLC播放結果:
RTMP在線人數配置:
複製該文件到 Nginx 的html目錄下
修改Nginx配置文件:
root html; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl {} location /control { rtmp_control all; }
瀏覽器查看該直播流狀態:http://192.168.18.143/stat
待續.....
附帶:阿里雲多網卡配置信息:
查看網卡信息:121.40.58.38 (外網)、10.251.249.111(內網)
root@iZ236j3sofdZ:/usr/local/nginx/conf# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:16:3e:00:5e:0d inet addr:10.251.249.111 Bcast:10.251.255.255 Mask:255.255.248.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4671800 errors:0 dropped:0 overruns:0 frame:0 TX packets:1085948 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6192981968 (6.1 GB) TX bytes:950040800 (950.0 MB) eth1 Link encap:Ethernet HWaddr 00:16:3e:00:0f:12 inet addr:121.40.58.38 Bcast:121.40.59.255 Mask:255.255.252.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3434498 errors:0 dropped:0 overruns:0 frame:0 TX packets:2298996 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2301506180 (2.3 GB) TX bytes:8048436565 (8.0 GB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:4308 errors:0 dropped:0 overruns:0 frame:0 TX packets:4308 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:351121 (351.1 KB) TX bytes:351121 (351.1 KB)
網絡配置信息
vim /etc/network/interfaces
auto lo iface lo inet loopback auto eth1 iface eth1 inet static address 121.40.58.38 netmask 255.255.252.0 up route add -net 0.0.0.0 netmask 0.0.0.0 gw 121.40.59.247 dev eth1 auto eth0 iface eth0 inet static address 10.251.249.111 netmask 255.255.248.0 up route add -net 172.16.0.0 netmask 255.240.0.0 gw 10.251.255.247 dev eth0 up route add -net 100.64.0.0 netmask 255.192.0.0 gw 10.251.255.247 dev eth0 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.251.255.247 dev eth0
vim /etc/resolv.conf
options timeout:1 attempts:1 rotate nameserver 10.143.22.116 nameserver 10.143.22.118
快速安裝:https://www.vultr.com/docs/setup-nginx-rtmp-on-ubuntu-14-04
http://nginx.org/download/nginx-1.10.3.tar.gz
Rtmp 模塊
https://github.com/arut/nginx-rtmp-module/archive/v1.1.11.tar.gz
配置環境
apt-get install libreadline-dev libncurses5-dev libpcre3-dev \ libssl-dev perl make build-essential curl
檢查配置文件
./configure --with-debug --with-stream --with-http_ssl_module --with-http_stub_status_module --add-module=../nginx-rtmp-module-1.1.11/
https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Redis/redis-install.md
依賴軟件安裝
sudo apt-get install php5-fpm sudo apt-get install php5-gd # Popular image manipulation library; used extensively by Wordpress and it's plugins.
sudo apt-get install php5-cli # Makes the php5 command available to the terminal for php5 scripting sudo apt-get install php5-curl # Allows curl (file downloading tool) to be called from PHP5 sudo apt-get install php5-mcrypt # Provides encryption algorithms to PHP scripts sudo apt-get install php5-mysql # Allows PHP5 scripts to talk to a MySQL Database sudo apt-get install php5-readline # Allows PHP5 scripts to use the readline function
查看php5-fpm運行進程:
www@ubuntu1:~/ssconsole$ ps -aux | grep php5 root 5189 0.2 0.1 333992 16520 ? Ss 09:08 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf) www 5240 0.0 0.0 11756 900 pts/1 S+ 09:08 0:00 grep --color=auto php5
php-fpm.conf配置文件路徑:/etc/php5/fpm/php-fpm.conf
開啓、關閉php5-fpm 服務
sudo service php5-fpm stop
sudo service php5-fpm start
sudo service php5-fpm restart
sudo service php5-fpm status
提示錯誤信息
2017/03/23 20:07:53 [crit] 18683#0: *1 connect() to unix:/var/run/php7.0.9-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php7.0.9-fpm.sock:", host: "127.0.0.1"
解決辦法,修改:www.conf
sudo vi /etc/php5/fpm/pool.d/www.conf
修改前:
user = www-data group = www-data listen.owner = www-data listen.group = www-data ;listen.mode = 0660
修改後:
user = www group = www listen.owner = www listen.group = www listen.mode = 0660
從新啓動Nginx和php5-fpm
sudo service nginx restart sudo service php5-fpm restart
Nginx 提示錯誤信息:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
解決辦法,執行如下代碼,重啓便可
sudo fuser -k 80/tcp
瀏覽器訪問:http://192.168.18.150/index.php ,出現一下界面表示安裝完畢
sudo apt-get install php5-redis
重啓php5-fpm 是否安裝成功:
www@ubuntu1:/etc/php5/fpm/pool.d$ php --ri redis redis Redis Support => enabled Redis Version => 2.2.4
安裝後的擴展文件目錄:/etc/php5/fpm/conf.d/20-redis.ini
咱們能夠看到,php5 安裝的擴展文件都在這裏(和PHP7的不大同樣)
5、Phalcon擴展安裝
1、命令行安裝
一、存儲庫安裝
curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash
二、要安裝Phalcon
sudo apt-get update sudo apt-get install php5-phalcon
三、更多信息:https://docs.phalconphp.com/en/3.2/installation
2、編譯安裝
www@ubuntu1:/etc/php5/fpm/pool.d$ sudo apt-get install php5-phalcon Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package php5-phalcon
看來不行啊!安裝一下依賴,直接進行編譯安裝
sudo apt-get install re2c libpcre3-dev
安裝:zephir
https://github.com/phalcon/zephir.git
$ cd zephir $ ./install-json $ ./install -c
www@ubuntu1:~/zephir$ zephir _____ __ _ /__ / ___ ____ / /_ (_)____ / / / _ \/ __ \/ __ \/ / ___/
/ /__/ __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
/_/ Zephir version 0.9.6a-dev-5628cc90de
編譯phalcon 框架
phpize 找不到
www@ubuntu1:/usr/local/cphalcon$ phpize No command 'phpize' found, did you mean: Command 'phpize5' from package 'php5-dev' (main) phpize: command not found
安裝一個:sudo apt-get install php5-dev
切換目錄到:/usr/local/cphalcon/build/php5/64bits ,執行phpize 生成配置文件
開始編譯:
www@ubuntu1:/usr/local/cphalcon$ sudo zephir build —backend=ZendEngine3
這裏比較慢點,稍等....
編譯完成後:查找剛纔編譯的 phalcon.so 文件,使用如下方式
www@ubuntu1:/usr/lib/php5/20121212$ sudo find / -name phalcon.so /usr/lib/php5/20121212/phalcon.so /usr/local/cphalcon/ext/.libs/phalcon.so /usr/local/cphalcon/ext/modules/phalcon.so
!!!切記不能夠把這個擴展文件添加在php.ini (若是是php7的話,直接是能夠的),php5是不能夠的
新建一個phalcon.ini 的配置文件
sudo vim /etc/php5/fpm/conf.d/phalcon.ini
內容以下:
www@ubuntu1:/usr/lib/php5/20121212$ cat /etc/php5/fpm/conf.d/phalcon.ini extension=phalcon.so
重啓php5-fpm 安裝成功了
其實全部的擴展文件都在這裏
6、Mysql
http://www.cnblogs.com/tinywan/p/6641780.html
一、OpenResty編譯或運行時所須要的軟件包
apt-get install libreadline-dev libncurses5-dev libpcre3-dev \ libssl-dev perl make build-essential
二、下載、解壓、切換到工做目錄
wget https://openresty.org/download/openresty-1.11.2.1.tar.gz
tar -xvf openresty-1.11.2.1.tar.gz cd openresty-1.11.2.1
三、檢測配置文件信息
./configure \ --prefix=/opt/openresty \ --with-debug \ --with-lua51 \ --with-luajit \ --without-http_redis2_module \ --with-http_iconv_module \ --with-stream \ --with-http_stub_status_module \ --with-http_xslt_module \ --with-stream_ssl_module \ --with-http_realip_module \ --with-http_ssl_module \ --add-module=../stream-lua-nginx-module\ --add-module=../nginx-rtmp-module-1.1.11/
提示錯誤:./configure: error: the HTTP XSLT module requires the libxml2/libxslt
解決辦法
sudo apt-get install libxml2 libxml2-dev libxslt-dev sudo apt-get install libgd2-xpm libgd2-xpm-dev
--with-debug 調試RTMP :error_log logs/error.log debug;
四、在上一步中,最後沒有什麼 error 的提示就是最好的。如有錯誤,最後會顯示 具體緣由能夠看源碼包目錄下的 build/nginx-VERSION/objs/autoconf.err文件查看。若沒有錯誤,則會出現以下信息:
五、編譯:根據上一步命令提示,輸入gmake
六、安裝:輸入gmake install
七、安裝完畢
Nginx.conf 配置文件:
自動切片腳本autoRecordedHls.sh:
#!/bin/bash :<<tinywan [1]author:Tinywan [2]log_format: [0] 語法格式:echo -e "\033[31m $msg \033[0m" >>log_file.log [1] error===>紅色(31m):錯誤日誌信息 [2] info===>綠色(32m):命令成功執行、URL回調成功、打印正確數據信息 [3] warn===>黃色(33m):參數不存在、文件不存在、命令拼寫錯誤 [3] debug===>Blue色(34m): debug [3]date:2016-11-04 10:23:10 [date '+%Y-%m-%d %H:%M:%S'] tinywan PATH=/usr/local/bin:/usr/bin:/bin YM=`date +%Y%m` FLOG=/home/tinywan/bin/recorded_${YM}.log #設置日誌級別 loglevel=0 #debug:0; info:1; warn:2; error:3 TIME=`date '+%Y-%m-%d %H:%M:%S'` function LOG(){ local log_type=$1 local LOG_CONTENT=$2 logformat="${TIME} \t[${log_type}]\tFunction: ${FUNCNAME[@]}\t[line:`caller 0 | awk '{print$1}'`]\t [log_info: ${LOG_CONTENT}]" { case $log_type in debug) [[ $loglevel -le 0 ]] && echo -e "\033[34m${logformat}\033[0m" ;; info) [[ $loglevel -le 1 ]] && echo -e "\033[32m${logformat}\033[0m" ;; warn) [[ $loglevel -le 2 ]] && echo -e "\033[33m${logformat}\033[0m" ;; error) [[ $loglevel -le 3 ]] && echo -e "\033[31m${logformat}\033[0m" ;; esac } | tee -a $FLOG } echo -e "\r\n \033[34m------------------------------------------------------Shell Script Start -------------------------------------------- \033[0m " >> $FLOG MIN_DURATION=20 REDIS_HOST='127.0.0.1' REDIS_PORT='6379' REDIS_AUTH='tinywanredis' REDIS_DB=12 STREAM_NAME=$1 FULL_NAME=$2 FILE_NAME=$3 BASE_NAME=$4 DIR_NAME=$5if [ -z "${STREAM_NAME}" ];then LOG error "STREAM_NAME is null" exit 1 fi #echo -e "\033[32m [SUCCESS][$TIME]: $@ \033[0m" >>$FLOG LOG debug $@ if [ -z "${FULL_NAME}" ]; then LOG error "FULL_NAME is null" exit 1 fi if [ ! -s "${FULL_NAME}" ]; then LOG error "File not exists or zero size " rm -f ${FULL_NAME} exit 1 fi DURATION=`ffmpeg -i ${FULL_NAME} 2>&1 | awk '/Duration/ {split($2,a,":");print a[1]*3600+a[2]*60+a[3]}'` if [ $(echo "$duration < $MIN_DURATION"|bc) = 1 ]; then LOG error" Duration too short, FULL_NAME=${FULL_NAME}, DURATION==${DURATION}" rm -f ${FULL_NAME} exit 1 fi #echo "[DEBUG1][$TIME] Video Record : FULL_NAME=$FULL_NAME, FULL_NAME=${FULL_NAME}, DURATION=${DURATION}" >> $FLOG /usr/bin/ffmpeg -y -ss 00:00:10 -i ${FULL_NAME} -vframes 1 ${DIR_NAME}/${BASE_NAME}.jpg /usr/bin/ffmpeg -y -i ${FULL_NAME} -vcodec copy -acodec copy ${DIR_NAME}/${BASE_NAME}.mp4 FILE_SIZE=`stat -c "%s" ${DIR_NAME}/${BASE_NAME}.mp4` FILE_TIME=`stat -c "%Y" ${FULL_NAME}` LOG debug "Video: FILE_NAME=${FILE_NAME}, DURATION=${DURATION}, FILESIZE=${FILE_SIZE},FILETIME=${FILE_TIME}" URL="http://127.0.0.1/recordDone?streamName=${STREAM_NAME}&baseName=${BASE_NAME}&duration=${DURATION}&fileSize=${FILE_SIZE}&fileTime=${FILE_TIME}" RESULT=$(curl ${URL} 2>/dev/null) if [ "${RESULT}" != "200" ]; then LOG error "recorded rallBakc Error ${STREAM_NAME}"
else LOG info "recorded rallBakc OK ${STREAM_NAME}" fi mkdir -p ${DIR_NAME}/${BASE_NAME} /usr/bin/ffmpeg -i ${FULL_NAME} -flags +global_header -f segment -segment_time 3 -segment_format mpegts -segment_list ${DIR_NAME}/${BASE_NAME}/index.m3u8 -c:a copy -c:v copy -bsf:v h264_mp4toannexb -map 0 ${DIR_NAME}/${BASE_NAME}/%5d.ts LOG info "slice OK" cd ${DIR_NAME} find ./ -mindepth 1 -maxdepth 3 -type f -name "*.flv" -mmin +10080 | xargs rm -rf #LOG warn "${TIME}" exit 1
詳細部署請見個人另一篇博客: http://www.cnblogs.com/tinywan/p/6639360.html
參考個人Github:https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Redis/redis-install.md
Ubuntu Server 16.04.1安裝配置圖解教程:http://www.win789.com/linux/2016/37039.html
Ubuntu 16.04 Server Edition 英文版安裝教程:http://www.jb51.net/os/491038.html