>  기사  >  운영 및 유지보수  >  nginx 및 nginx-rtmp-module을 사용하여 스트리밍 미디어 서버 구축

nginx 및 nginx-rtmp-module을 사용하여 스트리밍 미디어 서버 구축

零下一度
零下一度원래의
2017-06-29 11:11:432431검색

nginx와 nginx-rtmp-module을 사용하여 스트리밍 미디어 서버를 구축할 때 매우 당황스러운 문제에 직면했습니다. nginx에 nginx-rtmp-module 모듈을 추가할 때 제가 취한 첫 번째 접근 방식은 원본 nginx를 먼저 제거한 다음 다운로드하는 것이었습니다. nginx와 nginx-rtmp-module의 소스코드를 다시 컴파일해서 설치해봤는데, 스트리밍 미디어 서버가 정상인지 테스트했는데, 이전에 구축한 LUMP 환경에 일부 WEB 프로젝트를 Deploy했기 때문에 문제가 발생했습니다. 이제 nginx가 재설치되었으니 이 프로젝트들을 재배포해야 합니다. 그래서 이 WEB 프로젝트들을 재배포하기 시작했는데, 그 결과 nginx의 디렉토리 구조가 많이 바뀌었기 때문에 화장실에서 기절하게 되었습니다. , 원래 WEB 프로젝트를 구성할 수 없었습니다. 그 후 오랫동안 고민하고 헤매며 온라인에서 많은 솔루션을 검색했지만 대부분 nginx를 컴파일하고 설치하고 흐름 테스트를 수행하는 데 중점을 두었습니다. 나중에 포스팅을 보다가 누군가가 원본 nginx 공유 라이브러리를 직접 컴파일한 nginx 실행 파일로 교체하면 문제가 해결될 수 있다는 말을 봐서 바로 시도해보았습니다. 실제로 작동한다는 것이 밝혀졌습니다! 이제 nginx는 스트리밍 미디어 서비스를 실행하고 웹 프로젝트를 동시에 배포할 수 있으므로 케이크를 먹고 먹을 수도 있습니다.

다음은 제 작업 과정에 대한 간략한 소개입니다. 같은 문제가 발생하는 경우 도움말을 참조하세요(내 구성 환경: Ubuntu Server 16.04 + nginx1.10.0 + nginx-rtmp-module-master).

 1. 먼저 apt-get을 사용하여 nginx를 설치하세요. 이 방법을 사용하여 설치된 nginx의 버전은 1.10 .0

1 sudo apt-get update2 sudo apt-get install nginx

  2입니다. 원하는 디렉터리로 이동하여 원하는 이름으로 디렉터리를 생성하여 nginx 및 nginx-rtmp-module의 소스 코드를 저장합니다. 루트 디렉터리/소프트웨어(소프트웨어도 내 것입니다. 아래에 nginx 디렉터리가 생성됩니다. 다음으로 nginx 디렉터리에 nginx 및 nginx-rtmp-module을 다운로드하겠습니다.

1 cd softwares/2 sudo mkdir nginx

  3. nginx 디렉터리로 들어갑니다.

1 cd nginx/

  4. nginx 소스 코드를 다운로드하십시오. 참고: 불필요한 문제를 피하기 위해 다운로드한 소스 코드 버전은 1단계에서 설치된 nginx 버전과 일치해야 합니다. 다음은 두 가지 방법입니다.

방법 a: 터미널 nginx 명령에서 apt-get 소스를 실행하여 해당 버전의 소스 코드를 직접 가져옵니다.

1 sudo apt-get source nginx

  이 방법은 다운로드 후 자동으로 압축이 풀리고 nginx-1.10.0 디렉터리가 생성됩니다.

방법 b: nginx 공식 웹사이트에서 해당 버전을 찾아 다운로드하세요.

1 sudo wget nginx.org/download/nginx-1.10.0.tar.gz

다운로드 후 수동으로 압축을 풀어야 합니다.

1 sudo tar zxvf nginx-1.10.0.tar.gz

5. nginx-rtmp-module의 소스 코드를 다운로드하세요.

1 sudo wget github.com/arut/nginx-rtmp-module/archive/master.zip

nginx-rtmp-module은 이미 GitHub에 있으므로 오픈 소스이므로 GitHub 주소:

 6에서 직접 얻을 수도 있습니다. .nginx-rtmp-module 소스코드 압축패키지를 압축해제합니다.

1 sudo unzip master.zip

 7. nginx 소스코드 디렉터리로 들어갑니다.

1 cd nginx-1.10.0/

 8. 현재 nginx 구성정보를 확인하고, 현재 구성정보를 하나의 파일로 완전히 저장합니다. 나중에 nginx 소스 코드를 컴파일할 때 현재 구성 정보를 기반으로 구성해야 합니다.

1 nginx -V

참고로 명령줄의 V는 대문자 또는 소문자로만 표시됩니다. 현재 nginx 구성 정보는 다음과 같습니다.

--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads

9. nginx 소스 코드 컴파일 정보를 구성하고 nginx-rtmp-module을 nginx에 추가합니다.

1 sudo ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=../nginx-rtmp-module-master

이 줄은 실제로 다음과 같이 구성됩니다. sudo . /configure <원래 구성 정보> --add-module=../nginx-rtmp-module-master 이렇게 하면 nginx 구성에 nginx-rtmp-module이 추가되고 동시에 이전에 저장된 nginx 구성도 추가됩니다. 이 컴파일에 사용된 구성 정보에 정보가 추가되어 컴파일된 nginx가 원본 nginx와 최대한 동일한 기능을 갖도록 보장합니다. 주의 깊은 학생들은 실제로 nginx 정보를 모두 작성하지 않았다는 것을 알게 될 것입니다. 원래 구성 정보를 모두 복사해서 붙여넣으면 컴파일 중에 처리하기 어려운 오류가 있을 수 있기 때문에 한동안 이러한 오류에 대한 좋은 해결책을 찾지 못했기 때문에 일부 구성 정보가 줄었습니다. 축소 후 기능모듈에는 큰 차이가 없으므로 안심하고 사용하셔도 됩니다.

 10. 구성이 완료된 후 make 명령을 실행하여 nginx 소스코드 컴파일을 시작합니다. nginx 소스 코드 디렉터리에 있습니다. objs 디렉터리에 nginx 실행 파일을 생성합니다.

1 sudo make

  11. 생성된 nginx 실행 파일을 /usr/sbin 디렉터리에 복사하고 원본 nginx 공유 라이브러리 파일을 바꿉니다. 원본 /usr/sbin 디렉터리에는 nginx 공유 라이브러리 파일이 있으며, 이를 대체하기 위해 컴파일된 nginx 실행 파일을 사용합니다.

1 sudo nginx /usr/sbin

 12. nginx를 다시 시작합니다.

1 sudo service nginx restart

 13. nginx 구성 정보를 다시 확인합니다.

1 nginx -V

nginx에 nginx-rtmp-module 모듈이 추가된 것을 볼 수 있습니다.

1 --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=../nginx-rtmp-module-master

스트림을 밀고 당겨보니 기능은 정상이었습니다. 원래 WEB 프로젝트를 다시 실행해 보았는데 역시 정상이었습니다!

마지막으로 먼저 apt-get을 통해 nginx를 설치해야 하는 이유를 설명하고, 그 이유는 LUMP 환경에서 WEB 프로젝트의 배포를 용이하게 하기 위해서 먼저 apt-get을 통해 nginx를 설치하지 않고 직접 소스 코드를 다운로드하여 컴파일하고 설치하면 nginx 구성이 완료되기 때문입니다. 디렉토리가 불완전하고 WEB 프로젝트를 배포하기 어려울 것입니다. (아마도 일부 작업을 통해 배포할 수도 있지만 특정 작업은 여전히 ​​nginx를 연구하는 데 시간이 필요합니다.) 스트리밍 미디어 서비스를 설정하지 않는 경우 권장합니다. apt-get을 통해 nginx를 설치하면 단계가 간단하고 걱정할 필요가 없습니다!

위 내용은 nginx 및 nginx-rtmp-module을 사용하여 스트리밍 미디어 서버 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.