UpdateFetch 的功能介绍和使用说明,请前往 GitHub 项目主页查看。
项目地址: AhFeil/UpdateFetch: 定期检查和下载软件的最新版,方便在特殊网络环境中分享、下载软件 (github.com)
可以前往演示网页体验: UpdateFetch Web (vfly2.com)
适用系统:Debian 系发行版,包括 Ubuntu 和 Armbian,其他发行版按流程稍改命令一般也可。
走通预计时间:25 分钟
原生安装 UpdateFetch
需要先安装 MinIO Server 和它的客户端 mc,因为当前在程序下载后,需要使用 mc 将文件上传到 MinIO 。UpdateFetch 和 mc 要在一台机器上,MinIO Server 可以在任何机器安装。
MinIO Server 和 mc 的安装和使用: 自建 对象存储 – 构建高效可靠的数据存储系统 – 技焉洲 (vfly2.com) ,另外,安装好后,
- MinIO Server 创建一个桶,比如名称为 updatefetch,简单起见 Access Policy 就设置为 Public
- mc 添加好服务端,这里别名就使用 uf:
mc alias set uf http://127.0.0.1:9000 vfly2 pass_vfly2_word
前置准备
推荐使用普通用户,这里假设用户名为 vfly2
,并在家目录下的 pythonServe
放置工作目录。
创建目录 /home/vfly2/pythonServe :
mkdir -p ~/pythonServe/ && cd ~/pythonServe/
拉取仓库(并创建备份和保存目录,这是必需的):
git clone https://github.com/AhFeil/UpdateFetch.git && \
cd UpdateFetch && mkdir temp_download config_and_data_files # 创建配置目录和临时下载目录
安装环境和依赖( Python versions 3.8+ )
sudo apt update && sudo apt install python3 python3-pip python3-venv
安装
创建虚拟环境
python3 -m venv .env
激活虚拟环境
source .env/bin/activate
安装依赖的库
pip install -r requirements.txt
配置
根据注释自定义下面的配置文件,然后复制一键即可保存到机器上
cat > config_and_data_files/config.yaml << EOF
---
is_production: true
curl_path: curl # curl 二进制程序的路径
minio_server: 185.47.128.73:9000 # minio 服务端的 API 地址,必须是这种形式,可以用域名,但不能带 http
minio_client_path: mc # mc 二进制程序的路径
minio_host_alias: uf # mc 添加主机时的 ALIAS
bucket: updatefetch # mc 上传时,要放到哪个 bucket
# 与 UpdateFetchWeb 相关的,若还未安装 UpdateFetchWeb,删除下面所有的,不影响本程序自身功能
web_domain: http://185.149.146.103:7699/ # 最后必须带 /
web_Token: Token b8xxxxxxxxxxxxxxxxxxxxxxxxx40f142
category_default_title: Uncategorized # 这个必须填
## 下面是默认图片和项目主页,可删除
default_image: https://ib.ahfei.blog:443/imagesbed/undefined_image_url_200-24-01-05.webp
default_website: https://github.com/AhFeil/updatefetchWeb
EOF
使用
编写下载项配置文件
vim config_and_data_files/items.yaml
完整说明前往项目的 GitHub 主页查看。(第一次可以直接复制,先走通再编写自己的)
xray_binary:
name: xray
category_title: Server
image: https://ib.ahfei.blog/imagesbed/xray_logo_cpd-24-01-03.webp
website: github
project_name: XTLS/Xray-core
sample_url: ~/${tag}/Xray-${system}-${ARCHITECTURE}${suffix_name}
system:
windows: [windows, .zip]
linux: [linux, .zip]
architecture:
arm64: arm64-v8a
amd64: '64'
先运行一下,测试是否正常工作
python update_fetch.py
运行完成后,可以前往 MinIO 后台,查看是否成功下载。
这些文件的下载链接,可以在
config_and_data_files/latest_link.json
看到。当然,这样子根本谈不上使用体验,需要配合前端 UpdateFetchWeb 才具有真正的使用价值。
使用 Systemd 守护进程
本项目使用 schedule 库来每天 02:30 执行一次,这段定时运行代码在 run_as_scheduled.py 中。
sudo vim /lib/systemd/system/updatefetch.service
根据实际情况,修改 WorkingDirectory、User、Group、ExecStart 这四个就可以了。
[Unit]
Description=updatefetch App
After=network.target
[Service]
WorkingDirectory=/home/vfly2/pythonServe/updatefetch # 修改为实际目录
User=vfly2 # 修改
Group=vfly2 # 修改
Type=simple
ExecStart=/home/vfly2/pythonServe/updatefetch/.env/bin/python /home/vfly2/pythonServe/updatefetch/run_as_scheduled.py # 修改
ExecStop=/bin/kill -s HUP $MAINPID
Environment=PYTHONUNBUFFERED=1
RestartSec=15
Restart=on-failure
[Install]
WantedBy=default.target
sudo systemctl daemon-reload
sudo systemctl enable --now updatefetch
sudo systemctl status updatefetch
sudo systemctl stop updatefetch
sudo systemctl start updatefetch
迁移
在新机器走完上面的安装流程后,只需要转移 config_and_data_files 目录,就与旧机器一致了
更新
先停止运行
sudo systemctl stop updatefetch && cd ~/pythonServe/updatefetch
在工作目录下,用 Git 拉取最新版本:
git pull
然后重启(如果报错,可能添加了依赖库,或者更改了下载项配置格式,前往主页查看修改)
sudo systemctl start updatefetch
sleep 3
sudo systemctl status updatefetch
原文链接: https://yanh.tech/2024/02/deployment-process-of-updatefetch/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@yanh.tech
接收新文章的推送,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。