GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menginstal Nginx dengan Modul RTMP di CentOS 7

RTMP (Real Time Messaging Protocol) adalah protokol berkinerja tinggi untuk transmisi data, audio, dan video melalui internet antara teknologi platform berbasis flash. Awalnya dikembangkan oleh Macromedia, dan sekarang dimiliki oleh Adobe.

Nginx RTMP adalah streamer media berbasis nginx dengan streaming langsung RTMP, HLS, dan MPEG-DASH. Modul Nginx RTMP memiliki banyak fitur, termasuk dukungan H264/AAC, dukungan panggilan balik HTTP, modul kontrol HTTP untuk merekam audio/video, dll.

Dalam tutorial ini, saya akan menunjukkan cara menginstal dan mengkonfigurasi server web Nginx dengan modul RTMP. Kami akan menggunakan server CentOS 7 terbaru, dan panduan ini akan mencakup konfigurasi modul nginx dan rtmp serta membuat streaming langsung RTMP dan video sesuai permintaan.

Prasyarat

  • Server CentOS 7
  • Hak istimewa root

Apa yang akan kita lakukan?

  1. Instal Dependensi
  2. Unduh Nginx dengan Paket Tambahan dan Modul RTMP
  3. Kompilasi Nginx dan Instal dari Sumber
  4. Konfigurasi Nginx sebagai Layanan
  5. Konfigurasi Modul Nginx RTMP
  6. Siapkan Streaming Langsung RTMP Pertama
  7. Pengujian

Langkah 1 - Instal Dependensi

Dalam tutorial ini, kita akan membangun server web Nginx dari sumber. Kita perlu menginstal semua dependensi paket yang diperlukan, termasuk alat pengembangan, repositori EPEL, dan paket lainnya.

Instal 'Alat Pengembangan' CentOS.

sudo yum -y groupinstall 'Development Tools'

Tambahkan repositori EPEL.

sudo yum -y install epel-release

Instal dependensi Nginx.

sudo yum install -y  wget git unzip perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel pcre-devel GeoIP GeoIP-devel

Tunggu hingga semua paket terinstal.

Langkah 2 - Unduh Nginx dengan Paket Tambahan dan Modul RTMP

Pada langkah ini, kita akan mengunduh kode sumber nginx dengan dependensi tambahan termasuk pcre, zlib, dan OpenSSL.

Buka direktori '/usr/local/src'.

cd /usr/local/src

Unduh Nginx 1.14.0 dan ekstrak.

wget https://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz

Unduh paket pcre dan ekstrak.

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip
unzip pcre-8.42.zip

Unduh paket zlib dan ekstrak.

wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz

Unduh paket OpenSSL dan ekstrak.

wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -xzvf openssl-1.1.0h.tar.gz

Selanjutnya, kloning kode sumber Modul Nginx RTMP menggunakan perintah git.

git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git

Dan hapus semua file tar.gz dan .zip terkompresi.

rm -f *.tar.gz *.zip

Berikut adalah detail direktori yang kami miliki.

ls -lah

Dan kami siap untuk mengkompilasi dan menginstal.

Langkah 3 - Kompilasi Nginx dan Instal dari Sumber

Buka direktori 'nginx-1.14.0'.

cd nginx-1.14.0/

Konfigurasi nginx 1.14.0 menggunakan parameter di bawah ini.

./configure --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib64/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --user=nginx \
            --group=nginx \
            --build=CentOS \
            --builddir=nginx-1.14.0 \
            --with-select_module \
            --with-poll_module \
            --with-threads \
            --with-file-aio \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-http_realip_module \
            --with-http_addition_module \
            --with-http_xslt_module=dynamic \
            --with-http_image_filter_module=dynamic \
            --with-http_geoip_module=dynamic \
            --with-http_sub_module \
            --with-http_dav_module \
            --with-http_flv_module \
            --with-http_mp4_module \
            --with-http_gunzip_module \
            --with-http_gzip_static_module \
            --with-http_auth_request_module \
            --with-http_random_index_module \
            --with-http_secure_link_module \
            --with-http_degradation_module \
            --with-http_slice_module \
            --with-http_stub_status_module \
            --http-log-path=/var/log/nginx/access.log \
            --http-client-body-temp-path=/var/cache/nginx/client_temp \
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
            --with-mail=dynamic \
            --with-mail_ssl_module \
            --with-stream=dynamic \
            --with-stream_ssl_module \
            --with-stream_realip_module \
            --with-stream_geoip_module=dynamic \
            --with-stream_ssl_preread_module \
            --with-compat \
            --with-pcre=../pcre-8.42 \
            --with-pcre-jit \
            --with-zlib=../zlib-1.2.11 \
            --with-openssl=../openssl-1.1.0h \
            --with-openssl-opt=no-nextprotoneg \
            --add-module=../nginx-rtmp-module \
            --with-debug

Kompilasi dan instal Nginx dengan modul RTMP dengan menjalankan perintah berikut.

sudo make
sudo make install

Ketika instalasi selesai, kita perlu membuat direktori modul symlink baru, membuat pengguna dan grup nginx baru, dan membuat direktori cache nginx baru.

Buat modul symlink nginx ke direktori konfigurasi '/etc/nginx'.

sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules

Buat pengguna dan grup sistem 'nginx' baru.

sudo useradd -r -d /var/cache/nginx/ -s /sbin/nologin -U nginx

Sekarang buat direktori cache Nginx baru '/var/cache/nginx' dan ubah pemilik direktori menjadi pengguna dan grup 'nginx'.

mkdir -p /var/cache/nginx/
chown -R nginx:nginx /var/cache/nginx/

Uji konfigurasi nginx dan versi nginx yang diinstal.

nginx -t
nginx -V

Dan berikut adalah hasilnya.

Server web Nginx telah diinstal pada CentOS 7 dengan Modul RTMP diaktifkan.

Langkah 4 - Konfigurasi Nginx sebagai Layanan

Dalam tutorial ini, kita akan menjalankan nginx sebagai layanan dan kita perlu membuat file layanan nginx baru ke direktori layanan systemd.

Buka direktori '/lib/systemd/system' dan buat file 'nginx.service' baru menggunakan vim.

cd /lib/systemd/system/
vim nginx.service

rekatkan konfigurasi di bawah ini.

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

Simpan dan keluar.

Sekarang muat ulang sistem systemd.

systemctl daemon-reload

Mulai layanan nginx dan aktifkan untuk diluncurkan setiap kali sistem boot.

systemctl start nginx
systemctl enable nginx

Server web Nginx aktif dan berjalan sebagai layanan pada sistem CentOS 7.

Langkah 5 - Konfigurasi Modul Nginx RTMP

Pada langkah ini, kita akan membuat konfigurasi Nginx kustom baru untuk modul RTMP.

Buka direktori konfigurasi '/etc/nginx' dan buat cadangan file 'nginx.conf' asli.

cd /etc/nginx/
mv nginx.conf nginx.conf.asli

Sekarang buat konfigurasi khusus 'nginx.conf'.

vim nginx.conf

Tempel konfigurasi Nginx RTMP di bawah.

worker_processes  auto;
events {
    worker_connections  1024;
}

# RTMP configuration
rtmp {
    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 4000;

# Define the Application
        application show {
            live on;
            # Turn on HLS
            hls on;
            hls_path /mnt/hls/;
            hls_fragment 3;
            hls_playlist_length 60;
            # disable consuming the stream from nginx as rtmp
            deny play all;
        }

    }
}

http {
    sendfile off;
    tcp_nopush on;
    aio on;
    directio 512;
    default_type application/octet-stream;

    server {
        listen 8080;

        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            root /mnt/;
        }
    }
}

Simpan dan keluar.

Selanjutnya, kita perlu membuat direktori baru untuk konfigurasi HLS dan kita telah menetapkan direktori root web ada di direktori '/mnt'.

Buat direktori 'hls' di bawah direktori '/mnt' dan ubah pemilik direktori menjadi pengguna dan grup nginx.

mkdir -p /mnt/hls
chown -R nginx:nginx /mnt/hls

Uji konfigurasi dan mulai ulang layanan nginx.

nginx -t
systemctl restart nginx

Langkah 6 - Siapkan Streaming Langsung RTMP Pertama

Dalam tutorial ini, kita akan membuat video streaming RTMP baru sesuai permintaan menggunakan video mp4 di server, dan membuat streaming RTMP langsung baru yang akan disiarkan dari komputer lokal menggunakan perangkat lunak OBS.

Buka direktori konfigurasi '/etc/nginx' dan edit file 'nginx.conf'.

cd /etc/nginx/
vim nginx.conf

Tempelkan konfigurasi di bawah ini ke dalam tanda kurung 'rtmp { ... }'.

        # RTMP video on demand for mp4 files
        application vod {
            play /mnt/mp4s;
        }

        # RTMP stream using OBS
        application stream {
            live on;
        }

Simpan dan keluar.

Sekarang buat direktori baru 'mp4s' untuk menyimpan semua video vod, dan ubah pemiliknya menjadi grup pengguna nginx.

mkdir -p /mnt/mp4s
chown -R nginx:nginx /mnt/mp4s

Uji konfigurasi nginx dan pastikan tidak ada kesalahan, lalu restart layanan nginx.

nginx -t
systemctl restart nginx

Konfigurasi Nginx untuk streaming langsung RTMP dan streaming vod telah selesai.

Langkah 7 - Pengujian

Uji streaming langsung RTMP dan streaming vod menggunakan pemutar VLC.

Aliran Video Sesuai Permintaan

Buka aplikasi VLC di komputer Anda.

Klik menu 'File' pilih opsi 'Open Network'.

Sekarang ketik URL RTMP untuk aliran vod kami.

rtmp://192.168.1.10:1935/vod/file.mp4

Klik tombol 'Buka'.

Dan berikut adalah hasil streaming videonya.

Live Stream menggunakan OBS (Open Broadcaster Software)

Dalam tutorial ini, kami akan menguji streaming langsung RTMP menggunakan perangkat lunak obs, dan pemutar vlc.

Kami hanya akan mengalirkan jendela terminal menggunakan perangkat lunak penyiar terbuka, dan mencoba menonton streaming langsung RTMP menggunakan pemutar VLC.

Berikut ini adalah konfigurasi saya untuk perangkat lunak obs.

Buka aplikasi VLC di komputer Anda.

Klik menu 'File', pilih opsi 'Open Network'.

Sekarang ketik URL RTMP untuk streaming langsung kami.

rtmp://192.168.1.10:1935/stream/

Klik tombol 'Buka'.

Dan berikut adalah hasil live streaming menggunakan open broadcaster melalui modul nginx rtmp.

Instalasi server web Nginx dengan modul RTMP di CentOS 7 telah berhasil diselesaikan.


Cent OS
  1. Cara Menginstal WordPress dengan Nginx di CentOS 7

  2. Cara Instal phpMyAdmin dengan Nginx di CentOS 7 / RHEL 7

  3. Cara Memasang Sitemagic CMS di CentOS 7 – Dengan Nginx

  1. Cara Instal phpMyAdmin dengan Nginx di CentOS 7

  2. Cara Menginstal Nextcloud dengan Nginx dan PHP 7.3 di CentOS 8

  3. Cara Menginstal ownCloud 9.1 dengan Nginx dan MariaDB di CentOS 7

  1. Cara Menginstal Nextcloud dengan Nginx dan PHP7-FPM di CentOS 7

  2. Cara Menginstal Alat Pemantauan LibreNMS dengan Nginx di CentOS 7

  3. Cara Menginstal SuiteCRM dengan Nginx di CentOS 7