先说一下,楼主系统是ubuntu14.04,内网IP是125.216.242.151,后续很多命令都是基于ubuntu,很多配置中都要用到IP地址,而且需要填写机构或key的时候,楼主都是用的ID:jwcqc,另外,所有的下载或安装都在/server/目录下。
首先需要安装nodejs包管理和分发工具npm:
sudo apt-get install npm
其次是安装python-webtest:
sudo apt-get install python-webtest
由于安装过程中像Google App Engine和编译安装collider都需要FQ,因此最好提前准备好 FQ 环境,否则安装过程中会遇到网络引起的各种错误。
环境搭建
房间服务器搭建
- 安装依赖
sudo apt-get install nodejs sudo npm install -g npm sudo apt-get install nodejs-legacy sudo npm -g install grunt-cli
- 下载apprtc源码
git clone https://github.com/webrtc/apprtc.git cd apprtc npm install //install grunt and required grunt dependencies
- 修改配置文件
接下来需要修改项目中的 /apprtc/src/app_engine/constants.py,修改的部分内容如下:
//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根目录,开始build
!!!!!!!!! 注意每一次对源代码的修改,都需要重新再编译一次,编译过后,会得到一个out目录,可以进去查看之前的修改是否生效。grunt build
- 安装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
- 开启roomserver
-
执行完上面4步后,房间服务器的安装与配置便已完成,接下来就是运行了,进入到google_appengine根目录下,执行:
sudo ./dev_appserver.py --host=125.216.242.151 /server/apprtc/out/app_engine //楼主的apprtc位于server目录下
-
运行完按回车返回前台,nohup以日志形式输出在运行此命令目录下的nohup.out文件
运行成功的话可在浏览器中打开 125.216.242.151:8080 进行访问
信令服务器Collider搭建
- 安装Go语言运行环境
-
下载地址:https://golang.org/doc/install?download=go1.7.3.linux-amd64.tar.gz
下载完成后解压,楼主解压在了/server/目录下,接着再在server目录下创建gopath目录,开始配置Go环境: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")
- 再编辑 /server/gopath/src/collidermain/main.gocollider.go 文件,设置信令服务器所需要用的HTTPS的证书文件(证书的创建在第3步,注意目录对应上):
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
- 期间会让输入地理位置、机构、密匙等信息,按照提示输入即可,楼主的密码全部设的是:jwcqc
- 编译collider源码
-
进入 /server/gopath 目录,准备编译安装collider(需要FQ)
go get collidermain go install collidermain
成功编译后会在gopath目录下生成bin和pkg目录。
- 运行collider服务器
-
进入 /server/gopath/bin 目录,用如下命令运行collider服务器:
./collidermain -port=8089 -tls=true
coTurn服务器搭建
下载安装
- 最后一步是安装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
-
解压后会得到INSTALL安装须知和.deb包,可以使用 cat INSTALL 查看一下安装手册,根据指导进行安装(实在不行就双击安装,暴力一点。。。):
这里同样生成在了/server/cert/目录下,密码全部是jwcqc:sudo apt-get update sudo apt-get install gdebi-core sudo gdebi *.deb
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 重新编译。
启动coturn服务器
service coturn start
Nginx服务器安装与配置
安装
- 这里采用在线安装的方式:
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文件。
- 接下来修改配置文件: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 -
以上转自 http://blog.youkuaiyun.com/jwcqc/article/details/53156347
-
------------------------结束------------------------------结束---------------------------结束---------------
!!!!!!!!方便二次启用 !!!!!!!!!!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