Alpine Linux 是轻量服务器的最佳选择之一:整个系统装完不到 1G 内存,包管理简单,跑个 DNS/博客服务绰绰有余。这篇把我初始化 Alpine 服务器的完整清单整理出来,照着抄就行。
一、换国内源(加速 apk)
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com\/alpine/g' /etc/apk/repositories
apk update如果默认仓库缺 community 源,手动加一行(v3.20 对应你的版本)。
二、时钟同步(最容易忽略)
重要:云服务器初始时间可能错得离谱,而 TLS 证书验证、日志时间戳全依赖它。
apk add chrony
rc-service chronyd start
rc-update add chronyd default
date # 确认时间正确三、Nginx
apk add nginx nginx-mod-stream nginx-openrc
# 站点配置放 /etc/nginx/http.d/xxx.conf
# 注意删掉默认的 default.conf,避免 80 端口冲突
rc-service nginx start
rc-update add nginx default做 443 分流时记得装 nginx-mod-stream(stream 模块做 TCP 转发用)。
四、PHP(Typecho 等博客用)
apk add php83 php-fpm php-pdo_sqlite php-simplexml php-mbstring \
php-json php-curl php-openssl php-dom php-gd php-iconv php-ctype \
php-bcmath php-tokenizer
# Alpine 的服务名是 php-fpm83
rc-service php-fpm83 start
rc-update add php-fpm83 defaultphp-tokenizer 必须装:Typecho 的 butterfly 主题调用 token_get_all,缺了直接 500 报错,排查了老半天才找到。
Nginx 的 fastcgi 块里记得传 host 参数:
fastcgi_param HTTP_HOST $host;
fastcgi_param host $host;Typecho 读的是小写 host,不传会报 Undefined array key。
五、安全组
云控制台的安全组要放行实际用到的端口:22(SSH)、80/443(Web)、53/853(DNS)等。853/tcp 记得单独放行,很多教程只放 22 和 80,DNS 服务怎么都连不上。
六、开机自启检查
rc-update show | grep -E "nginx|php|chrony"三个服务都出现在 default 里,重启后自动拉起,初始化才算完成。
Alpine 的精髓就是"少即是多":装什么、开什么,心里都有数,出了问题也容易排查。