安卓用Termux装CentOS ⑨ Stream 并部署zhenxun bot の流程分享 #1806
KudouShinnyan
started this conversation in
Ideas
Replies: 3 comments
-
没遇到过, 按照提示它是叫你执行 |
Beta Was this translation helpful? Give feedback.
0 replies
-
playwright install 执行了,但是没用现在用的就是Termux+Ubuntu22.04 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
前言:
上次在Termux+Ubuntu20.04尝试成功了, 之后又稍微尝试了Termux + CentOS ⑨ Stream , 因为莪另一个看板娘(Bot)用Termux + CentOS ⑨ Stream 挂着的, 把两个Bot搬到一起住就不用启动两个Linux了, 但那时候ffmpeg貌似没CentOS⑨的包所以中止了, 现在有包了所以再次尝试, 然而尝试用CentOS ⑨ Stream 自带的python3.9, 有部分依赖不能装上, 所以就编译安装3.8了; 另外, 之前在Ubuntu里尝试过安装PostgreSQL不能用, CentOS ⑨ Stream 好像没怎么尝试, 但还是直接在Termux装PostgreSQL吧
关于签名服务器
HuggingFace的QQSign集体暴毙, 所以还是用其他方法吧
有个Koyeb具体流程不便公开并且试了两三次没跑起来
这里有本地(或服务器)搭建的相关文件和简单的使用方法
https://gitee.com/KudouShinnyan/qsign
(之前试了Termux+CentOS⑨最高貌似只有1.1.0正常用, 后续版本比如有些水土不服, 1.1.9是被尝试连接之后它就卡了, 1.2.1版好像直接不兼容arm, 你试下Termux改用其它Linux容器装jre跑1.1.9, 或直接在Termux装jdk不通过容器跑1.1.9, 莪现在是在一个熟人服务器跑1.1.9了)
签名服务器地址本地运行的是
http://127.0.0.1:8081
在服务器运行则是
http://服务器IP地址:8081
(比如服务器用宝塔面板需要在安全那里放行8081端口)
准备工作:
下载并安装Termux
(现在的爪机一般下载arm64版即可, 其它Android设备自己判断, universal是通用的但安装包会大很多)
装完后启动它
获取唤醒锁 (防止Termux后台运行和锁屏后休眠)
点击通知栏Termux那里的
Acquire wakelock
, 也可以在Termux的命令行输入termux-wake-lock
, 弹出询问始终在后台运行点允许, 然后通知栏显示wake lock held
然后在Termux的命令行输入下面的命令
Termux换源并更新 (一整行一起执行)
sed -i "s@packages.termux.org@mirrors.bfsu.edu.cn/termux@g" $PREFIX/etc/apt/sources.list && apt update && apt upgrade -y
(解包过程大概有6次询问有关换回默认源的, 直接回车默认否)
(Android12~13有也许要解决杀进程的问题, 可以考虑现在解决了再继续, 后面有相关流程)
安装PostgreSQL、wget和proot
apt install postgresql wget proot -y
创建postgresql目录
mkdir -p $PREFIX/var/lib/postgresql
初始化
initdb $PREFIX/var/lib/postgresql
后台运行postgresql
nohup postgres -D $PREFIX/var/lib/postgresql/ &
(以后关掉重开Termux需要先执行它)
查看Termux使用的用户名
whoami
连接数据库
(自己把u0_a394换成上一行命令查看到的用户名)
psql -U u0_a394 -d postgres
(连接成功后会显示 postgres=# )
连接失败的话修改配置文件 (没失败就不用改)
(解决报错FATAL: could not map shared memory segment "xxxxxxxxxx")
nano $PREFIX/var/lib/postgresql/postgresql.conf
按ctrl+w搜
dynamic_shared_memory_type
回车, 假如等号右边是sysv
那就改成mmap
完成后Ctrl+O保存, 然后不改文件名直接回车
Ctrl+X离开, 然后再次后台运行postgresql和连接数据库
创建用户和设置密码
create user oyama with password 'mahiro';
创建数据库
create database oyamadb owner oyama;
将oyamadb的所有权赋予oyama
grant all privileges on database oyamadb to oyama;
退出
\q
获取安装Linux的脚本
wget https://hub.gitmirror.com/https://github.com/xiliuya/termux-linux/releases/download/0.1/install_linux.sh
执行安装脚本
chmod +x install_linux.sh && ./install_linux.sh
安装的Linux发行版输入
centos
(其它系统就不一定能用后面的流程了)系统版本莪是输入
9
(其它版本自己尝试, 是CentOS版本, 与安卓版本无关)(另外, CentOS ⑨ Stream 貌似只有arm64和amd64的镜像, 32位的arm设备就用Ubuntu 22.04 吧)
装完后根据需求删掉安装脚本
rm install_linux.sh
之前备份过postgresql数据库的话现在就还原它然后再继续后续流程 (没备份过就不用管)
往后面翻有备份还原的流程, 为了不让第一次安装的人感到混乱就不放在这了
创建Termux命令行的输入记录
(Termux没用exit或logout命令正常退出的话不会保存输入记录, 好像很少会这么退出, 干脆直接创建记录算了)
echo -e "nohup postgres -D \$PREFIX/var/lib/postgresql/ &\n./start-centos.sh" > ~/.bash_history
创建之后, 以后打开Termux就可以按方向↑和↓直接找到后台运行postgresql的命令和启动CentOS命令了
启动CentOS (这次先手动复制粘贴执行吧)
./start-centos.sh
启动后会显示[root@localhost ~]#
CentOS Stream 换源 (两行命令, 默认源能稳定下载的话可不换)
curl -o /etc/yum.repos.d/centos.repo https://gitee.com/KudouShinnyan/bfsu-centos-stream-mirror/raw/master/centos.repo
curl -o /etc/yum.repos.d/centos-addons.repo https://gitee.com/KudouShinnyan/bfsu-centos-stream-mirror/raw/master/centos-addons.repo
安装EPEL源 (扩充软件库)
yum install epel-release -y
EPEL换源 (一整行一起执行, 默认源能稳定下载的话可不换)
sed -e 's!^metalink=!#metalink=!g' -e 's!^#baseurl=!baseurl=!g' -e 's#download.example\/pub#mirrors.bfsu.edu.cn#g' -i /etc/yum.repos.d/epel*.repo
安装RPM Fusion源 (也是扩充软件库但不一定用得上)
yum localinstall -y https://mirrors.bfsu.edu.cn/rpmfusion/free/el/rpmfusion-free-release-9.noarch.rpm
yum localinstall -y https://mirrors.bfsu.edu.cn/rpmfusion/nonfree/el/rpmfusion-nonfree-release-9.noarch.rpm
RPM Fusion换源 (一整行一起执行, 默认源能稳定下载的话可不换)
sed -e 's!^metalink=!#metalink=!g' -e 's!^#baseurl=!baseurl=!g' -e 's#download1.rpmfusion.org#mirrors.bfsu.edu.cn\/rpmfusion#g' -i /etc/yum.repos.d/rpmfusion*.repo
更新软件包缓存
yum makecache
安装screen多会话组件和nano文本编辑器
yum install screen nano -y
修复screen文件夹权限
chmod 777 /run/screen
创建gocq的会话
screen -S gocq
安装gocq
用浏览器点这里获取新版本go-cqhttp的deb包下载链接
以1.2.0版为例 (用arm64的版本举例, 其它架构的设备自己另外获取链接)
yum localinstall -y https://hub.gitmirror.com/https://github.com/Mrs4s/go-cqhttp/releases/download/v1.2.0/go-cqhttp_1.2.0_linux_arm64.rpm
创建存放gocq配置文件夹 (以便和其它东西区分)
mkdir ~/gocq
首次启动gocq
cd ~/gocq && go-cqhttp
选3, 生成配置之后回车会退出
编辑配置文件
nano config.yml
按方向↑↓←→移到账号相关那里, 把1233456改成机器人的QQ号, 密码的话填在单引号里面
白色
sign-server
下边url右边单引号里的横杠
改成签名服务器链接
(就是前面说的http://IP地址:8081
)(假如没有
sign-server
和114514
那就安装新版gocq然后执行rm config.yml
删除文件然后按刚装完gocq的流程重来)Ctrl + \ (反斜杠)搜索, 然后输入下面内容
universal: ws://your_websocket_universal.server
回车然后输入下面内容替换
universal: ws://127.0.0.1:8080/onebot/v11/ws/
回车然后输入A全部替换 (其实也就一处)
完成后Ctrl+O保存, 然后不改文件名直接回车
Ctrl+X离开
(后续改其它文件也是这样保存离开)
再次启动gocq
go-cqhttp
提示生成设备虚拟设备信息(以及一些目录)后先ctrl+c退出
获取特定QQ版本号文件
点进这里(点链接), 网页开PC模式, 然后点进想用的QQ版本(要和签名服务器一致), 再按需求点开
android_pad.json
或android_phone.json
, 在右上方原始数据
的按钮长按或右键复制链接复制后按下面的例子执行 (用8.9.90举例)
curl -o ./data/versions/6.json https://gitee.com/KudouShinnyan/qsign/raw/protocol/8.9.90/android_pad.json
curl -o ./data/versions/1.json https://gitee.com/KudouShinnyan/qsign/raw/protocol/8.9.90/android_phone.json
(6.json是Android Pad, 1.json是Android爪机)
修改登录设备 (可跳过, 默认Android Pad)
nano device.json
按ctrl+w搜
protocol
回车, 按方向→把后面数字改成想要的设备 (首选6, 次选1)1 Android爪机、2 Android手表(不能接收notify、口令红包、不能撤回)、3 macOS、4 企点(普通账号不能用)、5 iPad、6 Android Pad
ctrl+o(保存)回车
ctrl+x(离开)
完成后再次启动gocq
go-cqhttp
登录成功后连接错误先不用管
Ctrl+A然后D放到后台继续后续步骤
(可以在不同的会话在不同的目录启动gocq同时登录多个QQ共用一份zhenxun)
创建真寻会话
screen -S zhenxun
安装wget、tar、python编译环境和git
yum install wget tar zlib-devel bzip2-devel openssl-devel gcc libffi-devel make git -y
获取python 3.8源码
wget https://registry.npmmirror.com/-/binary/python/3.8.18/Python-3.8.18.tgz
解包文件
tar -xzf Python-3.8.18.tgz
进入目录
cd Python-3.8.18
配置编译参数 (一整行一起执行)
./configure --prefix=/usr/local/python3.8 --enable-optimizations --with-system-ffi --with-computed-gotos --enable-loadable-sqlite-extensions
开始编译
make -j $(nproc) && make altinstall
添加环境变量
echo 'export PATH="/usr/local/python3.8/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
返回上级目录并删除文件
cd ../ && rm -rf Python-3.8.18 Python-3.8.18.tgz
升级pip
python3.8 -m pip install -i https://mirrors.bfsu.edu.cn/pypi/web/simple --upgrade pip
pip换源 (默认源能稳定下载的话可不换)
pip3.8 config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple
获取真寻
git clone --depth=1 -b main https://mirror.ghproxy.com/https://github.com/HibiKier/zhenxun_bot.git
进入真寻目录
cd ~/zhenxun_bot
克隆插件集 (可选)
git clone --depth=1 -b master https://mirror.ghproxy.com/https://github.com/zhenxun-org/nonebot_plugins_zhenxun_bot.git ./extensive_plugin/
(现在跳过的话后续可能要用下面的方法了)
获取另一组插件 (可选)
git clone https://mirror.ghproxy.com/https://github.com/CRAZYShimakaze/zhenxun_extensive_plugin.git ./extensive_plugin/temp/
移到插件目录(排除某些文件)
find ./extensive_plugin/temp -maxdepth 1 ! -name 'README.md' ! -name 'LICENSE' ! -name '.git' -exec mv {} ./extensive_plugin/ \;
删除临时目录
rm -rf ./extensive_plugin/temp
安装 poetry
pip3.8 install poetry
(假如是用python 3.10那就需要在pyproject.toml文件把PyYAML的版本改成6.0.1, poetry.lock文件就删掉吧)
(python3.8不需要改不需要删)
安装依赖
poetry install
(执行后等待它完成, 假如有安装失败的那就再次执行直到成功)
进入虚拟环境
poetry shell
安装Chromium (和ffmpeg)
playwright install chromium
设置机器人的主人以及机器人的昵称
nano .env.dev
在SUPERUSERS右边引号内输入自己QQ
ctrl+o(保存)回车
ctrl+x(离开)
填写数据库
nano configs/config.py
修改下面内容, 机器人的昵称按需求修改, 其它的保持默认
user: str = "oyama"
password: str = "mahiro"
address: str = "127.0.0.1"
port: str = "5432"
database: str = "oyamadb"
ctrl+o(保存)回车
ctrl+x(离开)
首次启动真寻
python3.8 bot.py
要是提示没某个模块比如nonebot.adapter.onebot并且自动退出运行的话尝试输入这个
pip3.8 install nonebot-adapter-onebot
完成后再次启动真寻
自动退出后配置插件 (可选)
nano configs/config.yaml
各个插件有注释说明, true为启用、false为禁用
(这里有个坑, 比如API_KEY这里, 冒号后面要加空格再填写API)
改完之后ctrl+o(保存)回车
ctrl+x(离开)
再次启动真寻
python3.8 bot.py
稍微等亿点时间下载完一些数据和图片包什么的就能用了
帮助菜单: '真寻帮助' 或 '管理员帮助'
真寻使用文档
可以到真寻bot的插件库或NoneBot商店找一些插件安装
(具体的安装流程查看插件的Gayhub仓库)
以后关闭Termux重开后这样操作:
点状态栏的Acquire wakelock或者在Termux的命令行输入
termux-wake-lock
然后执行下列命令 (可用方向↑↓找到命令, 这次在screen会话里面也可以用方向↑↓键了)
nohup postgres -D $PREFIX/var/lib/postgresql/ &
./start-centos.sh
screen -S gocq
cd ~/gocq && go-cqhttp
ctrl+a然后d
screen -S zhenxun
cd ~/zhenxun_bot
poetry shell
python3.8 bot.py
附加screen的常规用法:
将该screen会话放后台
Ctrl+A然后D
回到zhenxun会话
screen -r zhenxun
回到gocq会话
screen -r gocq
进入回滚模式 (查看日志)
Ctrl+A然后Esc
(再次按Esc则是退出该模式)
关闭该screen会话
exit
或 Ctrl+A然后K再y
备份还原PostgreSQLの方法:
将oyamadb这个数据库备份到内置存储的下载(Download)文件夹
(等以后想要备份的时候再执行, 是在后台运行postgresql之后、启动CentOS之前执行)
pg_dump oyamadb > ~/storage/downloads/oyamadb.sql
把内置存储下载(Download)文件夹的oyamadb.sql文件还原到oyamadb数据库
(之前备份过的话把文件放到对应位置执行这个还原, 要建完数据库之后再还原)
psql oyamadb < ~/storage/downloads/oyamadb.sql
解决Android12~13因为杀进程导致Termux出现[Process completed (signal 9) - press Enter]
用数据线连PC并开启USB调试, PC需要装adb驱动 (应该可以用MiFlash的驱动)
然后PC下载platform-tools并解压
进去解压后的文件夹在地址栏输入cmd回车
Android13或12L执行这一行即可
adb shell "settings put global settings_enable_monitor_phantom_procs false"
Android12无谷歌服务执行这一行
adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647"
Android12有谷歌服务执行这一行
adb shell "/system/bin/device_config set_sync_disabled_for_tests persistent; /system/bin/device_config put activity_manager max_phantom_processes 2147483647"
执行完后把爪机重启
没PC的话可以尝试开启无线调试然后在分屏或窗口用Termux进行配对(不自带分屏或窗口可以用米窗, 用Shizuku激活它), 在Termux里输入
apt install android-tools -y
安装android-tools, 然后输入adb pair 127.0.0.1:某端口
配对, 输入六位配对码, 然后输入adb connect 127.0.0.1:某端口
连接, 然后执行上述命令Beta Was this translation helpful? Give feedback.
All reactions