Cách cài đặt Nginx với mô-đun RTMP trên CentOS 7

theanh

Administrator
Nhân viên
RTMP (Giao thức nhắn tin thời gian thực) là một giao thức hiệu suất cao để truyền dữ liệu, âm thanh và video qua internet giữa các công nghệ nền tảng dựa trên flash. Ban đầu được Macromedia phát triển và hiện thuộc sở hữu của Adobe.

Nginx RTMP là một trình phát phương tiện dựa trên nginx với phát trực tiếp RTMP, HLS và MPEG-DASH. Mô-đun Nginx RTMP có nhiều tính năng, bao gồm hỗ trợ H264/AAC, hỗ trợ gọi lại HTTP, mô-đun điều khiển HTTP để ghi âm thanh/video, v.v.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình máy chủ web Nginx với mô-đun RTMP. Chúng tôi sẽ sử dụng máy chủ CentOS 7 mới nhất và hướng dẫn này sẽ bao gồm cấu hình mô-đun nginx và rtmp cũng như tạo luồng trực tiếp RTMP và video theo yêu cầu.

Điều kiện tiên quyết​

  • Máy chủ CentOS 7
  • Quyền root

Chúng ta sẽ làm gì?​

  1. Cài đặt các phụ thuộc
  2. Tải xuống Nginx với gói bổ sung và mô-đun RTMP
  3. Biên dịch Nginx và cài đặt từ nguồn
  4. Cấu hình Nginx dưới dạng dịch vụ
  5. Cấu hình mô-đun Nginx RTMP
  6. Thiết lập luồng trực tiếp RTMP đầu tiên
  7. Kiểm tra

Bước 1 - Cài đặt các phụ thuộc​

Trong hướng dẫn này, chúng ta sẽ xây dựng máy chủ web Nginx từ nguồn. Chúng ta cần cài đặt tất cả các gói phụ thuộc cần thiết, bao gồm các công cụ phát triển, kho lưu trữ EPEL và các gói khác.

Cài đặt 'Công cụ phát triển' của CentOS.
Mã:
sudo yum -y groupinstall 'Công cụ phát triển'
Thêm kho lưu trữ EPEL.
Mã:
sudo yum -y install epel-release
Cài đặt các gói phụ thuộc của Nginx.
Mã:
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
Chờ tất cả các gói được cài đặt.


Bước 2 - Tải xuống Nginx với Gói bổ sung và Mô-đun RTMP​

Trong bước này, chúng tôi sẽ tải xuống mã nguồn nginx với các phụ thuộc bổ sung bao gồm pcre, zlib và OpenSSL.

Đi đến thư mục '/usr/local/src'.
Mã:
cd /usr/local/src
Tải xuống Nginx 1.14.0 và giải nén.
Mã:
wget https://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz
Tải xuống gói pcre và giải nén nó.
Mã:
wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip
giải nén pcre-8.42.zip
Tải xuống gói zlib và giải nén nó.
Mã:
wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz
Tải xuống gói OpenSSL và giải nén nó.
Mã:
wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -xzvf openssl-1.1.0h.tar.gz
Tiếp theo, sao chép Mô-đun Nginx RTMP mã nguồn sử dụng lệnh git.
Mã:
git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git
Và xóa tất cả các tệp tar.gz và .zip đã nén.
Mã:
rm -f *.tar.gz *.zip
Sau đây là các chi tiết thư mục mà chúng tôi có.
Mã:
ls -lah


Và chúng tôi đã sẵn sàng để biên dịch và cài đặt.

Bước 3 - Biên dịch Nginx và Cài đặt từ Nguồn​

Đi tới thư mục 'nginx-1.14.0'.
Mã:
cd nginx-1.14.0/
Cấu hình nginx 1.14.0 bằng các các thông số bên dưới.
Mã:
./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 \
 --với-http_ssl_module \
 --với-http_v2_module \
 --với-http_realip_module \
 --với-http_addition_module \
 --với-http_xslt_module=động \
 --với-http_image_filter_module=động \
 --với-http_geoip_module=động \
 --với-http_sub_module \
 --với-http_dav_module \
 --với-http_flv_module \
 --với-http_mp4_module \
 --với-http_gunzip_module \
 --với-http_gzip_static_module \
 --với-http_auth_request_module \
 --với-http_random_index_module \
 --với-http_secure_link_module \
 --với-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


Biên dịch và cài đặt Nginx với mô-đun RTMP bằng cách chạy các lệnh sau.
Mã:
sudo make
sudo make install
Khi cài đặt hoàn tất, chúng ta cần tạo một thư mục mô-đun symlink mới, tạo một người dùng và nhóm nginx mới và tạo một thư mục bộ đệm nginx mới.

Tạo mô-đun symlink nginx vào thư mục cấu hình '/etc/nginx'.
Mã:
sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules
Tạo một người dùng và nhóm hệ thống 'nginx' mới.
Mã:
sudo useradd -r -d /var/cache/nginx/ -s /sbin/nologin -U nginx
Bây giờ hãy tạo một thư mục bộ đệm Nginx mới '/var/cache/nginx' và thay đổi chủ sở hữu của thư mục thành người dùng và nhóm 'nginx'.
Mã:
mkdir -p /var/cache/nginx/
chown -R nginx:nginx /var/cache/nginx/
Kiểm tra cấu hình nginx và phiên bản nginx đã cài đặt.
Mã:
nginx -t
nginx -V
Và sau đây là kết quả.



Máy chủ web Nginx đã được cài đặt trên CentOS 7 với Mô-đun RTMP được bật.

Bước 4 - Cấu hình Nginx dưới dạng Dịch vụ​

Trong hướng dẫn này, chúng ta sẽ chạy nginx dưới dạng dịch vụ và chúng ta cần tạo một tệp dịch vụ nginx mới vào thư mục dịch vụ systemd.

Đi tới thư mục '/lib/systemd/system' và tạo tệp 'nginx.service' mới bằng vim.
Mã:
cd /lib/systemd/system/
vim nginx.service
dán cấu hình bên dưới.
Mã:
[Unit]Mô tả=nginx - máy chủ web hiệu suất caoTài liệu=https://nginx.org/en/docs/After=network-online.target remote-fs.target nss-lookup.targetWants=network-online.target[Service]Type=forkingPIDFile=/var/run/nginx.pidExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.confExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s TERM $MAINPID[Install]WantedBy=multi-user.target
Lưu và thoát.

Bây giờ hãy tải lại hệ thống systemd.
Mã:
systemctl daemon-reload
Khởi động dịch vụ nginx và cho phép nó khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
systemctl start nginx
systemctl enable nginx
Máy chủ web Nginx đang hoạt động như một dịch vụ trên hệ thống CentOS 7.


Bước 5 - Cấu hình Mô-đun Nginx RTMP​

Trong bước này, chúng ta sẽ tạo cấu hình Nginx tùy chỉnh mới cho mô-đun RTMP.

Đi tới thư mục cấu hình '/etc/nginx' và sao lưu tệp 'nginx.conf' gốc.
Mã:
cd /etc/nginx/
mv nginx.conf nginx.conf.asli
Bây giờ hãy tạo cấu hình tùy chỉnh 'nginx.conf'.
Mã:
vim nginx.conf
Dán cấu hình Nginx RTMP bên dưới.
Mã:
worker_processes auto;events { worker_connections 1024;}# Cấu hình RTMPrtmp { server { listen 1935; # Nghe trên cổng RTMP chuẩn chunk_size 4000;# Xác định Ứng dụng application show { live on; # Bật HLS hls on; hls_path /mnt/hls/; hls_fragment 3; hls_playlist_length 60; # vô hiệu hóa việc sử dụng luồng từ nginx dưới dạng rtmp deny play all; } }}http { sendfile off; tcp_nopush on; aio on; directio 512; default_type application/octet-stream; server { listen 8080; location / { # Vô hiệu hóa cache add_header 'Cache-Control' 'no-cache'; # Thiết lập CORS add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Expose-Headers' 'Content-Length'; # cho phép các yêu cầu kiểm tra trước CORS nếu ($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/; } }}
Lưu và thoát.

Tiếp theo, chúng ta cần tạo một thư mục mới cho cấu hình HLS và chúng ta đã xác định thư mục gốc web nằm trong thư mục '/mnt'.

Tạo thư mục 'hls' trong thư mục '/mnt' và thay đổi chủ sở hữu của thư mục thành người dùng và nhóm nginx.
Mã:
mkdir -p /mnt/hls
chown -R nginx:nginx /mnt/hls
Kiểm tra cấu hình và khởi động lại dịch vụ nginx.
Mã:
nginx -t
systemctl restart nginx

Bước 6 - Thiết lập luồng phát trực tiếp RTMP đầu tiên​

Trong hướng dẫn này, chúng ta sẽ tạo luồng video RTMP mới theo yêu cầu bằng cách sử dụng các video mp4 trên máy chủ và tạo luồng RTMP trực tiếp mới sẽ được phát từ máy tính cục bộ bằng phần mềm OBS.

Đi tới thư mục cấu hình '/etc/nginx' và chỉnh sửa tệp 'nginx.conf'.
Mã:
cd /etc/nginx/
vim nginx.conf
Dán các cấu hình bên dưới vào trong ngoặc 'rtmp { ... }'.
Mã:
# Video RTMP theo yêu cầu cho tệp mp4 ứng dụng vod { phát /mnt/mp4s; } # Luồng RTMP sử dụng ứng dụng OBS luồng { trực tiếp trên; }
Lưu và thoát.

Bây giờ hãy tạo một thư mục mới 'mp4s' để lưu trữ tất cả các video vod và đổi chủ sở hữu thành nhóm người dùng nginx.
Mã:
mkdir -p /mnt/mp4s
chown -R nginx:nginx /mnt/mp4s
Kiểm tra cấu hình nginx và đảm bảo không có lỗi, sau đó khởi động lại dịch vụ nginx.
Mã:
nginx -t
systemctl restart nginx
Cấu hình Nginx cho luồng trực tiếp RTMP và luồng vod đã hoàn tất.


Bước 7 - Kiểm tra​

Kiểm tra luồng trực tiếp RTMP và luồng vod bằng trình phát VLC.

Luồng video theo yêu cầu​

Mở ứng dụng VLC trên máy tính.

Nhấp vào menu 'Tệp', chọn tùy chọn 'Mở mạng'.

Bây giờ hãy nhập URL RTMP cho luồng vod của chúng tôi.

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

Nhấp vào nút 'Mở'.



Sau đây là kết quả của luồng video.


Phát trực tiếp bằng OBS (Phần mềm phát sóng mở)​

Trong hướng dẫn này, chúng tôi sẽ kiểm tra luồng trực tiếp RTMP bằng phần mềm obs và trình phát vlc.

Chúng tôi sẽ chỉ phát trực tiếp cửa sổ thiết bị đầu cuối bằng phần mềm phát sóng mở và thử xem luồng trực tiếp RTMP bằng trình phát VLC.

Sau đây là cấu hình của tôi cho obs software.



Mở ứng dụng VLC trên máy tính của bạn.

Nhấp vào menu 'File', chọn tùy chọn 'Open Network'.

Bây giờ hãy nhập URL RTMP cho luồng trực tiếp của chúng tôi.

rtmp://192.168.1.10:1935/stream/

Nhấp vào nút 'Open'.



Và sau đây là kết quả của luồng trực tiếp sử dụng open broadcaster thông qua mô-đun nginx rtmp.



Quá trình cài đặt máy chủ web Nginx với mô-đun RTMP trên CentOS 7 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên