15 私有链接
https://github.com/aria2/aria2/releases
apk add build-base git autoconf automake libtool pkgconf openssl-dev c-ares-dev libxml2-dev zlib-dev gnutls-dev sqlite-dev nettle-dev gmp-dev expat-dev bash
make clean
./configure \
--enable-libaria2 \
--with-openssl \
--with-sqlite3 \
--with-libxml2 \
--enable-static=yes \
LDFLAGS="-static"
make -j$(nproc)
make install
aria2.conf模板:
# 下载目录
dir=/var/lib/aria2/downloads
# 启用 RPC
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
rpc-listen-port=6800
# 保存会话
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
save-session-interval=60
# 下载设置
max-concurrent-downloads=5
split=16
continue=true
创建会话文件:
touch /etc/aria2/aria2.session
设置下载目录:
mkdir -p /var/lib/aria2/downloads
chown -R nobody:nobody /var/lib/aria2
创建服务文件/etc/init.d/aria2:
#!/sbin/openrc-run
description="Aria2 Daemon"
command="/usr/bin/aria2c"
command_args="--conf-path=/etc/aria2/aria2.conf --daemon=true"
pidfile="/run/aria2.pid"
start_stop_daemon_args="--chuid nobody:nobody"
设置可执行权限并添加到启动项:
chmod +x /etc/init.d/aria2
rc-update add aria2 default
rc-service aria2 start
rc-service aria2 status
#!/sbin/openrc-run
command="/service/alist/alist"
command_args="server"
name="alist"
description="AList file server"
directory="/service/alist"
depend() {
need net
}
start() {
ebegin "Starting AList"
# 检查 AList 是否已经在运行,如果运行则不启动
if pgrep -f "$command $command_args" > /dev/null; then
ebegin "AList is already running"
eend 0
else
# 确保在正确的目录下启动 AList
cd "$directory" && $command $command_args &
# 等待进程启动并确认是否启动成功
sleep 2
if pgrep -f "$command $command_args" > /dev/null; then
ebegin "AList is running"
eend 0
else
ebegin "AList failed to start"
tail -n 10 /var/log/messages
eend 1
fi
fi
}
stop() {
ebegin "Stopping AList"
# 使用 pkill 来终止 AList 进程
pkill -f "$command $command_args"
eend $?
}
restart() {
stop
start
}
首先,安装git和pnpm:
https://git-scm.com/downloads/win
https://github.com/git-for-windows/git/releases/download/v2.47.1.windows.1/Git-2.47.1-64-bit.exe
npm install -g pnpm
然后编译Alist的前端:
git clone --recurse-submodules https://github.com/alist-org/alist-web.git
pnpm install && pnpm build
或者直接下载编译好的前端:
https://github.com/AlistGo/alist-web
https://github.com/AlistGo/alist-web/releases/tag/3.41.0
然后下载Alist的源码放进AlpineLinux中编译(记得把前端放入./alist-3.41.0/public/dist/):
https://github.com/AlistGo/alist/releases
https://github.com/AlistGo/alist/archive/refs/tags/v3.41.0.tar.gz
tar -zxvf v3.41.0.tar.gz
cd ./alist-3.41.0/
正常编译命令:
appName="alist"
builtAt="$(date +'%F %T %z')"
goVersion=$(go version | sed 's/go version //')
gitAuthor=$(git show -s --format='format:%aN <%ae>' HEAD)
gitCommit=$(git log --pretty=format:"%h" -1)
version=$(git describe --long --tags --dirty --always)
webVersion=$(wget -qO- -t1 -T2 "https://api.github.com/repos/alist-org/alist-web/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
ldflags="\
-w -s \
-X 'github.com/alist-org/alist/v3/internal/conf.BuiltAt=$builtAt' \
-X 'github.com/alist-org/alist/v3/internal/conf.GoVersion=$goVersion' \
-X 'github.com/alist-org/alist/v3/internal/conf.GitAuthor=$gitAuthor' \
-X 'github.com/alist-org/alist/v3/internal/conf.GitCommit=$gitCommit' \
-X 'github.com/alist-org/alist/v3/internal/conf.Version=$version' \
-X 'github.com/alist-org/alist/v3/internal/conf.WebVersion=$webVersion' \
"
go build -ldflags="$ldflags" .
精简编译命令:
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -ldflags="-s -w" -trimpath
upx alist
frp official website
Parchive tool. Contribute to Yutaka-Sawada/MultiPar development by creating an account on GitHub.
PAR2
中国计算机技术职业资格网,软考入口
域名专场特惠,热门域名1元起
Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js
在线http,http,在线post,http post,get,在线http post/get/put请求测试工具,提供带cookie和header的请求,返回header,提供海外接口测试,文件测试
生成.crt和.key:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout YOUR_IP_ADDRESS.key -out YOUR_IP_ADDRESS.crt \
-subj "/CN=YOUR_IP_ADDRESS"
使用刚刚生成的两个文件,再生成.p12(不带密码),供用户导入:
openssl pkcs12 -export -out YOUR_IP_ADDRESS.p12 -inkey YOUR_IP_ADDRESS.key -in YOUR_IP_ADDRESS.crt -passout pass:
秀米,微信公众号排版和H5制作工具,海量模板素材和排版样式,强大的布局编辑功能,轻松制作公众号文章和H5,打动你的人群!
<?php
// 检查 Redis 扩展是否已加载
if (!extension_loaded('redis')) {
die("Redis extension is not loaded.");
}
try {
// 创建 Redis 客户端实例
$redis = new Redis();
// 连接到 Redis 服务器 (假设是本地服务器,默认端口 6379)
$redis->connect('127.0.0.1', 6379);
// 设置一个键值对
$redis->set("greeting", "Hello, Redis!");
// 获取并显示该值
$greeting = $redis->get("greeting");
echo "<p>Greeting from Redis: " . htmlspecialchars($greeting) . "</p>";
// 增加一个计数器
$redis->incr("counter");
$counter = $redis->get("counter");
echo "<p>Visit count: " . htmlspecialchars($counter) . "</p>";
// 删除键
$redis->del("greeting");
} catch (Exception $e) {
// 错误处理
echo "Could not connect to Redis: ", $e->getMessage();
}
?>
Redis 的持久化配置
打开 Redis 配置文件(AlpineLinux中位于 /etc/redis.conf),根据需要设置持久化选项:
# 启用 RDB 快照(例如每 5 分钟有 1 次更新时生成快照)
save 300 1
# 启用 AOF 持久化
appendonly yes
修改完配置文件后,重启 Redis 使配置生效:
rc-service redis restart
Redis 的跨 PHP 脚本共享
只要 Redis 服务在运行,所有连接到它的 PHP 脚本都可以共享数据。在其他 PHP 文件中,只需重复相同的 Redis 连接代码,即可访问 Redis 中的数据。
例如,在 other_script.php 中可以使用:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 读取之前设置的计数器
$counter = $redis->get("counter");
echo "Current visit count: " . htmlspecialchars($counter);
?>
将表格结构的数据存储在 Redis 中
1. 使用 Redis 哈希(Hash)类型
Redis 哈希类型可以用来存储类似行记录的数据,每一行是一个 Redis 哈希,每列是哈希的字段。
适用于单条记录的数据存储,且查询特定字段非常高效。
示例
假设有一张“用户表”,包含 id, name, 和 email 列:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 添加一个用户记录,key 为 "user:1"
$redis->hSet("user:1", "id", 1);
$redis->hSet("user:1", "name", "Alice");
$redis->hSet("user:1", "email", "alice@example.com");
// 获取用户记录
$user = $redis->hGetAll("user:1");
print_r($user);
?>
结果
Array
(
[id] => 1
[name] => Alice
[email] => alice@example.com
)
2. 使用 Redis 列表(List)类型
Redis 列表可以用来按顺序存储多行数据,例如多个用户的 id 列表。
可以用于模拟表中的一列,但没有字段标识,适合按顺序存取数据的场景。
示例
$redis->lPush("user_ids", 1);
$redis->lPush("user_ids", 2);
$redis->lPush("user_ids", 3);
$userIds = $redis->lRange("user_ids", 0, -1);
print_r($userIds);
3. 使用 Redis 集合(Set)和有序集合(Sorted Set)
集合(Set)适合无序、去重的数据列,适用于存储唯一的字段(如标签)。
有序集合(Sorted Set)适合存储排序数据,例如排行榜或按日期排序的数据。
示例
$redis->zAdd("user_scores", 100, "user:1");
$redis->zAdd("user_scores", 150, "user:2");
4. 将整张表序列化存储
如果需要存储复杂的表格数据,可以将整个表格序列化为 JSON 格式字符串,并存储到 Redis 中。
示例
$userData = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'],
];
$redis->set("users", json_encode($userData));
// 获取并解码
$decodedData = json_decode($redis->get("users"), true);
print_r($decodedData);
总结
Redis 哈希最适合存储类似数据库表的行记录。
JSON 序列化适合存储复杂的表格数据结构。
使用合适的数据类型可以让 Redis 更高效地管理和查询表格化数据。