低性能云服务器实用配置记录
服务器配置概览
最近买了一台阿里云 ECS 云服务器,很便宜,配置如下:
- CPU: 2 核(vCPU)
- 内存: 2 GiB
- 存储: 云盘40 GiB(2120 IOPS)
- 网络: 固定带宽 3M
配置极低,本文记录了在使用过程中遇到的各种问题和解决方案。
静态网站部署
我的静态网站通过 Jekyll 生成,static-web-server
本身是一个非常小的二进制文件,对资源要求极低,专为静态文件服务优化,整个方案对低配置服务器非常友好。网站静态文件位于主机上的 /root/waynexucn.github.io/_site
目录,将主机的 2222
端口映射到容器的 80
端口。
docker run --rm -d \
-p 2222:80 \
-v /root/waynexucn.github.io/_site:/public:z \
--name sws \
ghcr.io/static-web-server/static-web-server:2 \
-g info -d /public \
--page-fallback index.html \
--directory-listing false
定时重新编译
#!/bin/bash
# 加载 keychain(确保密钥可用)
if [ -f ~/.keychain/$(hostname)-sh ]; then
source ~/.keychain/$(hostname)-sh
fi
# 设置项目路径和分支名
PROJECT_DIR="/root/waynexucn.github.io"
BRANCH="master"
# 进入项目目录
cd "$PROJECT_DIR" || exit 1
# 获取远程最新信息
git fetch origin
# 检查是否有更新
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/$BRANCH)
if [ "$LOCAL" = "$REMOTE" ]; then
echo "当前已是最新版本,无需操作。"
exit 0
fi
echo "检测到更新,正在尝试拉取代码..."
# 先尝试普通合并(保留本地修改)
if git pull --no-rebase origin $BRANCH; then
echo "合并成功,代码已更新。"
else
echo "合并失败(可能存在冲突),正在强制重置到远程最新版本..."
git reset --hard origin/$BRANCH
git clean -fd
git pull origin $BRANCH
fi
# 启动容器
docker start waynexucngithubio-jekyll-1
# 等待容器进入运行状态(最多尝试 10 次,每次等待 2 秒)
max_retries=10
retry_count=0
while [ $retry_count -lt $max_retries ]; do
if [ "$(docker inspect -f '' waynexucngithubio-jekyll-1)" = "true" ]; then
echo "容器已启动,继续执行 Jekyll 编译..."
break
fi
echo "等待容器启动... ($((retry_count + 1))/$max_retries)"
sleep 2
((retry_count++))
done
if [ $retry_count -eq $max_retries ]; then
echo "错误:容器启动超时!"
exit 1
fi
# 执行 Jekyll 编译 (使用服务器特定配置)
echo "执行 Jekyll 编译 (使用 _config.yml 和 _config_server.yml)..."
docker exec waynexucngithubio-jekyll-1 bundle exec jekyll build --config _config.yml,_config_server.yml
# 停止容器
docker stop waynexucngithubio-jekyll-1
配置优化
pnpm 配置优化
由于内存和CPU限制,pnpm 在安装依赖时容易出现卡死现象,需要限制并发和重试参数:
# 限制并发数,避免内存不足
pnpm config set concurrency 2
# 禁用 pnpm 的自动锁文件更新,可以减少在安装时的磁盘 IO 负担
pnpm config set auto-install-peers=false
# 设置重试次数,提高网络不稳定时的成功率
pnpm config set fetch-retries 3
# 设置重试因子,增加重试间隔时间
pnpm config set fetch-retry-factor 2
# 设置网络超时时间
pnpm config set network-timeout 60000
Enjoy Reading This Article?
Here are some more articles you might like to read next: