title: 阿里云服务器搭建Nginx+rtmp推流服务器
categories:[Centos]
tags:[音视频编程]
date: 2021/11/16
<div align = 'right'>作者:hackett</div>

<div align = 'right'>微信公众号:加班猿</div>

一、后期筹备

服务器操作系统:CentOS Linux release 8.4.2105

Nginx版本:nginx-1.18.0.tar.gz

RTMP模块:nginx-rtmp-module

推流工具:OBS-Studio/VLC

拉流工具:VLC

二、搭建编译环境

1.装置依赖

新建的服务器先装置一些依赖,或者编译的时候看谬误须要什么就装置什么

sudo yum install gcc make pcre pcre-devel openssl openssl-devel

2.下载nginx-1.18.0.tar.gz和nginx-rtmp-module

wget https://nginx.org/download/nginx-1.18.0.tar.gztar -zxvf nginx-1.18.0.tar.gz #解压git clone https://github.com/arut/nginx-rtmp-module

3.配置和编译装置

#nginx源码文件夹和rtmp模块源码文件夹在同一目录下cd nginx-1.18.0./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_modulesudo makesudo make install

4.查看装置后果

 /usr/local/nginx/sbin/nginx -v #输入nginx version: nginx/1.18.0即为装置胜利

三、配置Nginx

1.设置Nginx开机启动

创立Nginx服务文件

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

创立Nginx服务文件,输出以下内容

[Unit]Description=nginx - high performance web serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s stop[Install]WantedBy=multi-user.target

启动Nginx服务

sudo systemctl start nginx sudo systemctl enable nginx 

2.批改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

批改前

#user  nobody;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '    #                  '$status $body_bytes_sent "$http_referer" '    #                  '"$http_user_agent" "$http_x_forwarded_for"';    #access_log  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    #gzip  on;    server {        listen       80;       server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            root   html;            index  index.html index.htm;        }        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.html        #        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }        # proxy the PHP scripts to Apache listening on 127.0.0.1:80        #        #location ~ \.php$ {        #    proxy_pass   http://127.0.0.1;        #}        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000        #        #location ~ \.php$ {        #    root           html;        #    fastcgi_pass   127.0.0.1:9000;        #    fastcgi_index  index.php;        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;        #    include        fastcgi_params;        #}        # deny access to .htaccess files, if Apache's document root        # concurs with nginx's one        #        #location ~ /\.ht {        #    deny  all;        #}    }    # another virtual host using mix of IP-, name-, and port-based configuration    #    #server {    #    listen       8000;    #    listen       somename:8080;    #    server_name  somename  alias  another.alias;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}    #server    #{    #       listen 8080;    #       location /stat{    #           rtmp_stat all; #所有状态    #           rtmp_stat_stylesheet stat.xsl #state的样式表    #           }    #       location /stat.xsl{    #           root /root/workspace/tmp/rtmp/nginx-rtmp-module;#state的样式表门路    #   }    # HTTPS server    #    #server {    #    listen       443 ssl;    #    server_name  localhost;    #    ssl_certificate      cert.pem;    #    ssl_certificate_key  cert.key;    #    ssl_session_cache    shared:SSL:1m;    #    ssl_session_timeout  5m;    #    ssl_ciphers  HIGH:!aNULL:!MD5;    #    ssl_prefer_server_ciphers  on;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}

批改后

rtmp_auto_push on;rtmp {    server {        listen 1935;        application live {            live on;            hls on;            hls_fragment 3s;            hls_playlist_length 10s;            hls_path /usr/local/nginx/html/hls;        }        application hls {            live on;            hls on;            hls_cleanup off;            hls_fragment 3s;            hls_playlist_length 10s;            hls_path /usr/local/nginx/html/hls;        }    }}#user  nobody;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '    #                  '$status $body_bytes_sent "$http_referer" '    #                  '"$http_user_agent" "$http_x_forwarded_for"';    #access_log  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    #gzip  on;    server {        listen       80;       server_name  localhost;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            root   html;            index  index.html index.htm;        }        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.html        #        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }        # proxy the PHP scripts to Apache listening on 127.0.0.1:80        #        #location ~ \.php$ {        #    proxy_pass   http://127.0.0.1;        #}        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000        #        #location ~ \.php$ {        #    root           html;        #    fastcgi_pass   127.0.0.1:9000;        #    fastcgi_index  index.php;        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;        #    include        fastcgi_params;        #}        # deny access to .htaccess files, if Apache's document root        # concurs with nginx's one        #        #location ~ /\.ht {        #    deny  all;        #}    }    # another virtual host using mix of IP-, name-, and port-based configuration    #    #server {    #    listen       8000;    #    listen       somename:8080;    #    server_name  somename  alias  another.alias;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}    #server    #{    #       listen 8080;    #       location /stat{    #           rtmp_stat all; #所有状态    #           rtmp_stat_stylesheet stat.xsl #state的样式表    #           }    #       location /stat.xsl{    #           root /root/workspace/tmp/rtmp/nginx-rtmp-module;#state的样式表门路    #   }    # HTTPS server    #    #server {    #    listen       443 ssl;    #    server_name  localhost;    #    ssl_certificate      cert.pem;    #    ssl_certificate_key  cert.key;    #    ssl_session_cache    shared:SSL:1m;    #    ssl_session_timeout  5m;    #    ssl_ciphers  HIGH:!aNULL:!MD5;    #    ssl_prefer_server_ciphers  on;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}

3.重启Nginx,开启Centos端口

开启1935/80/8080端口

sudo firewall-cmd --add-port=1935/tcp --permanentsudo firewall-cmd --add-port=80/tcp --permanentsudo firewall-cmd --add-port=8080/tcp --permanentsudo firewall-cmd --reload 

阿里云后盾开启对应的端口

重启ngxin服务

 sudo systemctl restart nginx   

浏览器输出服务器IP呈现Welcome to nginx!,nginx配置完结

四、测试

1.下载OBS-Studio

官网地址:https://obsproject.com/zh-cn/...,下载完一路装置就行

2.下载VLC

官网地址:https://www.videolan.org/,下载完一路装置就行

3.设置OBS-Studio的推流地址

关上OBS,在 文件 -> 设置 -> 推流 填入 rtmp://服务器IP:1935/live/

设置好了OBS-Studio增加一个屏幕捕捉,点击开始推流

4.VLC拉流

关上VLC,媒体 -> 关上网络串流 -> 网络

输出:rtmp://服务器IP:1935/live/demo

http://服务器IP/hls/demo.m3u8


如果你感觉文章还不错,能够给个"三连"

我是加班猿,咱们下期见