Instalacja i wstępna konfiguracja Nginx z obsługą PHP5-FPM.

Dodatkowo dodanie modułu RTMP (obsługującego streaming wideo) do Nginx poprzez prekompilację pakietu.

1. Repozytoria Debiana + update

/etc/apt/sources.list:

deb http://ftp.pl.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.pl.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'
deb http://ftp.pl.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.pl.debian.org/debian/ wheezy-updates main contrib non-free

apt-get update
apt-get upgrade

2. Instalcja Nginx + PHP5-FPM (oraz potrzebnych pakietów)

aptitude install gcc libpcre3 libpcre3-dev libssl-dev make unzip git

aptitude install nginx php5 php5-fpm

3. Edycja domyślnego VirtualHosta

rm -rf /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available /etc/nginx/sites-enabled

cd /etc/nginx/sites-available
mv default 000.default

Edycja 000.default:

server {
        listen   80; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

        root /var/www;
        index index.php index.html index.htm;

        server_name _;

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
        # With php5-fpm:
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
        }

        # deny access to .htaccess files
        location ~ /\.ht {
                deny all;
        }
}

4. Test Nginx i PHP5

mkdir /var/www
nano /var/www/index.php


4.1. PHP5

Przy Debianie 8 „Jessie”, jeśli test się nie uda, należy odhashować linijkę w php.ini oraz zmienić wartość z 1 na 0.

nano /etc/php5/fpm/php.ini

cgi.fix_pathinfo=0

5. Prekompilacja Nginx i dodanie modułu Nginx-RTMP-Module

5.1. Ściągnięcie źródeł Nginxa

apt-get build-dep nginx
cd /tmp
apt-get source nginx

5.2. Pobranie modułu Nginx-RTMP-Module

cd /tmp
git clone https://github.com/arut/nginx-rtmp-module.git

5.3. Dodanie modułu do paczki nginx

cd /tmp/nginx-1.2.1/debian/modules
ln -s /tmp/nginx-rtmp-module

Edycja /tmp/nginx-1.2.1/debian/rules (dodanie poniższej linii przy konfiguracji „Full”)


–add-module=$(MODULESDIR)/nginx-rtmp-module \

5.4. Kompilacja Nginx

cd /tmp/nginx-1.2.1 && dpkg-buildpackage -uc -b -j2

5.5. Instalacja Nginx z „powstałych” pakietów

cd /tmp
dpkg -i nginx-common_1.2.1-2.2+wheezy2_all.deb
dpkg -i nginx-full_1.2.1-2.2+wheezy2_i386.deb

6. Dodanie aplikacji RTMP do konfiguracji Nginx

/etc/nginx/nginx.conf (na końcu pliku):

rtmp {
    server {
        listen 1935;
        application live {
            live on;
        }
    }
}

7. Restart Nginx i test streamingu

/etc/init.d/nginx restart

7.1. Edycja /var/www/index.php

<html>
  <head>
     <title>Streaming via Nginx</title>
  </head>

  <body>
    <object width="640" height="360">
        <param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"></param>
        <param name="flashvars" value="src=rtmp://ADRES_IP/live/stream&amp;scaleMode=stretch"></param>
        <param name="allowFullScreen" value="true"></param>
        <param name="allowscriptaccess" value="always"></param>
        <embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" 
        type="application/x-shockwave-flash" allowscriptaccess="always" 
        allowfullscreen="true" width="640" height="360"
        flashvars="src=rtmp://ADRES_IP/live/stream&amp;scaleMode=stretch">
        </embed>
    </object>
  </body>
</html>

 

7.2 Rozpoczęcie streamingu poprzez Flash Media Live Encoder

Ustawienia serwera:
FMS URL: rtmp://adres_ip/live/
Stream: stream

Po włączeniu streamingu, cieszymy się obrazem 🙂

8. Dodatek

8.1. Iptables

W przypadku, gdy serwer jest Virtualną Maszyną z prywatnym adres IP (np. 192.168.X.Y), na hoście należy przekierować port 1935

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 1935 -j DNAT --to 192.168.X.Y:1935
iptables -A FORWARD -p tcp -d 192.168.X.Y --dport 1935 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.X.Y --dport 1935 -j ACCEPT

8.2. Przydatne linki

  • https://github.com/arut/nginx-rtmp-module
  • http://stream-recorder.pl/
  • http://xdev.me/en/article/Recompile_Nginx_deb_package_with_a_new_module

Komentarze (1)

Comments are closed.