先说一下,楼主系统是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
sudo apt-get install nodejs sudo npm install -g npm sudo apt-get install nodejs-legacy sudo npm -g install grunt-cli
git clone https://github.com/webrtc/apprtc.git cd apprtc npm install //install grunt and required grunt dependencies
接下来须要修改项目中的 /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' }]
修改以后,进入到apprtc根目录,开始buildpython
grunt build!!!!!!!!! 注意每一次对源代码的修改,都须要从新再编译一次,编译事后,会获得一个out目录,能够进去查看以前的修改是否生效。
//下载 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
执行完上面4步后,房间服务器的安装与配置便已完成,接下来就是运行了,进入到google_appengine根目录下,执行:linux
sudo ./dev_appserver.py --host=125.216.242.151 /server/apprtc/out/app_engine //楼主的apprtc位于server目录下
运行完按回车返回前台,nohup以日志形式输出在运行此命令目录下的nohup.out文件nginx
运行成功的话可在浏览器中打开 125.216.242.151:8080 进行访问git
下载地址:https://golang.org/doc/install?download=go1.7.3.linux-amd64.tar.gz
下载完成后解压,楼主解压在了/server/目录下,接着再在server目录下建立gopath目录,开始配置Go环境:github
vim /etc/profile
添加如下内容:
export GOROOT=/server/go export GOPATH=/server/gopath export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
使用 source /etc/profile 保存,而后能够运行 go version 查看是否配置正确。
首先拷贝 /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
修改 /server/gopath/src/collidermain/main.go文件,修改房间服务器IP:
var roomSrv = flag.String("room-server", "https://125.216.242.151", "The origin of the room server")
e = server.ListenAndServeTLS("/server/cert/jwcqc.crt", "/server/cert/jwcqc.key")
建立第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
进入 /server/gopath 目录,准备编译安装collider(须要FQ)
go get collidermain go install collidermain
成功编译后会在gopath目录下生成bin和pkg目录。
进入 /server/gopath/bin 目录,用以下命令运行collider服务器:
./collidermain -port=8089 -tls=true
而后解压到 /server/turnserver/下:
tar -zxvf turnserver-4.4.5.3-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
解压后会获得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
接下来运行
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 从新编译。
service coturn start
sudo apt-get install nginx
全部的配置文件都在/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文件。
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; } }
在线安装的启动过程:
# service nginx reload
# service nginx start
------------------------结束------------------------------结束---------------------------结束---------------
!!!!!!!!方便二次启用 !!!!!!!!!!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