搭建apprtc服務器(篇章一)

先說一下,樓主系統是ubuntu14.04,內網IP是125.216.242.151,後續不少命令都是基於ubuntu,不少配置中都要用到IP地址,並且須要填寫機構或key的時候,樓主都是用的ID:jwcqc,另外,全部的下載或安裝都在/server/目錄下。javascript

首先須要安裝nodejs包管理和分發工具npm:php

sudo apt-get install npm

其次是安裝python-webtest:html

sudo apt-get install python-webtest

因爲安裝過程當中像Google App Engine和編譯安裝collider都須要FQ,所以最好提早準備好 FQ 環境,不然安裝過程當中會遇到網絡引發的各類錯誤。java

環境搭建

房間服務器搭建

  1. 安裝依賴
    sudo apt-get install nodejs
    sudo npm install -g npm
    sudo apt-get install nodejs-legacy
    sudo npm -g install grunt-cli
  2. 下載apprtc源碼
    git clone https://github.com/webrtc/apprtc.git
    cd apprtc
    npm install  //install grunt and required grunt dependencies
  3. 修改配置文件

    接下來須要修改項目中的 /apprtc/src/app_engine/constants.py,修改的部份內容以下:node

    //turn打洞服務器配置
    TURN_BASE_URL = 'https://125.216.242.151'
    TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
    CEOD_KEY = 'jwcqc' //主要要與以後turn服務器中的配置一致
    //ICE服務器配置
    ICE_SERVER_BASE_URL = 'https://125.216.242.151'
    ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
    ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')
    WSS_INSTANCE_HOST_KEY = '125.216.242.151:8089' //信令服務器配置,這裏分配8089端口
    WSS_INSTANCE_NAME_KEY = 'vm_name'
    WSS_INSTANCE_ZONE_KEY = 'zone'
    WSS_INSTANCES = [{
      WSS_INSTANCE_HOST_KEY: '125.216.242.151:8089',
      WSS_INSTANCE_NAME_KEY: 'wsserver-std',
      WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
    }, {
      WSS_INSTANCE_HOST_KEY: '125.216.242.151:8089',
      WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
      WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
    }]
  4. 修改以後,進入到apprtc根目錄,開始buildpython

    grunt build
    !!!!!!!!!   注意每一次對源代碼的修改,都須要從新再編譯一次,編譯事後,會獲得一個out目錄,能夠進去查看以前的修改是否生效。
  5. 安裝googleappengine    (運行還依賴 Google App Engine SDK for Python 須要VQ)
    //下載
    wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.40.zip
    //解壓
    unzip google_appengine_1.9.40.zip
    //設置環境變量
    vim /etc/profile
    //添加進profile
    export PATH="$PATH:/root/google_appengine/"
    //保存環境變量
    source /etc/profile
  6. 開啓roomserver
  7. 執行完上面4步後,房間服務器的安裝與配置便已完成,接下來就是運行了,進入到google_appengine根目錄下,執行:linux

    sudo ./dev_appserver.py --host=125.216.242.151 /server/apprtc/out/app_engine //樓主的apprtc位於server目錄下
  8. 運行完按回車返回前臺,nohup以日誌形式輸出在運行此命令目錄下的nohup.out文件nginx

    運行成功的話可在瀏覽器中打開 125.216.242.151:8080 進行訪問git

信令服務器Collider搭建

  1. 安裝Go語言運行環境
  2. 下載地址:https://golang.org/doc/install?download=go1.7.3.linux-amd64.tar.gz
    下載完成後解壓,樓主解壓在了/server/目錄下,接着再在server目錄下建立gopath目錄,開始配置Go環境:github

    vim /etc/profile
  3. 添加如下內容:

    export GOROOT=/server/go
    export GOPATH=/server/gopath
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  4. 使用 source /etc/profile 保存,而後能夠運行 go version 查看是否配置正確。

  5. 拷貝與修改
  6. 首先拷貝 /apprtc/src/collider 下的三個文件夾到 /server/gopath/src 目錄下:

    cp /server/apprtc/src/collider/collider /server/gopath/src
    cp /server/apprtc/src/collider/collidermain /server/gopath/src
    cp /server/apprtc/src/collider/collidertest /server/gopath/src
  7. 修改 /server/gopath/src/collidermain/main.go文件,修改房間服務器IP:

    var roomSrv = flag.String("room-server", "https://125.216.242.151", "The origin of the room server")
  8. 再編輯 /server/gopath/src/collidermain/main.gocollider.go 文件,設置信令服務器所須要用的HTTPS的證書文件(證書的建立在第3步,注意目錄對應上):
    e = server.ListenAndServeTLS("/server/cert/jwcqc.crt", "/server/cert/jwcqc.key")
  9. 建立信令服務器證書
  10. 建立第2步中用到的ssl證書jwcqc.crt和jwcqc.key,本示例的證書建立在/server/cert下,進入到此目錄,而後依次執行:

    openssl genrsa -des3 -out jwcqc.key 2048
    openssl req -new -key jwcqc.key -out jwcqc.csr
    cp jwcqc.key jwcqc.key.org
    openssl rsa -in jwcqc.key.org -out jwcqc.key
    openssl x509 -req -days 365 -in jwcqc.csr -signkey jwcqc.key -out jwcqc.crt
  11. 期間會讓輸入地理位置、機構、密匙等信息,按照提示輸入便可,樓主的密碼所有設的是:jwcqc
  12. 編譯collider源碼
  13. 進入 /server/gopath 目錄,準備編譯安裝collider(須要FQ)

    go get collidermain
    go install collidermain

    成功編譯後會在gopath目錄下生成bin和pkg目錄。

  14. 運行collider服務器
  15. 進入 /server/gopath/bin 目錄,用以下命令運行collider服務器:

    ./collidermain -port=8089 -tls=true

coTurn服務器搭建

下載安裝

  1.    最後一步是安裝coTurn打洞服務器,下載地址 http://turnserver.open-sys.org/downloads/ 找到適合本身系統的下載便可,樓主下載的是 http://turnserver.open-sys.org/downloads/v4.4.5.3/turnserver-4.4.5.3-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz

    而後解壓到 /server/turnserver/下:

    tar -zxvf turnserver-4.4.5.3-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
  2. 解壓後會獲得INSTALL安裝須知和.deb包,可使用 cat INSTALL 查看一下安裝手冊,根據指導進行安裝(實在不行就雙擊安裝,暴力一點。。。):

    sudo apt-get update
    sudo apt-get install gdebi-core
    sudo gdebi *.deb
    這裏一樣生成在了/server/cert/目錄下,密碼所有是jwcqc:
    sudo openssl req -x509 -newkey  rsa:2048 -keyout /server/cert/turn_server_pkey.pem -out /server/cert/turn_server_cert.pem -days 99999 -nodes
  3. 接下來運行

    turnadmin -k -u jwcqc -r north.gov -p jwcqc

    拷貝生成獲得的key,下一步會用到。

    編輯配置文件

    首先編輯 /etc/default/coturn 將 TURNSERVER_ENABLED=1 的註釋去掉,
    再編輯 /etc/turnserver.conf,在末尾加入以下內容:

    listening-device=eth0
    listening-port=3478
    relay-device=eth0
    min-port=49152
    max-port=65535
    Verbose
    fingerprint
    lt-cred-mech
    use-auth-secret
    static-auth-secret=jwcqc
    user=jwcqc:0x949534a397bcf2e88470c86ad3749d9c(替換成上一步經過turnadmin生成的key)
    user=jwcqc:jwcqc
    stale-nonce
    cert=/server/cert/turn_server_cert.pem
    pkey=/server/cert/turn_server_pkey.pem
    no-loopback-peers
    no-multicast-peers
    mobility
    no-cli

    最後一步,進入/apprtc/src/web_app/js/utils.js,修改requestIceServers函數:

    function requestIceServers(iceServerRequestUrl, iceTransports) {
      return new Promise(function(resolve, reject) {
        var servers = [{
            credential: "jwcqc",
            username: "jwcqc",
            urls: [
              "turn:125.216.242.151:3478?transport=udp",
              "turn:125.216.242.151:3478?transport=tcp"
            ]
        }];
        resolve(servers);
      });
    }

    因爲修改了代碼,所以須要進入apprtc目錄下執行 grunt build 從新編譯。

    啓動coturn服務器

    service coturn start

Nginx服務器安裝與配置

安裝

  1. 這裏採用在線安裝的方式:sudo apt-get install nginx
  2. 全部的配置文件都在/etc/nginx下,而且每一個虛擬主機已經安排在了/etc/nginx/sites-available下,啓動程序文件在/usr/sbin/nginx,日誌放在了/var/log/nginx中,分別是access.log和error.log,並已經在/etc/init.d/下建立了啓動腳本nginx,默認的虛擬主機的目錄設置在了/usr/share/nginx/www。

    也能夠採用源代碼安裝方式,下載地址 http://nginx.org/download/ 下載事後解壓縮,再進入到解壓後的文件夾,前後執行./configure指令,再 make,再 make install 即安裝完成,安裝成功以後,nginx放置在/usr/local/nginx目錄下,主要的配置文件爲conf目錄下的nginx.conf,nginx的啓動文件在sbin目錄下的nginx文件。

  3. 接下來修改配置文件:vim /etc/nginx/sites-enabled/default
    pstream roomserver {
            server 125.216.242.151:8080;
    }
    server {
            listen 80 ;
            server_name 125.216.242.151;
            return  301 https://$server_name$request_uri;
    }
    server {
            root /usr/share/nginx/html;
            index index.php index.html index.htm;
            listen 443 ;
            ssl on;
            ssl_certificate      /server/cert/jwcqc.crt;
            ssl_certificate_key  /server/cert/jwcqc.key;
            server_name 125.216.242.151;
            access_log  /var/log/nginx/jwcqc.log;
            location / {
                   proxy_pass http://roomserver$request_uri;
                   proxy_set_header Host $host;
            }
            location ~ .php$ {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            }
    }

    啓動Nginx

    在線安裝的啓動過程:

    # service nginx reload
    # service nginx start

  4. 以上轉自 http://blog.csdn.net/jwcqc/article/details/53156347

  5. ------------------------結束------------------------------結束---------------------------結束---------------

    !!!!!!!!方便二次啓用 !!!!!!!!!!1

查看進程

:~# ps -a
--------
  PID TTY          TIME CMD
11699 pts/4    00:00:10 python
11708 pts/4    00:00:02 python
13779 pts/20   00:00:00 collidermain
13864 pts/21   00:00:00 ps


結束進程
kill 11699

nginx服務重啓/從新加載
:~# service nginx start
:~# service nginx reload

開啓房間服務
:~/apprtc# grunt build; dev_appserver.py --host=0.0.0.0 ./out/app_engine

開啓信令服務
:~/gopath/bin# ./collidermain -port=8089 -room-server='https://192.168.0.176:8080' -tls=true

開啓coTurn服務 service coturn star

相關文章
相關標籤/搜索