
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&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&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
dzieki za ten post, oszczedziles mi pracy przy przebudowaniu nginxa, nie wiedzialem ze jest taka mozliwosc. cheers! 🙂