UpdateFetch 的前端网页 updatefetchWeb ,功能介绍和使用说明,请前往 GitHub 项目主页查看。
项目地址: AhFeil/updatefetchWeb: 在网页上展示 UpdateFetch 下载的内容,方便使用。(github.com)
可以前往演示网页体验: UpdateFetch Web (vfly2.com)
适用系统:Debian 系发行版,包括 Ubuntu 和 Armbian,其他发行版按流程稍改命令一般也可。
走通预计时间:25 分钟
原生安装 updatefetchWeb
前置准备
推荐使用普通用户,这里假设用户名为 vfly2
,并在家目录下的 pythonServe
放置工作目录。
创建目录 /home/vfly2/pythonServe :
mkdir -p ~/pythonServe/ && cd ~/pythonServe/
拉取仓库(并创建备份和保存目录,这是必需的):
git clone https://git.ahfei.blog/ahfei/updatefetchWeb.git && \
cd updatefetchWeb && mkdir temp static # 创建临时目录和静态文件目录
安装环境和依赖( Python versions 3.8+ )
sudo apt update && sudo apt install python3 python3-pip python3-venv
确保开启端口
sudo ufw allow 7699 comment "updatefetchWeb"
安装
创建虚拟环境
python3 -m venv .env
激活虚拟环境
source .env/bin/activate
安装依赖的库
pip install -r requirements.txt
配置
vim updatefetchWeb/local_settings.py
根据注释自定义下面的配置文件
import os
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
DEBUG = True # 简单起见,这里开启 debug 模式。实际生产中,避免
# 添加自己的 ip 或域名,否则不能使用
ALLOWED_HOSTS = ['updatefetch.vfly2.com', 'localhost', '127.0.0.1', '185.47.128.73']
# 默认图片和版本名
undefined_image_url = 'https://ib.ahfei.blog:443/imagesbed/undefined_image_url_200-24-01-05.webp'
undefined_version = 'undefined version'
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'
# 网页暂存区还不完善,下面的内容保留不管即可
from upload.uploader import MinioUploader
upload_temporary_dir = "temp/"
up_app = "mc"
# 优先使用环境变量定义的值
minio_bucket_path = os.environ.get('MINIO_BUCKET_PATH', "your_minio_alias/upload")
minio_server = os.environ.get('MINIO_SERVER', "your_minio_ip:9000")
minio_uploader = MinioUploader(up_app, minio_bucket_path, minio_server)
初始化
创建数据库
python manage.py makemigrations homepage upload && python manage.py migrate
创建用户,请自行修改 username 和 email,运行命令后还需要输入密码
python manage.py createsuperuser \
--username vfly2updatefetch \
--email updatefetch@vfly2.com
运行(访问 ip:7699 查看是否正常)
gunicorn --bind 0.0.0.0:7699 updatefetchWeb.wsgi
水平有限,目前还需要去后台执行几个操作。
- 访问 ip:7699/admin
- 增加 Category,Title 填入
Uncategorized
即可,在 UpdateFetch 下载项配置里,未指定分类时,会放在这里。 - 增加 Category,手动创建其他的分类,比如 Server、Client,只有创建的分类才能在 UpdateFetch 下载项配置中使用。
- 增加 Token,否则 UpdateFetch 无权限上传信息,token 样式为 12719f3e356d96c47ed031645d411c23f4b219e1
然后在 UpdateFetch 的配置文件中,设置好 web 的 ip 和端口,以及 token 即可在下载后,更新 web 的信息
使用 Systemd 守护进程
sudo vim /lib/systemd/system/updatefetchWeb.service
根据实际情况,修改 WorkingDirectory、User、Group、ExecStart 这四个就可以了。
[Unit]
Description=UpdateFetchWeb Django App
After=network.target
[Service]
WorkingDirectory=/home/vfly2/pythonServe/updatefetchWeb # 修改为实际目录
User=vfly2 # 修改
Group=vfly2 # 修改
Type=simple
ExecStart=/home/vfly2/pythonServe/updatefetchWeb/.env/bin/gunicorn --bind 0.0.0.0:7699 updatefetchWeb.wsgi # 修改
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 updatefetchWeb
sudo systemctl status updatefetchWeb
sudo systemctl stop updatefetchWeb
sudo systemctl start updatefetchWeb
迁移
暂无
更新
先停止运行
sudo systemctl stop updatefetchWeb && cd ~/pythonServe/updatefetchWeb
在工作目录下,用 Git 拉取最新版本:
git pull
然后重启(如果报错,可能添加了依赖库,或者更改了下载项配置格式,前往主页查看修改)
sudo systemctl start updatefetchWeb
sleep 3
sudo systemctl status updatefetchWeb
Nginx 反代
在项目目录下,收集静态文件
.env/bin/python manage.py collectstatic
编辑 Nginx 配置文件
sudo vim /etc/nginx/sites-available/updatefetch
server {
listen 80;
server_name updatefetch.vfly2.com; # 更改为你的y域名
location / {
proxy_pass http://127.0.0.1:7699; # Gunicorn 服务地址和端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static {
alias /home/vfly2/pythonServe/updatefetchWeb/static; # 设置静态文件目录
}
}
启用这个配置文件
sudo ln -s /etc/nginx/sites-available/updatefetch /etc/nginx/sites-enabled/updatefetch
检查配置
sudo nginx -t
重启生效
sudo systemctl reload nginx
原文链接: https://yanh.tech/2024/03/deployment-process-of-updatefetchWeb/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@yanh.tech
接收新文章的推送,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。