-
Notifications
You must be signed in to change notification settings - Fork 344
部署规划与启动调试
chatop2020 edited this page Dec 5, 2023
·
18 revisions
- 支持Linux,MacOS,Windows操作系统
- 需要安装.Net6运行环境
- 需要对工程源码进行编译
- 需要根据要求配置好各类配置文件
- 需要下载和编译ZLMediaKit流媒体服务器,具体详见 https://github.com/xia-chu/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
- 需要使用MySql 5.7以上数据库
- 采用Linux操作系统(非万不得以,不要使用Windows操作系统,Linux>MacOS>Windows)
- 采用MySql 5.7以上的数据库
- 使用Linux root用户作为平台启动用户
- 在/root下创建两个目录AKStreamKeeper和AKStreamWeb
- 将AKStreamKeeper工程中编译好的的所有文件复制到/root/AKStreamKeeper/
- 将编译好的ZLMediaKit的流媒体服务器MediaServer复制到/root/AKStreamKeeper/
- 将AKStreamWeb工程中编译好的所有文件复制到/root/AKStreamWeb/
- 在/root/AKStreamKeeper/创建Config目录,用于存放配置文件
- 在/root/AKStreamWeb/创建Config目录,用于存放配置文件
- 在/root/AKStreamWeb和/root/AKStreamKeeper/下都创建log目录
- 仔细阅读配置文件详解的说明,将配置文件配置完成放置于上面的两个Config目录中
- 安装ffmpeg,版本4.2.2以上
- ffmpeg可执行文件需要放在/root/AKStreamKeeper/和/root/AKStreamWeb/的部署目录中,Linux操作系统可以使用软连接来做。
- mysql中创建一个名为“AKStream”的数据库,要和/root/AKStreamWeb/Config/AKStreamWeb.json中OrmConnStr行指定的一致,字符集请使用utf-8,表结构程序会自动生成。
- 正式启动前先手工运行一下/root/AKStreamKeeper/MediaServer程序,让他自动生成config.ini文件,随后根据自己的需要调整config.ini文件的内容
- 需要root权限运行程序 需要root权限运行程序 需要root权限运行程序
- 编译方法请看源码获取与编译章节,编译好的可执行文件一般在工程目录下的bin/Release/net6.0里面,.dll,.xml为主的文件就是可执行文件,这些文件是要用来部署运行的,项目的源码文件在部署运行时不起作用。
Windows下由于无法正常获取网卡数据,因此在LibSystemInfo类库中已经忽略了Windows操作系统上的这方面数据,这可能导致在Windows下无法正常生成各个配置文件,如果配置文件生成失败导致无法正常运行,请手工配置- 已经完美支持Windows平台,不需要再手工填写配置文件(即使完美支持Windows平台,也不建议使用Windows平台)
- AKStream使用了系统的基础命令来获取一些系统信息,因为各发行版的系统基础命令所在路径不一定一致,而发行版品类众多,AKStream不会一一做适配
- AKStream目前主要适配的Linux操作系统是CentOS7,有朋友反馈在Ubuntu下运行异常报错,这是因为route,ifconfig等基础命令路径与CentOS7不同造成的
- 因此,可以自行使用root用户创建软连接解决此问题
- 如ubuntu的route,ifconfig工具在/sbin/route /sbin/ifconfig路径下,而CentOS7的route,ifconfig工具在/usr/sbin/route /usr/sbin/ifconfig路径下
- 因此可以自行创建软连接解决此问题,如果还有其他基础命令不兼容,可自行根据报错提示进行软连接的创建
ln -s /sbin/route /usr/sbin/route
ln -s /sbin/ifconfig /usr/sbin/ifconfig
- 如果你不想通过软连接方式来做发行版兼容,那你也可以通过修改代码,指定工具路径来解决此问题
nohup dotnet /root/AKStreamWeb/AKStreamWeb.dll >/dev/null &
- 如果你在调试阶段,可以使用以下命令运行AKStreamWeb,以获得实时日志输出,当你不需要运行时,可以使用Ctrl+C来结束程序运行
dotnet /root/AKStreamWeb/AKStreamWeb.dll
- AKStreamKeeper 一个流媒体启动一份,可以与AKStreamWeb不在同一台服务器
nohup dotnet /root/AKStreamKeeper/AKStreamKeeper.dll >/dev/null &
- 如果你在调试阶段,可以使用以下命令运行AKStreamKeeper,以获得实时日志输出,当你不需要运行时,可以使用Ctrl+C来结束程序运行
dotnet /root/AKStreamKeeper/AKStreamKeeper.dll
- 用cmd命令行下运行
- dotnet AKStreamKeeper.dll 来启动流媒体治理程序
- dotnet AKStreamWeb.dll 来启动集成控制接口程序
- 为了某些场景下自定义配置文件位置与日志文件位置,特增加两个自定义启动参数,具体如下
- 因日志采用log4net框架,因此-L 所指定的是logconfig.xml的目录位置,具体的日志输出目录需要在logconfig.xml中配置
- -C 指定配置文件路径(目录)
- -L 指定log4net配置文件路径(目录)
dotnet AKStreamWeb.dll -C ../Config //指定当前目录的上级目录中的Config目录中获取配置文件
dotnet AKStreamKeeper.dll -L ../LogConfig //指定当前目录的上级目录中的LogConfig目录中获取logconfig.xml(log4net)配置文件
dotnet AKSTreamWeb.dll -C ../Config -L ../Config/Log //同时指定配置文件目录与logconfig.xml目录
- AKStreamWeb与AKStreamKeeper都集成了Swagger调试文档,所有功能都提供Swagger调试接口,可以通过下面所示地址打开Swagger地址,如果访问不通,则说明运行有问题
- ❗**只有在编译模式为Debug时,Swagger才能正常使用,为了增强安全性,在Release模式编译时关闭了Swagger功能(此内容在2023-08-02更新)**❗
- AKStreamKeeper 默认需要开放端口 6880
- AKStreamWeb 默认需要开放端口 5800
- ZLMediaKit 需要开放所有端口(TCP、UDP)(可根据AKStreamKeeper.json配置文件中指定的端口范围进行开放)
- 系统可以支持集群ZLMediaKit进行运行,AKStreamKeeper是ZLMediaKit的治理程序,需要和ZLMediaKit放在一起,ZLMediaKit的运行,结束等工作全权托管给AKStreamKeeper负责
- AKStreamWeb一个集群里只能有一份,它管理着他下属的所有AKStreamKeeper,而各AKStreamKeeper又管理着自己下属的ZLMediaKit流媒体服务器
- 如果是
nohup dotnet xxxx.dll >/dev/null &
- 这种方式运行的程序,程序会将输出重定向到你指定的文件,并且在后台运行,终端不会输出日志内容(日志内容会保存到日志文件),所以要关掉程序的时候,必须将程序的pid找出来,再通过kill命令结束它
- 可以使用以下命令查找程序的pid
- Linux
ps -aux |grep dotnet
- Mac
ps -A |grep dotnet
-会输出类似以下的内容
ps -A|grep dotnet
31950 ttys000 134:34.03 dotnet AKStreamWeb.dll
31958 ttys001 0:56.42 dotnet AKStreamKeeper.dll
34812 ttys002 0:00.01 grep dotnet
- 可以看到 31950、31958分别是AKStreamWeb.dll和AKStreamKeeper.dll两个程序的pid
- 然后可以用Kill -9 31950这样的方式来结束掉AKStreamWeb.dll程序的运行
kill -9 31950
- 如果运行程序的方式如下
dotnet xxxx.dll
- 这表示程序是运行在前台的,这时程序日志会在终端输出(同时会保存到日志文件),一般调试时使用这种方式运行
- 只需要ctrl+c,就可结束程序运行
- Windows下运行需要打开CMD或者ProwerShell程序
- 运行dotnet xxxx.dll
- 把运行窗口关掉即结束程序,也可使用ctrl+c来结束程序
- AKStream的日志文件在log目录中(logconfig.xml中默认配置成log目录中,你可以自己修改)
- 按日期格式yyyyMMdd.log的形式存在,每天一个日志文件,如果单个日志文件超过10M会自动切换新文件并以yyyyMMdd.log.1,yyyyMMdd.log.2的文件名存在
- 可以通过以下命令实现
cat filename |grep 你关心的内容
这样的命令来检索你所关心的日志内容,当然这必须在Linux或Mac操作系统上才会有效
- 我们在使程序后台运行时,还想同时看到实时日志输出时可以通过以下命令实现
tail -f filename
- 这样日志会实时刷新到终端,可以方便查看日志状态