Install SSH2 Extension for PHP 7 on CentOS 7

Install gcc, php71w-devel, libssh2 and libssh2-devel on CentOS 7
# yum install gcc php71w-devel libssh2 libssh2-devel

Download php7 pecl-networking-ssh2
# wget https://github.com/Sean-Der/pecl-networking-ssh2/archive/php7.zip

Unzip and Change folder
# unzip php7.zip
# cd pecl-networking-ssh2-php7

Building environment for SSH2 extension
# phpize

# ./configure

Make SSH2 extension make sure build success
# make

Install SSH2 extension
# make install

Write SSH2 extension in PHP 7 extension directory
# vi /etc/php.d/ssh2.ini
extension=ssh2.so

Restart NGINX server and php-fpm
# systemctl restart nginx
# systemctl restart php-fpm

SSH2 PHP7 CentOS7

SSH2 module enabled in PHP 7
# php -m
[PHP Modules]
apc
apcu
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
ssh2
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]

Attach And Mount EBS Volume To EC2 Linux Instance

AWS allows to create / attach / mount new EBS volumes to instances for extra storage. Use lsblk command to view available disk devices and other mount points.

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 8.0G 1.6G 6.5G 20% /

– Go to EC2 Console –> Volumes to create new volume of required size and type.

– Select the last created volume and select the “attach volume” to attach to the ec2 instance.

– Now, SSH login to ec2 instance and find list of available disks or mounts.

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 16G 0 disk

Check the volume has data or empty
# file -s /dev/xvdf

Format the volume to ext4 file system type
# mkfs -t ext4 /dev/xvdf

Mount the volume to “/mnt/dir/” directory
# mkdir /mnt/dir/
# mount /dev/xvdf /mnt/dir/ -t ext4

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 8.0G 1.6G 6.5G 20% /
/dev/xvdf 16G 45M 15G 1% /mnt/dir

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 16G 0 disk /mnt/dir

EBS Automount On Reboot using fstab
# cp /etc/fstab /etc/fstab.bak

Write FSTAB file
# vi /etc/fstab
/dev/xvdf /mnt/dir ext4 defaults,nofail

Check errors
# mount -a

How to unmount volume??
# umount /dev/xvdf

Help: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html

PHP in Amazon Lambda

Clone or Download this GitHub Repo
https://github.com/svnlabs/aws-lambda-php-template

Make new folder lambda in current working directory of EC2 server
# mkdir lambda

Upload 2 files from zip to Amazon EC2 server Instance in folder lambda

lambda
– index.js
– php (binary)

index.js

'use strict';
exports.handler = function(event, context, callback) {
var exec = require('child_process').exec;

  exec('./php -v', function (error, stdout, stderr) {
    if(stdout){
      console.log('stdout: ' + stdout);
    }
    if(stderr){
      console.log('stderr: ' + stderr);
    }
    if (error !== null) {
      console.log('Exec error: ' + error);
    }
    context.succeed(stdout);
    console.log(stdout);
  });
};

Go inside folder lambda

# cd lambda
# zip -r ../lambda.zip *

Copy lambda.zip for AWS S3 bucket

# aws s3 cp ../lambda.zip s3://bucket-name/

How to install AWS CLI?

Create new Lambda Function from AWS Console with NodeJS Runtime*

Name*: phpv
Runtime*: Node.js 4.3
Code entry type: Upload a file from Amazon S3
S3 link URL*: https://s3.amazonaws.com/bucket-name/lambda.zip

Handler*: index.handler
Role*: Lambda Basic Execution

All other info will be default**

Save & Test

“PHP 5.6.5 (cli) (built: Jul 21 2015 18:56:08) \nCopyright (c) 1997-2014 The PHP Group\nZend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies\n”

Installing Apache, MySQL, PHP in Gentoo Server

All commands are performed as root to install Apache, MySQL, PHP and phpMyAdmin in Gentoo Linux Server.

1. Update your System

# emerge –sync

2. Install Apache Webserver

# emerge apache

The web server ROOT is in /var/www/localhost/htdocs/

# /etc/init.d/apache2 start

Then go to http://server-ip/
it works on gentoo

Add apache2 to the startup script
# rc-update -v add apache2 default

3. Install MySQL Database

# emerge mysql

Install MySQL database
# /usr/bin/mysql_install_db

Start MySQL Server
# /etc/init.d/mysql start

Change MySQL User Password
# /usr/bin/mysqladmin -u root -h localhost password ‘new-password’

Test MySQL Server
# /etc/init.d/mysql restart

Add MySQL to the startup script
# rc-update -v add mysql default

4. Install the PHP with modules

# USE=”cli cgi apache2 xml mysql mysqli” emerge ‘dev-lang/php’

Before you can use PHP with Apache… Edit /etc/conf.d/apache2 and add “-D PHP5″ to APACHE2_OPTS

It looks like
APACHE2_OPTS=”-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PHP5″

You can find php.ini in /etc/php/apache2-php5.4

then restart apache server
# /etc/init.d/apache2 restart

Then go to http://server-ip/info.php (Create phpinfo() file)

phpinfo on gentoo
phpinfo on Gentoo

phpinfo php

phpinfo mysql

5. Install phpMyAdmin

# emerge -av phpmyadmin

Then go to http://server-ip/phpmyadmin/

phpMyAdmin on gentoo
phpMyAdmin on Gentoo

Creating Zip Without Recording ROOT Paths

Simply use chdir() to change the working directory before you exec()

Or you can use ….

exec(“cd /var/www/html/media; zip -r -9 Media.zip . 2>&1”, $log);

exec(“mv /var/www/html/media/Media.zip /var/www/html/Media.zip”);

Get zip file size

exec(“ls -ls /var/www/html/Media.zip | awk ‘{print $6}’ 2>&1”, $size);

$zipsize = implode(” “, $size);

Without this solution

Length Date Time Name
——– —- —- —-
0 03-08-13 15:10 /var/www/html/media/dialogs/
125305 08-07-12 16:31 /var/www/html/media/dialogs/1.3.mp3
125305 08-07-12 16:33 /var/www/html/media/dialogs/1.5.mp3
184864 08-07-12 16:32 /var/www/html/media/dialogs/1.4.mp3
125305 08-07-12 16:30 /var/www/html/media/dialogs/1.1.mp3
125305 02-24-13 16:48 /var/www/html/media/dialogs/1.2.mp3
125305 08-07-12 16:34 /var/www/html/media/dialogs/1.6.mp3

With this solution

Length Date Time Name
——– —- —- —-
0 03-08-13 16:40 dialogs/
125305 08-07-12 16:51 dialogs/1.3.mp3
125305 08-07-12 16:53 dialogs/1.5.mp3
184864 08-07-12 16:52 dialogs/1.4.mp3
125305 08-07-12 16:50 dialogs/1.1.mp3
125305 02-24-13 16:58 dialogs/1.2.mp3
125305 08-07-12 17:04 dialogs/1.6.mp3

Install Airtime – open source radio automation software

Airtime is open source radio automation software (GPL v3) for GNU/Linux platforms. It’s recommend installing on Ubuntu Linux 12.04 LTS or Debian Squeeze on a computer with at least a 1 GHz processor and 512 MB of RAM for a Server Edition OS or 1GB of RAM for a Desktop Edition OS.

Download airtime-easy-setup

$ sudo wget http://apt.sourcefabric.org/misc/airtime-easy-setup.deb
$ sudo apt-get install gdebi

$ sudo gdebi airtime-easy-setup.deb

Airtime-Icecast
Airtime-Icecast

Unpacking airtime-easy-setup (from airtime-easy-setup.deb) …
Setting up airtime-easy-setup (2.3.0-1) …
Installing Sourcefabric package signing key…
OK
Setting up Airtime for Etc/UTC timezone…
Setting Icecast and Airtime domain names to ip-10-xxx-yy-74.ec2.internal…
Setting defaults for non-interactive installation…
Checking that the server has a UTF-8 locale…
en_US.UTF-8 is the default locale on this server and appears to support UTF-8 encoding.

Now please run the commands:

sudo apt-get update
sudo apt-get install airtime

After that, installation of Airtime should be complete in a couple of minutes.

You should then be able to log in to Airtime at http://ip-10-xxx-yy-74.ec2.internal/
Processing triggers for man-db …

Install Airtime

$ sudo apt-get update
$ sudo apt-get install airtime

*** Verifying your system environment, running airtime-check-system ***
AIRTIME_STATUS_URL = http://ip-10-xxx-yy-74.ec2.internal:80/api/status/format/json/api_key/%%api_key%%
AIRTIME_SERVER_RESPONDING = OK
KERNEL_VERSION = 3.5.0-21-generic
MACHINE_ARCHITECTURE = x86_64
TOTAL_MEMORY_MBYTES = 604072
TOTAL_SWAP_MBYTES = 0
AIRTIME_VERSION = 2.3.0
OS = Ubuntu 12.10 x86_64
CPU = Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
WEB_SERVER = Apache/2.2.22 (Ubuntu)
PLAYOUT_ENGINE_PROCESS_ID = 19766
PLAYOUT_ENGINE_RUNNING_SECONDS = 32
PLAYOUT_ENGINE_MEM_PERC = 2.6%
PLAYOUT_ENGINE_CPU_PERC = 0.9%
LIQUIDSOAP_PROCESS_ID = 19801
LIQUIDSOAP_RUNNING_SECONDS = 31
LIQUIDSOAP_MEM_PERC = 3.4%
LIQUIDSOAP_CPU_PERC = 7.9%
MEDIA_MONITOR_PROCESS_ID = 19701
MEDIA_MONITOR_RUNNING_SECONDS = 38
MEDIA_MONITOR_MEM_PERC = 2.4%
MEDIA_MONITOR_CPU_PERC = 0.0%
RABBITMQ_PROCESS_ID = 16705
RABBITMQ_RUNNING_SECONDS = 427
RABBITMQ_MEM_PERC = 4.8%
RABBITMQ_CPU_PERC = 0.9%
— Your installation of Airtime looks OK!

******************************* Install Complete *******************************
Setting up liquidsoap-plugin-faad (1.0.1+repack1-1) …
Processing triggers for libc-bin …
ldconfig deferred processing now taking place

Airtime
Airtime

Help: http://en.flossmanuals.net/airtime-en-2-3/easy-setup/

Amazon S3 Expiring Link

I was working on Amazon S3 Cloud HTML5 MP3 Player for S3 Bucket security and Expiring Media links.

Amazon S3 Cloud HTML5 MP3 Player
Amazon S3 Cloud HTML5 MP3 Player
<?php

  if(!function_exists('el_crypto_hmacSHA1')){
      /**
      * Calculate the HMAC SHA1 hash of a string.
      *
      * @param string $key The key to hash against
      * @param string $data The data to hash
      * @param int $blocksize Optional blocksize
      * @return string HMAC SHA1
      */
      function el_crypto_hmacSHA1($key,$data,$blocksize=64){
          if(strlen($key)>$blocksize)$key=pack('H*',sha1($key));
          $key=str_pad($key,$blocksize,chr(0x00));
          $ipad=str_repeat(chr(0x36),$blocksize);
          $opad=str_repeat(chr(0x5c),$blocksize);
          $hmac=pack('H*',sha1(
              ($key^$opad).pack('H*',sha1(
                  ($key^$ipad).$data
              ))
          ));
          returnbase64_encode($hmac);
      }
  }

  if(!function_exists('el_s3_getTemporaryLink')){
      /**
      * Create temporary URLs to your protected Amazon S3 files.
      *
      * @param string $accessKey Your Amazon S3 access key
      * @param string $secretKey Your Amazon S3 secret key
      * @param string $bucket The bucket (bucket.s3.amazonaws.com)
      * @param string $path The target file path
      * @param int $expires In minutes
      * @return string Temporary Amazon S3 URL
      * @see http://awsdocs.s3.amazonaws.com/S3/20060301/s3-dg-20060301.pdf
      */
      function el_s3_getTemporaryLink($accessKey,$secretKey,$bucket,$path,$expires=5){
          // Calculate expiry time
          $expires=time()+intval(floatval($expires)*60);
          // Fix the path; encode and sanitize
          $path=str_replace('%2F','/',rawurlencode($path=ltrim($path,'/')));
          // Path for signature starts with the bucket
          $signpath='/'.$bucket.'/'.$path;
          // S3 friendly string to sign
          $signsz=implode("\n",$pieces=array('GET',null,null,$expires,$signpath));
          // Calculate the hash
          $signature= el_crypto_hmacSHA1($secretKey,$signsz);
          // Glue the URL ...
          $url=sprintf('http://%s.s3.amazonaws.com/%s',$bucket,$path);
          // ... to the query string ...
          $qs=http_build_query($pieces=array(
              'AWSAccessKeyId'=>$accessKey,
              'Expires'=>$expires,
              'Signature'=>$signature,
          ));a
          // ... and return the URL!
          return$url.'?'.$qs;
      }
  }

  ?>

Uses:

$ExpiringLink = el_s3_getTemporaryLink(‘AWS-KEY’, ‘AWS-SECRET-KEY’, ‘BUCKET’, ‘FILENAME’, ‘EXPIRING-TIME’);

Demo Amazon S3 Cloud HTML5 MP3 Player

Reference: http://snipplr.com/view/46753.57507/

PHP Run Background Process using Exec

If you need to start process in background and get its PID to manage it later using PHP.

<?php

function runInBackground($command,$log,$priority=0)
{
if($priority)
   $PID=shell_exec("nohup nice -n $priority $command > $log 2>&1 & echo $!");
else
   $PID=shell_exec("nohup $command > $log 2>&1 & echo $!");
return($PID);
}

?>
PHP Process
PHP Process

echo $! will return process ID
# Command & echo $!

 

Check if process is running

<?php

function isProcessRunning($PID)
{

if($PID==0)return false;
if($PID=="")return false;

exec("ps -p $PID 2>&1",$state);
return(count($state)>=2);

}

?>

 

Display Process Logs

<?php

function displayProcessLog($logfile)
{

exec('cat $logfile 2>&1',$log);
return implode("\r\n",$log);

}

?>

 

Kill Process

<?php

function killProcess($PID)
{
 exec('kill '.$PID.' 2>&1',$status);
 return implode("\r\n",$status);
}

?>

 

Save Process ID to file

#!/bin/bash
Command &
echo $! >/path/to/pid.file

Kaltura Red5 iOS Live Streams Setup

We have a plugin that can be used for streaming kaltura live red5 rtmp to mobile devices.

Kaltura Red5 Live Plugin take below data to segment live video stream

– Red5 Live Video RTMP Stream Link
– Red5 Stream Name
– Publishing Folder
– Publishing Link

Configure Live Stream for Mobile on Kaltura Red5
Configure Live Stream for Mobile on Kaltura Red5

The Main feature of this plugin to show live RTMP streams using Adobe FMLE, on computers using the Kaltura Player and HTML5 player on mobile devices using M3U8 video iOS compatible format.

– Capture Red5 live kaltura stream for FFMpeg Segmentation
– Manage Segmented Clips in M3U8 format
– Stream iOS compatible video to iPhone / iPad in HTML5 Player
– Track Analytic / Stats for live stream in HTML5 Player
– Embed code for HTML5 Player
– Track process log

Live Stream for Mobile on Kaltura Red5
Live Stream for Mobile on Kaltura Red5
KMC - content - manage
KMC – content – manage

Process Log Live Stream for Mobile on Kaltura Red5

Process Log Live Stream for Mobile on Kaltura Red5
Process Log Live Stream for Mobile on Kaltura Red5

Embed Code Live Stream for Mobile on Kaltura Red5

Embed Live Stream for Mobile on Kaltura Red5
Embed Live Stream for Mobile on Kaltura Red5

Related Articles
* VOD to iOS
* Record Audio from Websites
* Red5 Media Server iOS Android Setup

Kaltura Live Red5 CAM RTMP to iOS (iPhone or iPad). Get more help for HTTP Live Video Stream Segmenter and Distributor Contact Us

RTMP (Red5) -> FFMpeg -> Segementer -> .ts files -> iOS (m3u8)

Free Cloud Storage Services

Cloud Storage is really a buzz word for people who are facing troubles for backups and data loss. Cloud Storage can provide tension free management of data on the fly. You can choose any cloud program below as free storage. I really like Dropbox, it is available for all devices 😉

Dropbox – Free for Windows, Mac, Linux, and Mobile

Free space : 2GB

Dropbox - Simplify your life
Dropbox – Simplify your life

Microsoft SkyDrive – SkyDrive on all your devices to access your photos and files from almost anywhere, store them, and securely share them.

Free space : 7GB

Files - SkyDrive
Files – SkyDrive

Amazon Cloud Drive – Amazon Cloud Drive makes storing your photos, videos, documents and other digital files in the Cloud quick and easy.

Free space : 5GB

Amazon Cloud Drive
Amazon Cloud Drive

Apple – iCloud – Your content. On all your devices

Free space : 5GB

Apple - iCloud - Your content. On all your devices
Apple – iCloud – Your content. On all your devices

Box – Secure content-sharing that users and IT love and adopt

Free space : 5GB

Box - Secure content-sharing that users and IT love and adopt
Box – Secure content-sharing that users and IT love and adopt

SugarSync – File Sync & Online Backup – Access and File Sharing from Any Device – Your Cloud

Free Space : 5 GB

File Sync & Online Backup - Access and File Sharing from Any Device - SugarSync - Your Cloud
File Sync & Online Backup – Access and File Sharing from Any Device – SugarSync – Your Cloud

Google Drive – Google Drive is everywhere you are—on the web, in your home, at the office and on the go. So wherever you are, your stuff is just…there. Ready to go, ready to share. Get started with 5 GB free.

Free space : 5GB

Google Drive
Google Drive

Ubuntu One – Keep your content safe, access it anywhere, and share it with friends, family and colleagues. Spread the word and earn up to 20GB extra free cloud storage with our referral program.

Free space : 5GB

Ubuntu One
Ubuntu One

SpiderOak.com – Zero-Knowledge data backup, sync, access, storage and share from any device

Free Space : 2 GB

Zero-Knowledge data backup, sync, access, storage and share from any device - SpiderOak.com
Zero-Knowledge data backup, sync, access, storage and share from any device – SpiderOak.com

Syncplicity – File Sync, Sharing & Collaboration Cloud Service – Mobile Document Sync – File Management

Free cloud storage : 2GB

File Sync, Sharing & Collaboration Cloud Service - Mobile Document Sync - File Management - Syncplicity
File Sync, Sharing & Collaboration Cloud Service – Mobile Document Sync – File Management – Syncplicity

Wuala – Backup. Sync. Share. Access Everywhere. All data encrypted on your computer.

Free Space : 5 GB

Wuala - Secure Cloud Storage - Backup. Sync. Share. Access Everywhere.
Wuala – Secure Cloud Storage – Backup. Sync. Share. Access Everywhere.

Cloud Storage From Just Cloud. Free Online Storage

Free Space : 15 MB

Cloud Storage From Just Cloud. Free Online Storage
Cloud Storage From Just Cloud. Free Online Storage

MegaCloud – Home – Your files wherever you are

Free Space : 8GB File Storage + 8GB Backup

MegaCloud - Home - Your files wherever you are
MegaCloud – Home – Your files wherever you are

MiMedia – Online Storage & Online Backup Solutions

Free Space : 7 GB

Online Storage & Online Backup Solutions - MiMedia
Online Storage & Online Backup Solutions – MiMedia

MediaFire – Free Online Storage

Free Space : 50 GB

Free Online Storage - MediaFire
Free Online Storage – MediaFire

Symform – Free Cloud Backup – Start with 10 GB

Free cloud storage: Up to 10GB

Free Cloud Backup – Start with 10 GB – Symform
Free Cloud Backup – Start with 10 GB – Symform

YouSendIt – File Sharing, Send Large Files, Access Files from Any Device

Free Storage : 2 GB

YouSendIt - File Sharing, Send Large Files, Access Files from Any Device
YouSendIt – File Sharing, Send Large Files, Access Files from Any Device

Cubby.com – Cloud storage, syncing and sharing, with a smile.

Free Space : 5 GB

Cubby.com - Cloud storage, syncing and sharing, with a smile.
Cubby.com – Cloud storage, syncing and sharing, with a smile.

ElephantDrive – Beyond Backup. Your files – Everywhere.

Free Space : 2 GB

ElephantDrive - Beyond Backup. Your files – Everywhere.
ElephantDrive – Beyond Backup. Your files – Everywhere.

OpenDrive – Online Storage, Backup & Cloud Content Management

Free Space : 5 GB

OpenDrive - Online Storage, Backup & Cloud Content Management
OpenDrive – Online Storage, Backup & Cloud Content Management

And Many More … Search Free Cloud Storage Services