低性能云服务器实用配置记录

服务器配置概览

最近买了一台阿里云 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:

  • 部署用于学术研究的 Linux 服务器
  • 工作环境系统实用配置记录
  • Conda-Pyenv-Poetry 多轨管理 Python 环境
  • Linux 实用配置记录
  • Python 项目中高效管理路径的范式