日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TURN服务器搭建

發(fā)布時間:2024/8/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TURN服务器搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考:https://github.com/androidtencent/WebrtcNodeJS,并將其中遇到的問題解決記錄下

Webrtc服務(wù)器搭建后臺項目地址

java項目:https://github.com/androidtencent/WebRtcJavaWeb

NodeJs項目 :?https://github.com/ddssingsong/webrtc_server

本搭建是基于centos 7.6 64位系統(tǒng),系統(tǒng)恢復(fù)原始狀態(tài),重新裝系統(tǒng),確保人人都能搭建成功

如果系統(tǒng)安裝了基礎(chǔ)軟件 如git gcc++ 可以跳該步驟

yum update yum install git yum install make yum install gcc-c++

1.1 搭建Node環(huán)境

下載官網(wǎng)最新nodejs:https://nodejs.org/en/download

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 # 進(jìn)入目錄 cd nodejs/# 確認(rèn)一下nodejs下bin目錄是否有node 和npm文件,如果有就可以執(zhí)行軟連接 sudo ln -s /root/webrtc/nodejs/bin/npm /usr/local/bin/ sudo ln -s /root/webrtc/nodejs/bin/node /usr/local/bin/# 看清楚,這個路徑是你自己創(chuàng)建的路徑,我的路徑是/home/dds/webrtc/nodejs#查看是否安裝 node -v npm -v # 注意,ubuntu 有的是需要sudo,如果不想sudo,可以 sudo ln -s /root/webrtc/nodejs/bin/node /usr/bin/

1.2 安裝turn服務(wù)器的環(huán)境準(zhǔn)備

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

安裝時? libevent2 始終安裝失敗,按照下面的重新安裝一遍,忽略libevent2,已經(jīng)安裝的重復(fù)執(zhí)行也不會有影響,會提示已經(jīng)安裝

$ sudo yum install openssl-devel$ sudo yum install sqlite$ sudo yum install sqlite-devel$ sudo yum install libevent$ sudo yum install libevent-devel$ sudo yum install postgresql-devel$ sudo yum install postgresql-server$ sudo yum install mysql-devel$ sudo yum install mysql-server$ sudo yum install hiredis$ sudo yum install hiredis-devel

1.3開始安裝turn服務(wù)器

git clone https://github.com/coturn/coturn cd coturn ./configure make sudo make install

查看是否安裝成功

which turnserver

生成用戶名和密碼

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.

安全訪問秘鑰?0xfb76c57e823de97df580e573437ef54a

接下來配置turnserver 的配置文件,配置文件存放在/usr/local/etc/turnserver.config文件下

這個文件本身是不存在的,需要我們自己創(chuàng)建

創(chuàng)建內(nèi)容

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="是你本機(jī)生成的隨機(jī)ID 不要全部直接復(fù)制了"

1.4安裝Webrtc服務(wù)端

安裝webrtc服務(wù)器和瀏覽器端git clone https://github.com/androidtencent/WebrtcNodeJS cd WebrtcNodeJS npm install

1.5 安裝nginx服務(wù)器(推薦用編譯倆安裝),

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_modulemake sudo make install

遇到問題:

錯誤為:./configure: error: the HTTP rewrite module requires the PCRE library.

安裝pcre-devel解決問題

yum -y install pcre-devel

make的時候出問題:

src/core/ngx_murmurhash.c: 在函數(shù)‘ngx_murmur_hash2’中:

src/core/ngx_murmurhash.c:37:11: 錯誤:this statement may fall through [-Werror=implicit-fallthrough=]

37 | h ^= data[2] << 16;

| ~~^~~~~~~~~~~~~~~~

src/core/ngx_murmurhash.c:38:5: 附注:here

38 | case 2:

| ^~~~

src/core/ngx_murmurhash.c:39:11: 錯誤:this statement may fall through [-Werror=implicit-fallthrough=]

39 | h ^= data[1] << 8;

| ~~^~~~~~~~~~~~~~~

src/core/ngx_murmurhash.c:40:5: 附注:here

40 | case 1:

解決:

原因:將警告當(dāng)成錯誤處理

第一步:解決錯誤1:進(jìn)入到nginx-1.6.3目錄下(解壓的目錄)

找到當(dāng)前目錄下找到objs文件夾,并進(jìn)入,打開文件Makefile,找到有一下內(nèi)容的這行:

CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  

-Werror: gcc將所有的警告當(dāng)成錯誤進(jìn)行處理把這行內(nèi)容中的 “-Werror”去掉

第二步:

**/nginx-1.12.2/src/os/unix/

```/ngx_user.c** 文件中 修改:注釋掉代碼:

cd.current_salt[0] = ~salt[0];

解決方案參考:https://blog.csdn.net/yu_pan_love_cat/article/details/103035513

1.6 更改nginx 配置文件 (額外強(qiáng)調(diào) 其中包含https證書,下面會告訴生成方式),找到nginx的配置文件位置:/usr/local/nginx/conf,vim 打開vim nginx.conf

刪除配置文件內(nèi)容,更改為以下內(nèi)容,注意: ssl_certificate ? ? /cert/cert.crt;#配置證書? 和它下面的一行是用來配置證書地址的,我們先把這個地址寫上,然后在下面文檔會在root目錄下生成cert.crt證書,筆者配置時,還遇到access_log /var/log/nginx/access.log;報錯,直接注釋掉

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: POODLEssl_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.7 生成nginx中的https證書

cd / //進(jìn)入根目錄 mkdir cert //新建cert文件夾用于放證書 cd cert //進(jìn)入cert

1.key的生成

openssl genrsa -des3 -out server.key 2048

這樣是生成rsa私鑰,des3算法,openssl格式,2048位強(qiáng)度。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文件。

  • csr的生成方法
  • openssl req -new -key server.key -out server.csr

    需要依次輸入國家,地區(qū),組織,email。最重要的是有一個common name,可以寫你的名字或者域名。如果為了https申請,這個必須和域名吻合,否則會引發(fā)瀏覽器警報。生成的csr文件交給CA簽名后形成服務(wù)端自己的證書。

  • crt生成方法
  • CSR文件必須有CA的簽名才可形成證書,可將此文件發(fā)送到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和自己認(rèn)證的SSL證書:server.crt

    證書合并:

    cat server.key server.crt > server.pem

    注意:這里是直接拷貝的源博客的命令,命令生成的是server.crt證書 ,這我們之前在/usr/local/nginx/conf,vim 打開vim nginx.conf中配置的名稱是不一樣的,需要把配置改為server.crt,或者把上面的命令全部改成cert而不是server

    1.8分別啟動服務(wù)

    啟動turnserver服務(wù)

    /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服務(wù)

    ./usr/local/nginx/sbin/nginx

    啟動webrtc 服務(wù)

    cd /root/webrtc/WebrtcNodeJS

    node server

    每個服務(wù)啟動后,關(guān)閉窗口服務(wù)就關(guān)閉了 ,需要編寫腳本,通過腳本開啟就可以常駐后臺了

    ?在webrtc目錄 touch run.sh? ?新建run.sh文件

    打開文件添加:

    #!/bin/bashNODE=`which node`nohup $NODE server.js & > log.txt nohup /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 & > log.txt

    ./run.sh運(yùn)行即可

    總結(jié)

    以上是生活随笔為你收集整理的TURN服务器搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。