云服务器EC2配置Swap分区解决Cannot Allocate Memory

 centos  云服务器EC2配置Swap分区解决Cannot Allocate Memory已关闭评论
9月 192019
 

今天在EC2(Centos 7)上使用nvm 安装node时出现下面错误提示:

# nvm install 8.16.1
Downloading and installing node v8.16.1…
Downloading https://nodejs.org/dist/v8.16.1/node-v8.16.1-linux-x64.tar.xz…
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
xz: (stdin): Cannot allocate memory
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Binary download failed, trying source.
Downloading https://nodejs.org/dist/v8.16.1/node-v8.16.1.tar.xz…
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
xz: (stdin): Cannot allocate memory
tar: Child returned status 1
tar: Error is not recoverable: exiting now
nvm: install v8.16.1 failed!

这台EC2内存只有1G,看来需要配个交换分区。

 

步骤

# 创建一个全0填充的2GB文件。InputFile利用Linux系统的/dev/zero。bs是BlockSize。

sudo dd if=/dev/zero of=/mnt/2GB.swap bs=1M count=2048

 

# 把该文件格式化为Swap文件

sudo mkswap /mnt/2GB.swap

 

# 把该Swap文件挂载为Swap分区

sudo swapon /mnt/2GB.swap

 

# 检查是否成功挂载。Swap那一行现在就不是0了。

$ free -m

total        used        free      shared  buff/cache   available

Mem:            963         677          74          78         211          52

Swap:          2047          84        1963

# 配置fstab,使开机时自动挂载Swap文件为Swap分区

sudo vim /etc/fstab

 

# 在/ect/fstab中添加

/mnt/2GB.swap none swap sw 0 0

 

CentOS系统中常用查看系统信息和日志命令

 centos  CentOS系统中常用查看系统信息和日志命令已关闭评论
9月 042019
 

一、系统日志文件(可以通过cat或tail命令来查看)

/var/log/message # 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一

/var/log/secure # 与安全相关的日志信息

/var/log/maillog # 与邮件相关的日志信息

/var/log/cron # 与定时任务相关的日志信息

/var/log/spooler # 与UUCP和news设备相关的日志信息

/var/log/boot.log # 守护进程启动和停止相关的日志消息

二、系统信息

uname -a # 查看内核/操作系统/CPU信息

cat /etc/issue

cat /etc/redhat-release # 查看操作系统版本

cat /proc/cpuinfo  # 查看CPU信息

hostname # 查看计算机名

lspci -tv # 列出所有PCI设备

lsusb -tv # 列出所有USB设备

lsmod # 列出加载的内核模块

env # 查看环境变量

三、资源

free -m # 查看内存使用量和交换区使用量

df -h # 查看各分区使用情况

du -sh <目录名> # 查看指定目录的大小

grep MemTotal /proc/meminfo # 查看内存总量

grep MemFree /proc/meminfo # 查看空闲内存量

uptime # 查看系统运行时间、用户数、负载

cat /proc/loadavg # 查看系统负载

 

四、磁盘和分区

mount | column -t # 查看挂接的分区状态

fdisk -l # 查看所有分区

swapon -s # 查看所有交换分区

hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)

dmesg | grep IDE # 查看启动时IDE设备检测状况

五、网络

ifconfig # 查看所有网络接口的属性

iptables -L # 查看防火墙设置

route -n # 查看路由表

netstat -lntp # 查看所有监听端口

netstat -antp # 查看所有已经建立的连接

netstat -s # 查看网络统计信息

六、进程

ps -ef # 查看所有进程

top # 实时显示进程状态(另一篇文章里面有详细的介绍)

七、用户 

w # 查看活动用户

id <用户名> # 查看指定用户信息

last # 查看用户登录日志

cut -d: -f1 /etc/passwd # 查看系统所有用户

cut -d: -f1 /etc/group # 查看系统所有组

crontab -l # 查看当前用户的计划任务

八、服务

chkconfig –list # 列出所有系统服务

chkconfig –list | grep on # 列出所有启动的系统服务

九、程序

rpm -qa # 查看所有安装的软件包

 

来自:https://blog.csdn.net/twc829/article/details/75284332

CentOS 7 下安装 MySQL 5.7

 centos, mysql  CentOS 7 下安装 MySQL 5.7已关闭评论
8月 212019
 

原文链接:https://blog.csdn.net/u011886447/article/details/79796802

从 CentOS 7 系统开始,MariaDB 成为 yum 源中默认的数据库安装包。在 CentOS 7 及以上的系统中使用 yum 安装 MySQL 包将无法使用 MySQL。您可以选择使用完全兼容的 MariaDB,或依照本文介绍配置来继续使用 MySQL。本文以在 CentOS 7 下安装 MySQL 5.7.21 为例。

 

  1. 检查 MariaDB 是否安装

yum list installed | grep mariadb

 

 

 

  1. 卸载全部MariaDB 相关

yum -y remove mariadb*

 

  1. 下载 MySQL 的 YUM 源

进入到要下载到的路径:cd /usr/local/src

 

下载:wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

 

  1. 安装MySQL 的 YUM 源

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

 

  1. 检查MySQL 的 YUM 源是否安装成功

yum repolist enabled | grep “mysql.*-community.*”

 

 

 

如图所示则安装成功。

 

  1. 查看 MySQL 版本

yum repolist all | grep mysql

 

 

 

  1. 安装 MySQL

yum install mysql-community-server

 

一直输 y 就可以了。

 

  1. 启动 MySQL 服务

systemctl start mysqld

 

  1. 测试连接 MySQL 服务

mysql -u root 或者 mysql

 

——————————————————————————–

 

提示:

 

刚安装的 MySQL 是没有密码的,这时如果出现:

 

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO),解决如下:

 

① 停止 MySQL 服务:systemctl stop mysqld

 

② 以不检查权限的方式启动 MySQL: mysqld –user=root –skip-grant-tables &

 

③ 再次输入 mysql -u root 或者 mysql,这次就可以进来了。

 

④ 更新密码:

 

MySQL 5.7 以下版本:UPDATE mysql.user SET Password=PASSWORD(‘123456′) where USER=’root’;

 

MySQL 5.7 版本:UPDATE mysql.user SET authentication_string=PASSWORD(‘123456′) where USER=’root’;

 

⑤ 刷新:flush privileges;

 

⑥ 退出:exit;

 

设置完之后,输入 mysql -u root -p,这时输入刚设置的密码,就可以登进数据库了。

 

——————————————————————————–

 

  1. 防火墙设置

远程访问 MySQL,需要开放 3306 端口:

 

firewall-cmd –permanent –zone=public –add-port=3306/tcp

 

firewall-cmd –permanent –zone=public –add-port=3306/udp

 

firewall-cmd –reload

 

如果是 CentOS 7,需要将 MySQL 服务加入防火墙,然后重启防火墙:

 

firewall-cmd –zone=public –permanent –add-service=mysql

 

systemctl restart firewalld

 

——————————————————————————–

 

提示:

 

在输入 firewall-cmd –permanent –zone=public –add-port=3306/tcp 时可能会报 ‘FirewallD is not running’,是说防火墙本身就没有打开,解决方法:

 

① 查看防火墙状态:systemctl status firewalld,会发现状态是 dead,即防火墙未开启。

 

② 打开防火墙:systemctl start firewalld

 

③ 再次查看防火墙状态:systemctl status firewalld,这时会发现状态变为 running,即防火墙开启成功。

 

 

 

 

 

 

这时再输入开放 3306 端口的命令就没有问题了。

 

——————————————————————————–

 

  1. 设置允许远程访问

默认情况下 MySQL 是不允许远程连接的,所以在 Java 项目或者 MySQLWorkbench 等数据库连接工具连接服务器上的 MySQL 服务的时候会报 “Host ‘x.x.x.x’ is not allowed to connect to this MySQL server”。可以通过下面的设置解决。详细可以参考之前写的一篇文章 XXX is not allowed to connect to this MySQL server。

 

① grant all privileges on *.* to root@”%” identified by ‘0’;

 

② flush privileges;

 

——————————————————————————–

 

提示:

 

在执行第一条命令的时候,可能会报:

 

‘ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.’ 需要让我们重置密码。原因是因为我刚刚的命令中设置的数据库密码是0,这个密码过于简单,不符合 MySQL 的安全要求。只要重新设置一个复杂点的密码就可以了:

 

mysql> SET PASSWORD = PASSWORD(‘xxx’);   //xxx 是重置的新的复杂的密码

 

——————————————————————————–

 

思考:

 

之前设置简单密码是没有问题的,可能原因:

 

① 可能目前环境是 CentOS 7 + MySQL 5.7.21,安全性有所提升。

 

② 也有可能是之前的数据库设置过

 

mysql> set global validate_password_policy=0;

 

mysql> set global validate_password_length=1;

 

允许设置简单密码。

 

  1. 相关命令

MySQL 相关:

 

systemctl start mysqld    #启动mysql

 

systemctl stop mysqld    #停止mysqld

 

systemctl restart mysqld    #重启mysqld

 

systemctl enable mysqld    #设置开机启动

 

systemctl status mysqld    #查看 MySQL Server 状态

 

防火墙相关:

 

systemctl status firewalld    #查看防火墙状态

 

systemctl start firewalld    #打开防火墙

 

systemctl stop firewalld    #关闭防火墙

 

systemctl restart firewalld    #重启防火墙

 

 

CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

 centos, 视频  CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)已关闭评论
12月 222015
 

记录下,以备不时之需。

转自:http://hdu104.com/294 

1.先添加几个RPM下载源

     1.1)安装RPMforge的CentOS6源
     [root@AY130611215205Z ~]# wget -c http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
     [root@AY130611215205Z ~]# rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
     [root@AY130611215205Z ~]# rpm -i rpmforge-release-0.5.3-1.el6.rf.*.rpm    

     1.2)安装epel源
     [root@AY130611215205Z ~]# wget -c http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
     [root@AY130611215205Z ~]# rpm -Uvf epel-release-6-8.noarch.rpm

     安装完成,查看一下源列表,看到rpmforge和epel字样即可
     [root@AY130611215205Z ~]# ls -lh /etc/yum.repos.d

2.安装转码工具Mencoder及ffmpeg(约定:每个小点操作之前先回到用户主目录,即cd ~)

     2.1)安装一些基础包,不用担心重复,已经存在的会自动忽略或升级
     [root@AY130611215205Z ~]# yum install gcc make automake bzip2 unzip patch subversion libjpeg-devel
     [root@AY130611215205Z ~]# wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
     [root@AY130611215205Z ~]# tar zxvf yasm-1.2.0.tar.gz
     [root@AY130611215205Z ~]# cd yasm-1.2.0
     [root@AY130611215205Z yasm-1.2.0]# ./configure
     [root@AY130611215205Z yasm-1.2.0]# make && make install
     [root@AY130611215205Z yasm-1.2.0]# cd ~
     
     2.2)卸载系统原有的ffmgeg和x.264,没有则跳过
     [root@AY130611215205Z ~]# yum remove ffmpeg x264

     2.3)先安装一些Mplayer编码库(仅限于64位系统)
     [root@AY130611215205Z ~]# wget -c http://www2.mplayerhq.hu/MPlayer/releases/codecs/essential-amd64-20071007.tar.bz2
     上面这一步可能在部分VPS上无法下载,比如我的阿里云VPS就提示连接失败,但是可以用本机浏览器下载后上传到VPS的/root根目录去,然后继续下面的操作
     [root@AY130611215205Z ~]# tar xvjf essential-amd64-20071007.tar.bz2
     [root@AY130611215205Z ~]# mkdir /usr/local/lib/codecs
     [root@AY130611215205Z ~]# cp -Rvp essential-amd64-20071007/* /usr/local/lib/codecs/

     编辑下面文件
     [root@AY130611215205Z ~]# vim /etc/ld.so.conf
     添加以下两行到上面的文件里
     /usr/lib 
     /usr/local/lib
     
     2.4)再安装一些格式转换常用的编码库
     [root@AY130611215205Z ~]# yum install faac-devel  lame-devel amrnb-devel opencore-amr-devel amrwb-devel  libvorbis-devel libtheora-devel xvidcore-devel
     
     2.5)安装x.264
     [root@AY130611215205Z ~]# wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2
     [root@AY130611215205Z ~]# tar xvjf last_stable_x264.tar.bz2
     [root@AY130611215205Z ~]# cd x264-snapshot-20140219-2245-stable/     (这可能日期有区别,自己ls一下)
     [root@AY130611215205Z x264-snapshot-20140219-2245-stable]# ./configure –enable-shared –enable-pic
     [root@AY130611215205Z x264-snapshot-20140219-2245-stable]# make && make install
     [root@AY130611215205Z x264-snapshot-20140219-2245-stable]#  cd ~

     2.6)安装libvpx
     [root@AY130611215205Z ~]# wget http://webm.googlecode.com/files/libvpx-v1.2.0.tar.bz2
     [root@AY130611215205Z ~]# tar xvjf libvpx-v1.2.0.tar.bz2
     [root@AY130611215205Z ~]# cd libvpx-v1.2.0
     [root@AY130611215205Z libvpx-v1.2.0]# ./configure –enable-shared –enable-pic
     [root@AY130611215205Z libvpx-v1.2.0]# make && make install
     [root@AY130611215205Z libvpx-v1.2.0]# cd ~

     2.7)安装FFmpeg
     [root@AY130611215205Z ~]# wget http://ffmpeg.org/releases/ffmpeg-2.0.1.tar.bz2
     [root@AY130611215205Z ~]# tar xvjf ffmpeg-2.0.1.tar.bz2
     [root@AY130611215205Z ~]# cd ffmpeg-2.0.1
     [root@AY130611215205Z ffmpeg-2.0.1]# ./configure –enable-gpl –enable-version3 –enable-shared –enable-nonfree –enable-postproc –enable-libfaac –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libvpx –enable-libx264 –enable-libxvid
     [root@AY130611215205Z ffmpeg-2.0.1]# make && make install
     [root@AY130611215205Z ffmpeg-2.0.1]# cd ~
     
     让动态链接库被系统共享
     [root@AY130611215205Z ~]# ldconfig

     2.8)最后安装mencoder
     [root@AY130611215205Z ~]# yum install mplayer mencoder flvtool2

     查看一下已经安装好的音频和视频编码器
     查看所有所支持的音频编码
     [root@AY130611215205Z ~]# mencoder -oac help
     查看所有所支持的视频编码
     [root@AY130611215205Z ~]# mencoder -ovc help
     具体结果可参考http://www.mplayerhq.hu/DOCS/HTML/zh_CN/menc-feat-selecting-codec.html

3.安装配置Nginx
     
     3.1)先安装各种依赖(nginx需要pcre支持,yamdi用来为flv创建关键帧才能随意拖动)
     [root@AY130611215205Z ffmpeg-2.0.1]# yum install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel yamdi
     
     3.2)下载所需的nginx模块
     第一个是nginx_mod_h264_streaming,让nginx支持flv/mp4流播放
     [root@AY130611215205Z ~]# wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
     [root@AY130611215205Z ~]# tar zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
     注意:先要修改一下这家伙的源码,注释掉nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c的158到161行
     /* TODO: Win32 */
     //if (r->zero_in_uri)
     // {
     //   return NGX_DECLINED;
     // }

     第二个是nginx-rtmp-module,让nginx支持rtmp/hls协议
     [root@AY130611215205Z ~]# wget -O nginx-rtmp-module.zip  https://github.com/arut/nginx-rtmp-module/archive/master.zip
     [root@AY130611215205Z ~]# unzip nginx-rtmp-module.zip
     下载清缓存的模块
     [root@AY130611215205Z ~]# wget -O ngx_cache_purge.ziphttps://github.com/FRiCKLE/ngx_cache_purge/archive/master.zip
     [root@AY130611215205Z ~]# unzip ngx_cache_purge.zip
     
     3.3)下载安装nginx
     [root@AY130611215205Z ~]# wget http://nginx.org/download/nginx-1.2.9.tar.gz
     [root@AY130611215205Z ~]# tar zxvf nginx-1.2.9.tar.gz
     [root@AY130611215205Z ~]# cd nginx-1.2.9
     [root@AY130611215205Z nginx-1.2.9]# ./configure –user=daemon –group=daemon –prefix=/usr/local/nginx/ –add-module=../nginx-rtmp-module-master –add-module=../ngx_cache_purge-master –add-module=../nginx_mod_h264_streaming-2.2.7 –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_gzip_static_module –with-http_flv_module
     [root@AY130611215205Z nginx-1.2.9]# make && make install
     PS:若提示make[1]: *** [objs/addon/src/ngx_http_h264_streaming_module.o] Error 1,请参考3.3.2小节的注意点,然后重新运行./configure这一段 
     
     /**———以下是安装了Tengine后重新编译的代码,模块的路径自己对一下———**//
./configure –user=www –group=www –prefix=/usr/local/tengine/ –add-module=../../../nginx-rtmp-module-master –add-module=../../../ngx_cache_purge-master –add-module=../../../nginx_mod_h264_streaming-2.2.7 –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_gzip_static_module –with-http_flv_module –with-http_concat_module=shared –with-http_sysguard_module=shared –with-google_perftools_module –with-http_image_filter_module
     
     运行一下nginx
     [root@AY130611215205Z ~]# /usr/local/nginx/sbin/nginx
     然后用浏览器你的服务器IP,看到welcome就对了
     或者到nginx的sbin目录下,运行一下nginx -V,看看列表出来的modules对不对

     3.4)各种配置nginx
     编辑/usr/local/nginx/conf/nginx.conf文件,最好用sftp软件(如windows下的flashfxp/Mac下的tramnsmit)下载过来本地编辑。
     贴一下我的配置文件:(目录需要自己改动,我用的是阿里云的数据盘,所以到/mnt/里面去了)
     ———————————————————————nginx配置文件—————————————————
    #filename:nginx.conf
    #user  nobody;
    worker_processes  1;

    error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;

    pid        logs/nginx.pid;

    events {
        use epoll;
        worker_connections  1024;
    }

    rtmp {
        server {
            listen 1935;
            chunk_size 4000;

            # video on demand
            application vod {
                play /mnt/media/vod;
            }

            # HLS
            # HLS requires libavformat & should be configured as a separate
            # NGINX module in addition to nginx-rtmp-module:
            # ./configure … –add-module=/path/to/nginx-rtmp-module/hls …
            # For HLS to work please create a directory in tmpfs (/tmp/app here)
            # for the fragments. The directory contents is served via HTTP (see
            # http{} section in config)
            #
            # Incoming stream must be in H264/AAC/MP3. For iPhones use baseline H264
            # profile (see ffmpeg example).
            # This example creates RTMP stream from movie ready for HLS:
            #
            # ffmpeg -loglevel verbose -re -i movie.avi  -vcodec libx264
            #    -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1
            #    -f flv rtmp://localhost:1935/hls/movie
            #
            # If you need to transcode live stream use ‘exec’ feature.
            #
            application hls {
                hls on;
                hls_path /mnt/media/app;
                hls_fragment 10s;
            }
        }
    }

    http {

        include mime.types;
        default_type application/octet-stream;
        sendfile on;
        keepalive_timeout 65;
        gzip on;
        
         #log format

        log_format  access  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
                 ‘$status $body_bytes_sent “$http_referer” ‘
                 ‘”$http_user_agent” $http_x_forwarded_for’;    
        
         #定义一个名为addr的limit_zone,大小10M内存来存储session
        limit_conn_zone $binary_remote_addr zone=addr:10m;     

        server {
            listen 8080;
             server_name localhost;

             # HTTP can be used for accessing RTMP stats
            # This URL provides RTMP statistics in XML
            location /stat {
                rtmp_stat all;
                rtmp_stat_stylesheet stat.xsl;
            }
            location /stat.xsl {
                root /mnt/soft/nginx-rtmp-module-master;
            }
             location /control {
                rtmp_control all;
            }
            location / {
                root /mnt/soft/nginx-rtmp-module-master/test/rtmp-publisher;
            }
        }
        
         server {
            listen 80;
             server_name localhost;
             
            location / {
                    root /mnt/wwwroot;
                    index index.html;
                  }         

             location ~ \.flv$ {
                   root /mnt/media/vod;
                 flv;
                 limit_conn addr 20;
                 limit_rate 200k;
            }
            location ~ \.mp4$ {
                 root /mnt/media/vod;
                 mp4;
                 limit_conn addr 20;
                 limit_rate 200k;
            }

             location /hls {
                # Serve HLS fragments
                alias /mnt/media/app;
            }

             access_log  logs/nginxflv_access.log access;
        }
        
           
    }
     ——————————————————nginx配置文件——————————————
     
4.把自己的电影转换成mp4和flv格式来测试nginx搭的环境

     4.1)准备两部电影,硬盘上随便找,我找了“谍影重重A.mp4”和“鹿鼎记033.rmvb”,尽量找小一点十来分钟的,等下我们还要看完测试一下转换的结果有没有音影不同步的情况。
     我把两部电影重命名为 movie1.mp4和 movie2.rmvb,并上传到服务器/mnt/media/video下面,这里目录用来存放我们的原始视频。还有一个目录是/mnt/media/vod 用来存放转换后的视频。
     我这里的具体目录结构为:
     /mnt/media/video -> 存放原始视频
     /mnt/media/app  -> 存放转成m3u8的视频,供http访问(HLS)
     /mnt/media/vod  -> 存放转换后的flv和mp4视频,供http或rtmp访问

     4.2)用ffmpeg转换mp4文件(ffmpeg不支持rmvb)
     [root@AY130611215205Z ~]# cd /mnt/media/video/
     [root@AY130611215205Z video]# ffmpeg -i movie1.mp4 -y -vcodec libx264 -vf scale=”640:-1″ -r 15 -acodec libfaac ../vod/movie1.flv
     -y:文件覆盖,-vf scale=”640:-1”:尺寸调整为宽度640高度自动,-r 15:帧数15fps,这里用libfaac音频编码防止转成ts格式时iPhone没有声音
     
     添加关键帧用来支持拖动播放
     [root@AY130611215205Z video]# cd ../vod
     [root@AY130611215205Z vod]# mv movie1.flv movie1-src.flv
     [root@AY130611215205Z vod]# yamdi -i movie1-src.flv -o movie1.flv
     [root@AY130611215205Z vod]# rm -rf movie1-src.flv

     接下来测试的话,下载VLC Player到本地测试(VLC有时候会花屏,用JWPlayer就好了),或者不行麻烦的话装一个apache服务器并下载JWPlayer来测试。
     测试播放地址为(地址已失效,请勿访问)
     HTTP形式访问:      http://121.199.47.208/movie1.flv
     RTMP形式访问:      rtmp://121.199.47.208/vod/movie1.flv

     4.3)用mencoder转换rmvb文件
     
     4.4)把flv转换成hls的m3u8
     下载安装segmenter
     [root@AY130611215205Z ~]# yum install -y curl curl-devel zlib-devel openssl-devel perl perl-devel cpio expat-devel gettext-devel git
     [root@AY130611215205Z ~]# git clone https://github.com/johnf/m3u8-segmenter.git
     [root@AY130611215205Z ~]# cd m3u8-segmenter/
     [root@AY130611215205Z m3u8-segmenter]# gcc -Wall -g m3u8-segmenter.c -o segmenter -lavformat
     [root@AY130611215205Z m3u8-segmenter]# cp segmenter /usr/bin/
     
     转换成ts,片源大小及清晰度等取决于flv文件,所以转成flv的时候一定要统一起来
     [root@AY130611215205Z vod]# cd /mnt/media/vod
     [root@AY130611215205Z vod]# mkdir /mnt/media/app/movie1/
     [root@AY130611215205Z vod]# ffmpeg -y -i movie1.flv -f mpegts -c:v copy -c:a copy -vbsf h264_mp4toannexb /mnt/media/app/movie1/main.ts
     
     切片
     [root@AY130611215205Z movie1]# cd /mnt/media/app/movie1/
     [root@AY130611215205Z movie1]# segmenter -i main.ts -d 10 -p movie1 -m movie1.m3u8 -u http://121.199.47.208/hls/movie1/
     -d 10:每个切片为10秒,-p movie1:切片的名字的前缀
     -u URL地址:m3u8中播放列表的地址前缀,自己cat一下生成的movie1.m3u8就知道什么用 了
     

     测试一下,用iPhone的Safari访问一下http://121.199.47.208/hls/movie1/movie1.m3u8

11月 052013
 

1、建议在根目录下新建一个目录 /down,用来保存下载的文件

# mkdir /down

cd /down

2、安装 node.js 相关软件

A:首先要安装 gcc gcc-g++ openssl-devel  

# yum install gcc gcc-g++ openssl-devel


B: 如未找到make,使用下面命令

# yum -y install gcc automake autoconf libtool make

C: 如make过程提示g++命令未找到,执行下面:

安装g++:

# yum install gcc gcc-c++

C: 我们会wget文件,如没有wget命令,可使用下面安装:

# yum install wget

 3、下载 python 2.7

#wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz

解压安装

#tar zxvf Python-2.7.3.tgz

#cd Python-2.7.3

#./configure && make && make install 

4、下载 node.js 解压 安装

# cd /down

# wget http://nodejs.org/dist/v0.8.6/node-v0.8.6.tar.gz

tar zxvf node-v0.8.14.tar.gz

# cd node-v0.8.14

./configure && make && make install

这里可能需要几分钟时间,make install注意使用有对应权限的用户

最终看到  updating shebang of /usr/local/bin/npm to /usr/local/bin/node

就说明安装成功了

# node –version 可查看目前版本