通过访问https://cloud.tencent.com/act/free?from=12639的“轻量应用服务器”,获取免费服务器。
腾讯云提供了非常具体的一步步教你云开发的教程,详细的可以查看各种实验室https://cloud.tencent.com/developer/labs/gallery?from=10680
首次申请需要实名认证,扫微信即可。稍等一段时间会建立好服务器,先进入后台重置一下密码,这样就可以远程登录了。
远程登录教程https://cloud.tencent.com/document/product/1207/44578
1元钱购域名+云解析+SSL证书活动
https://cloud.tencent.com/act/domainsales?from=dnspodqcloud&_ga=1.73497554.1575153990.1605548464
域名购买后要实名认证等一阵子,域名网址在https://console.cloud.tencent.com/domain
不弄域名的话不能启用https访问的功能。
域名解析在https://console.cloud.tencent.com/cns,我们要在这里配置解析,具体见下面的图片,输入你的服务器ip即可
ssl证书在https://console.cloud.tencent.com/ssl
安装方法https://cloud.tencent.com/document/product/400/4143
本项目使用caddy服务器,跟上面还不太一样,对应安装方法见后面章节。
在访问服务器之前设置一下腾讯云的防火墙规则,暴露全部端口方便调试(这里只是为了确保能访问,这样很危险,生产环境不要这样)
调试结束后只保留默认的端口即可,即tcp的80和443,udp的5300-5500(这是我的sfu暴露出来的端口,也是docker-compose.yml定义的)
参考https://www.cnblogs.com/feige1314/p/6958420.html
官方教程https://cloud.tencent.com/developer/labs/lab/10414/console
Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令(炒鸡快啊啊啊):
yum install docker-io -y
直接yum安装,安装成功后查看版本
docker -v
启动docker
systemctl enable docker
service docker start
设置开机启动
chkconfig docker on
Docker
的默认源不在国内,导致拉取镜像时时常会很慢。于是,我们可以添加镜像加速器。{ "registry-mirrors": ["https://registry.docker-cn.com"] }
(x) 我也是后来才知道的,之前是这么操作的(贼慢):https://docs.docker.com/engine/install/centos/
(官方的这个教程有问题)首先我们需要先安装并升级 pip
yum install python-pip -y pip install --upgrade pip
pip
安装 Docker Compose
pip install docker-compose --ignore-installed
Docker Compose
是否安装正确docker-compose -v
反正我会报错SyntaxError: invalid syntax,如果你也是,那就用使用pip3安装:
yum install -y python3 python3-pip sudo pip3 install -U pip sudo pip3 install docker-compose
如果你还是报错SyntaxError: invalid syntax,请卸载掉之前python2.7版本的pip安装的docker-compose
pip uninstall docker-compose
到这里docker-compose已经安装成功了,你可以输入docker-compose -v试试
然后下载ion相关代码运行
a) 安装服务端
1) git clone https://github.com/pion/ion.git
2) docker network create ionnet
3) cd ion && docker-compose up --build,启动后log会输出到当前屏幕上,按ctrl+c停止,如果希望放到后台运行,执行 “docker-compose up --build -d ”
b) 安装客户端web
1)git clone https://github.com/pion/ion-app-web.git
2)cd ion-app-web && docker-compose up --build
如果git clone下载太慢,参考这个解决方法https://www.cnblogs.com/rxbook/p/11869835.html
当然也可以本地先下载解压后上传
a) 安装服务端
1)下载 https://sf6-dycdn-tos.pstatp.com/obj/eden-cn/nuhpeuhdlo/class/ion_all.tar
2)建立一个空的文件夹,将上述文件下载到新文件夹中,解压后,加载所有镜像 docker load --input xxxx.tar,加载完所有镜像后执行docker-compose up,启动应用
b) 安装客户端web
1)下载 https://sf6-dycdn-tos.pstatp.com/obj/eden-cn/nuhpeuhdlo/class/ion_app_web.tar
2)建立一个空的文件夹,将上述文件下载到新文件夹中,解压后,加载所有镜像 docker load --input xxxx.tar,加载完所有镜像后执行docker-compose up,启动应用
解压后通过scp命令上传,本地cmd进入放有ion_all和ion_app_web两个文件夹的ion文件夹,然后把ion文件夹发送到服务器,下面的xx.xx.xx.xx就是你远端服务器的ip,第一个root是用户名,第二个root是目录
scp -r ion root@xx.xx.xx.xx:/root
上传完了之后分别进入对应的文件夹load一下
cd /root/ion/ion_all docker load --input gcr.io_etcd-development_etcd_v3.4.9.tar docker load --input nats_latest.tar docker load --input pionwebrtc_ion-avp_latest.tar docker load --input pionwebrtc_ion-biz_latest.tar docker load --input pionwebrtc_ion-islb_latest.tar docker load --input pionwebrtc_ion-sfu_latest.tar docker load --input redis_5.0.9.tar
cd /root/ion/ion_app_web docker load --input ion-app-web_web_latest.tar
如果出现报错
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
应该是没有开启docker服务,需要 service docker start
load了之后分别进入两个文件夹开启docker-compose,需要注意的是每一次up开启后不会接收之后的指令,所以需要开两个终端,分别up
cd /root/ion/ion_all sudo docker-compose up -d cd /root/ion/ion_app_web sudo docker-compose up -d
加-d是detach,在后台运行。可以随时在对应的目录输入 docker-compose logs 返回查看log界面
如果出现了报错
-bash: docker-compose: command not found
是docker-compose安装失败或者未建立链接,参照前面的步骤重新用pip3安装,或者运行
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
如何确定自己服务器类型?在终端输入
curl -I https://localhost:9090 -k
其中的-k我也是根据提示改的,是关闭了curl的验证机制。
会告诉你server是什么,本项目是caddy。
caddy从当前目录的Caddyfile(默认)文件中读取配置,本项目中的位置在/root/ion/ion_app_web/configs/caddy/local.Caddyfile
由于在web的Dockerfile中有这么一句话 COPY configs/certs/ /app/certs/ 表明把configs/certs/挂载到了docker中的/app/certs/目录下
原本的local.Caddyfile关于tls的位置是这么写的
tls /app/certs/cert.pem /app/certs/key.pem
所以我们只需要把证书放到/root/ion/ion_app_web/configs/certs/文件夹中,然后把Caddyfile改成,crt和key文件是你的Apache版本的ssl证书
tls /app/certs/2_xxx.top.crt /app/certs/3_xxx.top.key
同时还需要在/root/ion/ion_app_web/docker-compose.yml文件中挂载一下certs目录(好像主要是这个操作起作用)
volumes: - "./configs/certs/:/app/certs/"
这时候再返回/root/ion/ion_app_web/目录就可以运行容器了,打开浏览器访问https://xx.xx.xx.xx.top:9090不会再提示证书不可信了,变成了小绿锁。
等到DNS解析和SSL证书都准备好后,我们只需要把Caddyfile里面的所有的localhost改成我们的域名,即可从外部访问了!(https://xx.xx.xx.xx.top:9090)
现在我们知道了,web镜像的docker-compose.yml中规定了容器可以被访问的端口,而local.Caddyfile规定了访问每个端口具体会展示一些什么。
在前面我们都是通过端口访问的,并且还只能是网址中带有https的访问,光这样我们当然不太满意,我们可以使用redir将http访问重定向为https访问,并且把暴露的端口修改为80和443(http和https),这样无论外部怎么访问我们的域名,都会被重定向为https链接。
我们将带有端口的localhost直接换为了域名,就是规定了访问域名会展示什么样的页面,其中reverse_proxy为反向代理,反向代理到了我们的biz服务中,其端口在另一个ion_all的docker-compose.yml中规定了。
下面是我们的local.Caddyfile,对应的网页端的docker-compose.yml中只暴露了80和443端口。
1 www.你的域名 { 2 redir https://你的域名{url} 3 } 4 5 你的域名 { 6 root * /app/dist 7 file_server 8 9 tls /app/certs/2_你的域名.crt /app/certs/3_你的域名.key 10 11 reverse_proxy /ws biz:8443 { 12 header_up Sec-WebSocket-Protocol {>Sec-WebSocket-Protocol} 13 } 14 }
在公网部署PION-ION实时音视频通话(含腾讯免费云服务器申请使用教程)
原文:https://www.cnblogs.com/smileglaze/p/13991905.html