由于GitBook性能问题,此文档过长,故该页停止更新,请前往飞书文档查看最新教程~
完整文档:https://hocassian.feishu.cn/docs/doccnmkWI0ndhoSn1xDI8R7rKEf#kQL3xF
矩阵依赖
前期我们可以根据主体需要的功能来准备云服务,比如我只需要在本地建立素材矩阵帮忙处理视频素材,且不需要外网访问和多余的云服务,那么只用准备私有云和部分云服务即可;当然,为了服务的完整性和可扩展性,我们推荐全部准备和安装。
前期准备
私有云
私有云实际上就是一台(或两台,主机+NAS,根据实际需要存储空间来决定)能够在本地7*24运行的服务器,我们推荐你购买以下配置的服务器,同时如果你是硬件供应商,欢迎和我们合作。
低配(适合个人主体)
机箱:静音防尘机箱,若盘位不够可考虑另购NAS扩充(图片仅供参考)
CPU:e3 1230 v2(或其他主频高于3.0Ghz的e3 v2)
机械:(根据自己实际使用来定,建议raid1防止数据损失,有条件建议上NAS)
高配(适合工作室主体)
机柜:1.2~1.6米高、1米以上深度(附加一块挡板托盘)
CPU:e5 2680 v2(或其他主频高于3.0Ghz的e5 v2)
机械:(根据自己实际使用来定,建议raid1防止数据损失)
Q&A
Q:对于服务器的存放有什么要求?
A:建议放在通风散热好的地方,如果放在密闭空间推荐安装空调降温,有条件的还可以购买烟雾报警器,安全第一!
Q:为什么不能使用个人电脑作为服务器?
A:理论上来说,在普通PC中安装虚拟机、构建镜像后确实可以跑服务,但是我们没试过(扶额),而且普通电脑没有ECC纠错内存,且I系CPU不如E系稳定,个人仅推荐用于素材矩阵中的slave渲染节点(下文会提到),可以尝试但是得做好踩坑的心理准备。
Q:由于挖矿风潮最近服务器价格攀升,在哪里可以买到价格相对优惠的硬件呢?
A:这个确实是个难题,而且正是因为这件事导致整个矩阵的发布延期了一个月……个人和团队还在持续寻找供应商,暂时的建议是去淘宝看看,或者去闲鱼捡垃圾。
公有云
公有云一般指提供公网IP的VPS供应商,百度云、腾讯云、阿里云都有提供这方面的服务;但是由于我们是要从YouTube上同步视频,而且未来可能会安装一些「附加」服务以供更好的网上冲浪服务(懂的都懂),所以更推荐香港的IP和VPS。
购买VPS
购买域名
宝塔管理面板
为了方便管理,推荐在公有云上安装宝塔管理面板,本教程很多内容也会依赖此管理框架:
复制 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
装好宝塔之后选择LNMP(Nginx+MySQL+PHP):
(注意,私有云请勿安装宝塔管理面板)
Q&A
(等待补充)
云服务
目前仅素材矩阵 需要云服务,仅配置其他矩阵不需要进行如下配置;不过未来可能更多业务也会需要,所以就特别加了一栏;若需要配置素材矩阵,可以按照下文来准备下各云服务平台的账号。
飞书提醒
每当素材处理完成之后,飞书机器人将发送一条消息通知;首先注册和下载飞书客户端,接着建立群组:
记录下这串webhook地址,后边会用到
腾讯云(图像识别)
识别率相对较高的AI图像识别服务提供方,注册与开通服务流程如下:
首先访问腾讯云官网,并注册账号:https://cloud.tencent.com
接着前往图像分析页面:https://console.cloud.tencent.com/tiia/detectlabel
选择开通服务:
然后去到控制台秘钥管理:https://console.cloud.tencent.com/cam/capi
如果不放心可以另开一个子账号,简单来说直接用主账号就行,注意保密(尤其不要往仓库上push)
接着从以下三个地点里挑一个离自己家最近的,记下地域代码:
在本地记下上述三个值,后边会用得上。
火山引擎(图像转漫画)
本功能依赖独立域名和公有云,具体功能为将输入的图像转换为动漫风格,未来可能会加入更多的AI功能助力图片编辑,故特此添加;
当然这也是可选功能,不要也行;首先需要准备一个独立的二级域名,比如image.你的域名.你的域名后缀,接着通过宝塔面板建站的方式或者在域名提供方
申请SSL证书,获得证书和私钥,接下来会用到:
前往火山引擎官网 ,注册账号,接着前往ImageX图片服务 ,理论也有个像腾讯云一样的开通步骤;目前使用服务会收费,需要先去这里 充值个几块钱,但约等于免费,笔者至今为止处理了上万张图像,也只收了我几毛钱……进行完之后前往域名配置 :
填写完后前往图片服务管理新建服务:
之后会显示已绑定域名和CNAME值,这时需要把两者在域名解析后台那边关联起来:
接着前往图片处理配置,按下列配置进行设置,并记录红框中的内容(正常格式为~aaaa-bbbbbbbb-color-v1):
然后去获取秘钥,记录到本地保存备用:
微软Azure服务(图像识别)
微软识图最牛逼的一点在于,它能够将图片转为文字描述(参考此处 ),虽然准确率有待提高,但至少功能十分新颖,方便后期素材整理:
微软账户注册与登录略去不表,首先开启一个到用即付资源池:
在订阅中新建一个资源组:
转到资源组:
创建资源:
创建认知服务:如图设置:
创建资源找到概述页面:
管理秘钥:
api使用得到json格式的数据:
复制 "azure": {
"url": "https://cognitiveservices-test002.cognitiveservices.azure.com/vision/v2.0/describe?language=zh&maxCandidates=10",
"image_url": "https://xxx.com/prod-api/profile/image/",
"clip_pic_url": "https://xxx.com/prod-api/profile/video_clip/clip_slot/",
"auth": "xxx"
},
蓝宝石(音乐识别)
(正在和供应商积极沟通,暂未开通)
部署基础后台
(本后台将部署到私有云上,如果你只需要部署文学矩阵,可跳过此步骤)
本教程基于Ubuntu20.04构建,其他系统可能会有细微的差别;默认用户名称为ubuntu,请各位大佬们在实际部署的时候换成自己的路径名!无论是执行命令还是修改文件配置,都必须检查好这一点!
安装基础组件
首先记得换源:
复制 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo nano /etc/apt/sources.list
注:在nano中,用ctrl+k批量删除,ctrl+o保存,ctrl+x退出
复制 deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
然后刷新下:
复制 sudo apt-get update
sudo apt-get upgrade
建议更改设置使得每次sudo命令时不需要输入密码(在此之前请先用「sudo passwd」更改root密码):
配置远程连接
复制 sudo apt-get install openssh-server
sudo ufw allow ssh
接着用终端管理工具就能登入了~
基础设施
需要安装的组件:MySQL、java8、Nginx、Docker、redis、RabbitMQ(基于docker)、Python、Neo4j
具体安装教程:https://hocassian.cn/archives/tech/8164/
如果遇到无法访问的情况,记得通过「sudo ufw allow 端口号」的方式开端口!
RabbitMQ比较复杂,这里详细说下——
首先下载并启动镜像:
复制 sudo docker pull rabbitmq:management
sudo docker run -d -p 5672:5672 -p 15672:15672 --name hch_rabbitmq rabbitmq:management
接着开启15672端口,进入「ip:15672」:
可以选择直接用guest用户操作,也可以新建用户;然后前往virtual hosts标签页,创建新的virtual-host(/media):
仅部署基础后台,执行到这一步就OK了
拉代码&编译前后端
首先拉代码到本地:
复制 cd ~/.
sudo mkdir build
sudo apt install git
sudo apt install screen
git clone git@github.com:hokaso/hocassian-media-matrix.git
先改后端配置,把示例文件去掉.bak后缀:
复制 cd /home/ubuntu/build/hocassian-media-matrix/matrix-control-back-end/ruoyi-admin/src/main/resources/
sudo cp application.yml.bak application.yml
sudo cp application-linux.yml.bak application-linux.yml
接着修改配置:
复制 sudo nano application-linux.yml
将之前配置好的数据填写进来:
按Ctrl+O保存,Ctrl+X退出;接着配置第二个后端:
复制 cd /home/ubuntu/build/hocassian-media-matrix/matrix-people-back-end/src/main/resources/
sudo cp application.yml.bak application.yml
同上,记得修改profile为自己的路径名,除此之外没别的需要更改的了;接着配置前端:
复制 cd /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end
sudo cp vue.config.js.bak vue.config.js
主要还是以配置Nginx为主,打开Nginx配置文件:
复制 sudo nano /etc/nginx/nginx.conf
存入以下配置(记得把ubuntu改为自己的路径名),其中prod这个路径我们后期会创建,专门用于存放生产环境的文件:
复制 worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
client_max_body_size 2048m;
server {
listen 14201;
server_name localhost;
location / {
root /home/ubuntu/prod/matrix-management-front-end;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
location /prod-nosql/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8081/;
}
location ~ ^/prod-api/profile/video_clip/raw/.*\.(mp4)$ {
deny all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重启Nginx:
复制 sudo systemctl restart nginx
编译前后端,准备运行(还需要挂载硬盘才能运行,当然如果你对自己的本地存储空间有自信,比如不配置素材矩阵,可以不挂载……)
复制 sudo apt-get install maven
cd /home/ubuntu/build/hocassian-media-matrix/matrix-control-back-end/
mvn clean package -Dmaven.test.skip=true
cd /home/ubuntu/build/hocassian-media-matrix/matrix-people-back-end/
mvn clean package -Dmaven.test.skip=true
cd /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end/
sudo apt-get install nodejs
sudo apt-get install npm
npm install --registry=https://registry.npm.taobao.org
npm run build:prod
# 移动包到指定位置
sudo mkdir /home/ubuntu/prod/
sudo mkdir /home/ubuntu/prod/matrix-control-back-end/
sudo mkdir /home/ubuntu/prod/matrix-people-back-end/
sudo mkdir /home/ubuntu/prod/matrix-management-front-end/
sudo cp /home/ubuntu/build/hocassian-media-matrix/matrix-control-back-end/ruoyi-admin/target/ruoyi-admin.jar /home/ubuntu/prod/matrix-control-back-end/
sudo cp /home/ubuntu/build/hocassian-media-matrix/matrix-people-back-end/target/matrix-people-1.1.0.jar /home/ubuntu/prod/matrix-people-back-end/
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end/dist/* /home/ubuntu/prod/matrix-management-front-end/
挂载硬盘&存储空间
挂载本地硬盘
输入df -h,可以看到本地硬盘会以类似下图中/dev/sda1的形式列出,这取决于服务器实际硬盘的情况
选择合适的磁盘,执行下列命令挂载(记得把sdb1替换成自己查出的磁盘路径)
复制 sudo mount /dev/sdb1 /home/ubuntu/matrix
挂载网络硬盘
如果你选用的是主机+NAS的搭配方案,那么需要将NAS网络硬盘挂载到本地,首先需要安装nfs驱动:
复制 sudo apt install -y cifs-utils
sudo apt-get install nfs-common
接着将特定文件目录挂载到本地(记得替换为自己的ip和文件路径):
复制 sudo mount -t nfs 192.168.x.x:/volume1/hks-matrix /home/ubuntu/matrix -o proto=tcp -o nolock
配置各项资源路径
首先在/home/ubuntu/matrix路径下建立如下几个文件夹(相当于在硬盘里建立):
复制 cd /home/ubuntu/matrix
sudo mkdir /video_matrix
# 将系统初始文件装载到文件夹
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end/bin/origin_pic/* /home/ubuntu/matrix/video_matrix/
# 如果需要配置素材矩阵
sudo mkdir material
sudo mkdir material/audio_music
sudo mkdir material/audio_music/audio_off_vocal
sudo mkdir material/audio_music_temp
sudo mkdir material/image
sudo mkdir material/image_temp
sudo mkdir material/video_clip
sudo mkdir material/video_clip/clip_slot
sudo mkdir material/video_clip/meta_info
sudo mkdir material/video_clip/preview
sudo mkdir material/video_clip/raw
sudo mkdir material/video_clip_temp
sudo cp /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end/bin/banner.mp4 /home/ubuntu/matrix/material/video_clip/preview/
配置软路由(为何不直接将硬盘挂载的路径设置为后台文件夹?这是非常危险的行为!如果不在Nginx里明确设置,黑客将有机会暴力扫描你的硬盘文件):
复制 # 建立后台直接访问的文件夹
sudo mkdir /home/ubuntu/store
# 将上边建立的文件夹软链到此文件夹
sudo ln -s /home/ubuntu/matrix/material/audio_music /home/ubuntu/store/
sudo ln -s /home/ubuntu/matrix/material/image /home/ubuntu/store/
sudo ln -s /home/ubuntu/matrix/material/video_clip /home/ubuntu/store/
sudo ln -s /home/ubuntu/matrix/video_matrix /home/ubuntu/store/
# 开放本地操作权限
sudo chmod -R 777 /home/ubuntu/
配置基础数据库
将sql文件导入本地数据库:
复制 # 登入数据库
mysql -u root -p
# 建库
CREATE DATABASE media_matrix;
# 切库
use media_matrix;
# 导入
source /home/ubuntu/build/hocassian-media-matrix/matrix-people-back-end/sql/media_matrix.sql
配置开机启动
复制 # 编辑自启逻辑脚本
sudo nano /etc/systemd/system/rc-local.service
写入以下文段:
复制 [Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
接着写入具体脚本:
复制 # 编写具体的自启动作
sudo nano /etc/rc.local
写入以下文段:
复制 #!/bin/bash -e
# 初始化基础组件
sudo systemctl start nginx
sudo systemctl start mysql
sudo systemctl start redis-server
sudo systemctl start docker
sudo docker container start hch_rabbitmq
sudo sleep 60
# 本地挂载和网络挂载二选一,此处为网络挂载
sudo mount -t nfs 192.168.x.x:/你的路径 /home/ubuntu/matrix -o proto=tcp -o nolock
# 此处为本地硬盘挂载(记得把参数改为自己的)
sudo mount /dev/sdb1 /home/ubuntu/store
# 启动后端
screen_name="control"
sudo screen -dmS $screen_name
sudo screen -x -S $screen_name -p 0 -X stuff $'cd /home/hocassian/prod/matrix-control-back-end\nsudo java -jar ruoyi-admin.jar\n'
screen_name="person"
sudo screen -dmS $screen_name
sudo screen -x -S $screen_name -p 0 -X stuff $'cd /home/hocassian/prod/matrix-people-back-end\nsudo java -jar matrix-people-1.1.0.jar\n'
exit 0
配置完成后重启机器(sudo reboot),等待3-5分钟,访问「ip:14201」即可,初始账号&密码为:
部署素材矩阵
配置运行环境
这是我们自认为做得最好的一个矩阵,在安装此矩阵前请确保基础后台已经安装完毕并能够正常打开;首先配置队列与队列交换机,素材矩阵中的一部分操作涉及队列,所以需要配置;打开「ip:15672」,点开Queues标签页:
依次添加「audioOptionalQueue」、「clipOptionalQueue」、「imageOptionalQueue」三个队列;然后点开Exchanges标签页,依次添加「audioOptionalExchange」、「clipOptionalExchange」、「imageOptionalExchange」三个交换机:
接着配置python批处理脚本中的各项参数;首先打开数据库配置:
复制 sudo cp -r /home/ubuntu/build/hocassian-media-matrix/matrix-python-project/* /home/ubuntu/prod/matrix-python-project/
sudo cp /home/ubuntu/prod/matrix-python-project/db/config.json.bak /home/ubuntu/prod/matrix-python-project/db/config.json
sudo nano /home/ubuntu/prod/matrix-python-project/db/config.json
在红框中填写之前mysql数据库的账号和密码:
然后配置队列和云服务:
复制 sudo cp /home/ubuntu/prod/matrix-python-project/material_process/config.json.bak /home/ubuntu/prod/matrix-python-project/material_process/config.json
sudo nano /home/ubuntu/prod/matrix-python-project/material_process/config.json
按照下列提示来配置就行了(没提示的地方不写也行,对于开发者来说应该知道这些是干啥用的):
复制 {
"local_dev": {
"ip": "",
"port": 5672,
"account": "",
"password": "",
"virtual_host": ""
},
"local_prod": {
"ip": "127.0.0.1",
"port": 5672,
"account": "RabbitMQ账号",
"password": "RabbitMQ密码",
"virtual_host": "/media"
},
"remote_prod": {
"ip": "",
"port": 5672,
"account": "",
"password": "",
"virtual_host": ""
},
"send_url": "飞书提醒机器人的webhook链接地址",
"azure": {
"url": "从Azure获取的地址",
"image_url": "https://你的域名前缀(如果有,没有的话记得把.去掉).你的域名.你的域名后缀/prod-api/profile/image/",
"clip_pic_url": "https://你的域名前缀(如果有,没有的话记得把.去掉).你的域名.你的域名后缀/prod-api/profile/video_clip/clip_slot/",
"auth": "从Azure获取的鉴权token"
},
"tencent": {
"app_id": "腾讯云secretID",
"app_secret": "腾讯云secretKey",
"area": "腾讯云地域代码"
},
"hifi": {
"emo_url": "https://hi.hifiveai.com/hifive_ai/api/ai_music_classification_hai/",
"hifi_url": "https://agm-api.hifiveai.com/home/uploadSearch",
"hifi_url_token": "https://agm.hifiveai.com",
"obtain_url": "https://agm-api.hifiveai.com/home/callback?id="
},
"imagex": {
"app_id": "imageX的accessKeyId",
"app_secret": "imageX的accessKeySecret",
"service_id": "还记得之前配置时记录的格式为「~aaaa-bbbbbbbb-color-v1」的那一串代码嘛,把「bbbbbbbb」代表的填写过来",
"prefix": "https://你在火山引擎里配置的域名前缀(和azure中配置的域名是不一样的).你的域名.你的域名后缀/",
"suffix": "(加上.jpeg后缀)~aaaa-bbbbbbbb-color-v1.jpeg"
},
"threads": {
// 这里表示需不需要设置忙时和闲时(需要请改为true),因为服务器风扇有噪音,可以设置仅仅在晚上全功率运行
"op": false,
// ffmpeg的档位一共有5级,夜间忙时(peak)可设置为5,白天闲时(idle)为避免噪音可设置为1
"peak": "5",
"idle": "1",
// 这个列表表示忙时的具体时间,此处设置为次日23点-早上7点
"time": [23, 0, 1, 2, 3, 4, 5, 6, 7]
},
// 如果需要配置渲染子节点(下边会讲到),请填写你本机的ip
"master_ip": ""
}
pip安装python基础库:
复制 sudo pip3 install -r /home/ubuntu/prod/matrix-python-project/requirements.txt
还需要把ffmpeg下载到本地:
复制 cd /home/ubuntu/prod/matrix-python-project/material_process
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
xz -d ffmpeg-git-amd64-static.tar.xz
tar -xvf ffmpeg-git-amd64-static.tar
把ffmpeg和ffprobe移动到material_process路径下,就像这样:
(其实仅命令也可以操作,由于ffmpeg版本不同命令也不同,所以不写具体命令了)给予运行权限:
复制 sudo chmod 777 ffmpeg
sudo chmod 777 ffprobe
我们的speeter服务比较特殊,它本身也依赖ffmpeg,所以还得用apt来装一个……本来只用装一个的,但是只有最新的2021版本才有对bt2020的HDR做了适配,所以在apt源不更新的情况下,还是只能装两次,设置两个不同的运行环境。
复制 sudo apt-get install ffmpeg
之后下载spleeter训练好的神经网络,用来歌曲转伴奏:
复制 cd /home/ubuntu/prod/matrix-python-project/material_process
wget https://hocassian.cn/download/pretrained_models.zip
unzip pretrained_models.zip
一系列配置完成后就可以开启素材矩阵相关的服务了:
复制 screen -S python
cd /home/ubuntu/prod/matrix-python-project
python3 material_process/starter.py
按下Ctrl+A、Ctrl+D退出screen,如果需要进入可以使用「screen -r python」,接着配置开机自启,这样就算断电也能恢复:
复制 sudo nano /etc/rc.local
还是打开这个脚本,
配置内网访问
接着还需要内网中的其他设备也能访问,此处拿windows添加网络位置为例:
首先安装Samba文件共享协议:
复制 sudo apt -y install samba
sudo nano /etc/samba/smb.conf
打开编写配置文件:
把红框内配置改为以下(记得替换为自己的路径):
设置自己的用户名和密码:
复制 sudo useradd 自定义姓名
sudo smbpasswd -a 自定义姓名
最后重启服务:
复制 sudo service smbd restart
在windows上添加下网络位置就行了:
此时我们可以将素材按种类拖入这三个临时文件夹,之后回到面板点击「素材导入」就能正式开始使用这套系统了,具体的使用教程可以看隔壁教程栏:
配置前端
如果希望展示自己的素材,可以选择配置前端;和之前的配置类似,先对前端代码进行编译,之后再把编译好的文件转移到生产环境:
复制 cd /home/ubuntu/build/hocassian-media-matrix/material-front-end/
sudo cp vue.config.js.bak vue.config.js
npm run build:prod
sudo mkdir /home/ubuntu/prod/material-front-end
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/material-front-end/dist/* /home/ubuntu/prod/material-front-end/
记得配置Nginx(加多一个server对象):
复制 server {
listen 14203;
server_name localhost;
location / {
root /home/ubuntu/prod/material-front-end;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
location ~ ^/prod-api/profile/video_clip/raw/.*\.(mp4)$ {
deny all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
重启Nginx服务后,打开「ip:14203」即可访问:
复制 sudo systemctl restart nginx
配置开机启动
注意:这里存在一个问题,spleeter只能以普通用户的身份安装和运行,切到root身份之后无论是安装还是运行都会报错,但是目前我们教程里的开机自启都是默认以root用户身份启用的,我们试了很多方法,要么开机自启时使用普通用户,要么想尽方法把spleeter装到root那一侧,但都失败了……所以现在求大神解决……目前由于以上问题,只能手动启用脚本,非常遗憾……
配置渲染节点
如果你在本地还有其他计算单元,可以协助分担一些渲染工作;和主要节点配置方案类似,运行时请在对应机器上运行slave_starter.py
复制 git clone git@github.com:hokaso/hocassian-media-matrix.git
sudo cp /home/ubuntu/hocassian-media-matrix /home/ubuntu/prod
cd /home/ubuntu/prod
# 记得创建各项配置文件config.json、配置ffmpeg、配置spleeter训练集
python3 material_process/slave_starter.py
部署视频矩阵
前端配置
视频矩阵可以展示主体视频作品,打造私域流量,且某种意义上规避「信息霸权」式审查;本地编译→部署→启用:
复制 cd /home/ubuntu/build/hocassian-media-matrix/video-front-end/
sudo cp vue.config.js.bak vue.config.js
npm run build
sudo mkdir /home/ubuntu/prod/video-front-end
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/video-front-end/dist/* /home/ubuntu/prod/video-front-end/
Nginx更新配置文件(加多一个server对象):
复制 server {
listen 14202;
server_name localhost;
location / {
root /home/ubuntu/prod/video-front-end;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080/;
}
location ~ ^/prod-api/profile/video_clip/raw/.*\.(mp4)$ {
deny all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
重启Nginx服务后,打开「ip:14202」即可访问:
复制 sudo systemctl restart nginx
自动同步
如果不打算从YouTube上同步视频的话,就得手动往矩阵上传视频了……对于在油管有投稿或者打算投稿的小伙伴,你们可以选择配置以下自动同步脚本;首先配置代理,需要在公有云和私有云分别配置服务端和客户端;先配置服务端,进入公有云后台,装shadowsocks软件包:
复制 sudo pip3 install shadowsocks
之后是加速必备的BBR:
复制 sudo wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
验证方法:
复制 $ uname -r
# 查看内核版本,显示为最新版就表示 OK 了
# ————————————
$ sysctl net.ipv4.tcp_available_congestion_control
# 返回值一般为:
# net.ipv4.tcp_available_congestion_control = bbr cubic reno
# ————————————
$ sysctl net.ipv4.tcp_congestion_control
# 返回值一般为:
# net.ipv4.tcp_congestion_control = bbr
# ————————————
$ sysctl net.core.default_qdisc
# 返回值一般为:
# net.core.default_qdisc = fq
# ————————————
$ lsmod | grep bbr
# 返回值有 tcp_bbr 模块即说明bbr已启动。
由于2020年发布的openssl 1.1.0版本中,因为安全问题废弃了 EVP_CIPHER_CTX_cleanup()
函数而引入了 EVE_CIPHER_CTX_reset()
函数,但shadowsocks项目在18年就停止维护了,所以需要手动更改软件包中的部分代码(否则启动失败):
复制 sudo nano /usr/local/lib/python3.8/dist-packages/shadowsocks/crypto/openssl.py
使用nano全局替换 ,将全局中两个cleanup关键字换为reset,Ctrl+O保存Ctrl+X退出;接着编辑配置文件:
复制 sudo nano /etc/ss-conf.json
自定义各项参数:
复制 {
"server": "0.0.0.0",
"server_port": 8080, // 改为自己的
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "password", // 改为自己的
"timeout": 600,
"method": "aes-256-cfb" // 推荐这个
}
编辑完后,Ctrl+O保存Ctrl+X退出;最后运行下列命令启动:
复制 sudo ssserver -c /etc/ss-conf.json -d start
有的vps网络管理比较严格,需要手动开一下端口允许入口流量:
复制 sudo ufw allow 8080 // 端口改为自己的
服务端配置完并开启之后,转到本地配置客户端,同样安装ss:
复制 sudo pip3 install shadowsocks
还是更改openssl相关代码(客户端就不用装BBR了):
复制 sudo nano /usr/local/lib/python3.8/dist-packages/shadowsocks/crypto/openssl.py
使用nano全局替换 ,将全局中两个cleanup关键字换为reset,Ctrl+O保存Ctrl+X退出;接着编辑配置文件:
复制 sudo nano /etc/ss-conf.json
自定义各项参数:
复制 {
"server": "100.100.100.100", // 改为自己的服务端ip
"server_port": 8080, // 改为自己的服务端port
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "password", // 改为自己的服务端密码
"timeout": 600,
"method": "aes-256-cfb" // 改为自己的服务端加密方式
}
编辑完后,Ctrl+O保存Ctrl+X退出,开启本地客户端服务:
复制 sudo sslocal -c /etc/ss-conf.json -d start
这样代理就打通了,接着配置python同步脚本;打开此脚本的配置:
复制 sudo cp /home/ubuntu/prod/matrix-python-project/sync_ytb_video/config.json.bak /home/ubuntu/prod/matrix-python-project/sync_ytb_video/config.json
sudo nano /home/ubuntu/prod/matrix-python-project/sync_ytb_video/config.json
注意,配置了cookies可以有效防止油管的反爬,尤其是爬自己的视频,带上cookie油管就不管了。那么如何获取油管的cookie呢?先登录油管账号,接着按f12,切到Network,切到XHR,随便选一个点进去,切到header,找到cookie,是非常长的一串代码,把它复制到配置文件中对应位置。
之后去后台配置需要同步的账号:
配置好后就启动吧:
复制 screen -S ytb
cd /home/ubuntu/prod/matrix-python-project/sync_ytb_video
python3 ytdl.py
等待程序运行完毕即可,以及最好设置一下开机启动,系统会自动扫描(周期为每周一次):
复制 screen_name="ytb"
screen -dmS $screen_name
screen -x -S $screen_name -p 0 -X stuff $'cd /home/ubuntu/prod/matrix-python-project\npython3 sync_ytb_video/ytb_update_clock.py\n'
部署文学矩阵
首先给网站准备好一个域名(或二级域名),做好解析;进入宝塔面板,安装WordPress:
改为刚刚设置好的域名,点击提交:
点击链接,一路跟着配置:
把刚刚获取的信息复制过来:
根据主体信息来配置(下边仅为示例):
用刚刚的账号密码登陆:
关于主题,你可以点击外观选项来进行配置,就个人而言,目前我感觉最棒的wp主题应该是这个:https://2heng.xin/theme-sakura/ ,比较适合个人为主体的创作者,具体配置教程可以去他们网站看看~
接下来就是重头戏了,需要配置「QQ World收藏家」来同步主体在各种平台发布的文章,进入官网 下载插件包,我们先安装插件:
等待自动安装完成后(可能会比较久),进入标签页,选择激活试用站长版(正常来说这个够用了):
但是由于某些不可抗力的因素,目前该插件的合作方暂时停止了试用的部分功能,需要开通的话得联系管理员:
其他的介绍可以去看看这个视频:https://www.bilibili.com/video/av28517524
这个是他们的官网 ,之后与文学矩阵文章同步相关的服务全权交由他们负责,关于购买和采集讨论可以直接和他们的开发团队沟通~
部署创作矩阵
(目前有的功能即后台登陆后第一个界面,其他功能还在开发中,故无需额外配置)
部署分发矩阵
(还在开发中,敬请期待)
部署对外服务
此处以公有云+宝塔面板为例演示快捷配置;先在本地和vps上分别放上frp,在这里 挑一个和自己系统适配的编译版本,一会我们要用它来建立内网穿透:
解释一下frp的运行机制,部署在本地的叫做frp客户端,负责接收frp服务端传来的信息,和发送数据给frp服务端(vps),而这个服务端是安装在vps上的,专门接收访问用户传来的信息,并将这个信息转发给frp客户端,客户端处理好之后又把这个信息转回去,由服务端推送给用户。这个处理机制有点像代理,如果你了解过相关的知识,相信不难理解的。
其中,frpc是客户端(client),frps是服务端(server),千万要厘清,不要弄混了。服务端配置示例:
复制 [common]
server_addr = 0.0.0.0 # frp服务所使用的端口(TCP),建议保持不变
bind_port = 7000 # 和刚刚那个server_port相对应,建议填写7000
dashboard_port = 6443 # 这是一个frp的控制面板,访问「云服务器公网ip:端口6443」就能访问了,下边会详细说明
authentication_timeout = 9000 # 没有的话加一个,设置为9000,时间长一点没关系,不然以后出什么time_out错误还是得回来改这里。
dashboard_user = 上述控制面板的登录名,自定义
dashboard_pwd = 上述控制面板的登陆密码,自定义
token = 相当于一个验证用的密码,只有两个服务器配置相同的密码才能通讯,防止第三方恶意利用你的云服务器。
客户端配置示例:
复制 [common]
server_addr = 你云服务器的ip地址
server_port = 7000 # frp控制信号于两个服务器间通讯的端口(建议填写7000)
token = 刚刚说的那个验证密码,记得保持一致。
[op-front-end]
type = tcp
local_ip = 127.0.0.1
local_port = 14201
remote_port = 4201
[video-front-end]
type = tcp
local_ip = 127.0.0.1
local_port = 14202
remote_port = 4202
[material-front-end]
type = tcp
local_ip = 127.0.0.1
local_port = 14203
remote_port = 4203
这里以4201~4203端口举例,可以自行改为其他端口;此时可以通过「公网ip:端口号」的方式来验证;接着在宝塔上配置反向代理,用域名也能访问网页:
推荐整一个SSL:
最后就能通过域名访问位于本地的各项服务了~
系统更新
暂时还没有找到合适的自动更新方案,手动更新可以通过「拉代码→重新编译→重启服务」的方式实现:
复制 cd /home/ubuntu/build/hocassian-media-matrix
git pull
cd /home/ubuntu/build/hocassian-media-matrix/matrix-control-back-end/
mvn clean package -Dmaven.test.skip=true
cd /home/ubuntu/build/hocassian-media-matrix/matrix-people-back-end/
mvn clean package -Dmaven.test.skip=true
cd /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end/
npm install --registry=https://registry.npm.taobao.org
npm run build:prod
cd /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end/
npm install --registry=https://registry.npm.taobao.org
npm run build:prod
cd /home/ubuntu/build/hocassian-media-matrix/video-front-end/
npm run build
cd /home/ubuntu/build/hocassian-media-matrix/material-front-end/
npm run build:prod
# 移动包到指定位置
sudo cp /home/ubuntu/build/hocassian-media-matrix/matrix-control-back-end/ruoyi-admin/target/ruoyi-admin.jar /home/ubuntu/prod/matrix-control-back-end/
sudo cp /home/ubuntu/build/hocassian-media-matrix/matrix-people-back-end/target/matrix-people-1.1.0.jar /home/ubuntu/prod/matrix-people-back-end/
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/matrix-management-front-end/dist/* /home/ubuntu/prod/matrix-management-front-end/
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/video-front-end/dist/* /home/ubuntu/prod/video-front-end/
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/material-front-end/dist/* /home/ubuntu/prod/material-front-end/
sudo cp -r /home/ubuntu/build/hocassian-media-matrix/matrix-python-project/* /home/ubuntu/prod/matrix-python-project/
之后重启系统即可完成更新~