隨着低延時流媒體技術的不斷進步,在線教育行業持續升溫。闡述了基於WebRTC架構的低延時直播技術突破以及其在教育行業中的實踐與思考
GitHub:
先放github連接
(更多完整項目下載。未完待續。源碼。圖文知識後續上傳github。)
( VX:mm14525201314)Webrtc服務器搭建後臺項目地址java
java項目:https://github.com/xiangjiana/WebRtcJavaWebnode
NodeJs項目 : https://github.com/ddssingsong/webrtc_servermysql
本搭建是基於centos 7.6 64位系統,系統恢復原始狀態,從新裝系統,確保人人都能搭建成功linux
若是系統安裝了基礎軟件 如git gcc++ 能夠跳該步驟android
yum update yum install git yum install make yum install gcc-c++
下載官網最新nodejs:https://nodejs.org/en/downloadnginx
mkdir webrtc cd webrtc wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz
# 解壓 tar -xvf node-v10.16.0-linux-x64.tar.xz # 更名 mv node-v10.16.0-linux-x64 nodejs # 進入目錄 cd nodejs/ # 確認一下nodejs下bin目錄是否有node 和npm文件,若是有就能夠執行軟鏈接 sudo ln -s /root/webrtc/nodejs/bin/npm /usr/local/bin/ sudo ln -s /root/webrtc/nodejs/bin/node /usr/local/bin/ # 看清楚,這個路徑是你本身建立的路徑,個人路徑是/home/dds/webrtc/nodejs #查看是否安裝 node -v npm -v # 注意,ubuntu 有的是須要sudo,若是不想sudo,能夠 sudo ln -s /root/webrtc/nodejs/bin/node /usr/bin/
cd .. yum install openssl openssl-libs libevent2 libevent-devel yum install openssl-devel yum install sqlite yum install sqlite-devel yum install postgresql-devel yum install postgresql-server yum install mysql-devel yum install mysql-server yum install hiredis yum install hiredis-devel
git clone https://github.com/coturn/coturn cd coturn ./configure make sudo make install
查看是否安裝成功c++
which turnserver
生成用戶名和密碼git
turnadmin -k -u ddssingsong -r north.gov -p 123456
0xfb76c57e823de97df580e573437ef54a 0: log file opened: /var/log/turn_1791_2019-07-31.log 0: SQLite connection was closed.
安全訪問祕鑰 0xfb76c57e823de97df580e573437ef54agithub
接下來配置turnserver 的配置文件,配置文件存放在/usr/local/etc/turnserver.config文件下web
這個文件自己是不存在的,須要咱們本身建立
建立內容
verbose fingerprint lt-cred-mech realm=test user=ddssingsong:0xfb76c57e823de97df580e573437ef54a user=ddssingsong:123456 stale-nonce no-loopback-peers no-multicast-peers mobility no-cli
該配置文件是不存在的、
user="是你本機生成的隨機ID 不要所有直接複製了"
安裝webrtc服務器和瀏覽器端 git clone https://github.com/androidtencent/WebrtcNodeJS cd WebrtcNodeJS npm install
wget -C http://nginx.org/download/nginx-1.12.0.tar.gz tar xvf nginx-1.12.0.tar.gz cd nginx-1.12.0 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make sudo make install
刪除配置文件內容,更改成如下內容
user root; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 300; types_hash_max_size 2048; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream web { server localhost:3000; } upstream websocket { server localhost:3000; } server { listen 443; server_name localhost; ssl on; ssl_certificate /cert/cert.crt;#配置證書 ssl_certificate_key /cert/cert.pem;#配置密鑰 ssl_session_cache shared:SSL:1m; ssl_session_timeout 50m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location /wss { proxy_pass http://websocket/; # 代理到上面的地址去 proxy_read_timeout 300s; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'Upgrade'; } location / { proxy_pass http://web/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
1.key的生成
openssl genrsa -des3 -out server.key 2048
這樣是生成rsa私鑰,des3算法,openssl格式,2048位強度。server.key是密鑰文件名。爲了生成這樣的密鑰,須要一個至少四位的密碼。能夠經過如下方法生成沒有密碼的key:
openssl rsa -in server.key -out server.key
server.key就是沒有密碼的版本了。
2.生成CA的crt
openssl req -new -x509 -key server.key -out ca.crt -days 3650
生成的ca.crt文件是用來簽署下面的server.csr文件。
openssl req -new -key server.key -out server.csr
須要依次輸入國家,地區,組織,email。最重要的是有一個common name,能夠寫你的名字或者域名。若是爲了https申請,這個必須和域名吻合,不然會引起瀏覽器警報。生成的csr文件交給CA簽名後造成服務端本身的證書。
CSR文件必須有CA的簽名纔可造成證書,可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不本身作CA呢。
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
輸入key的密鑰後,完成證書生成。-CA選項指明用於被簽名的csr證書,-CAkey選項指明用於簽名的密鑰,-CAserial指明序列號文件,而-CAcreateserial指明文件不存在時自動生成。
最後生成了私用密鑰:server.key和本身認證的SSL證書:server.crt
證書合併:
cat server.key server.crt > server.pem
啓動turnserver服務
/usr/local/bin/turnserver --syslog -a -f --min-port=32355 --max-port=65535 --user=dds:123456 -r dds --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -v
啓動nginx服務
./usr/local/nginx/sbin/nginx
啓動webrtc 服務
cd /root/webrtc/WebrtcNodeJSnode server
(更多完整項目下載。未完待續。源碼。圖文知識後續上傳github。)
(VX:mm14525201314)