外观
3.1 目录结构规划
约 451 字
缓存静态资源
本页对应「三、操作步骤」的 3.1,完成目录结构规划。返回上级:静态资源与缓存配置说明。
前置条件
- /srv/axis/www 已存在,deploy 账号具备写权限。
- Nginx 以 www-data 运行,站点 root 可调整。
- 已明确发布产物的目录形态,包含 assets 与 index.html。
操作步骤
- 建立按版本发布的目录结构。
sudo install -d -m 755 -o deploy -g www-data /srv/axis/www/releases
sudo install -d -m 755 -o deploy -g www-data /srv/axis/www/shared
ls -ld /srv/axis/www/releases /srv/axis/www/shared- 按时间戳落地一次发布产物。
STAMP=$(date +%Y%m%d%H%M)
sudo -u deploy mkdir -p /srv/axis/www/releases/$STAMP
sudo rsync -a --delete dist/ /srv/axis/www/releases/$STAMP/
ls -l /srv/axis/www/releases/$STAMP- 用软链切换,保证更新是原子操作。
sudo -u deploy ln -sfn /srv/axis/www/releases/$STAMP /srv/axis/www/current
ls -l /srv/axis/www/current- 把 Nginx 的 root 指向 current,编辑站点配置:
root /srv/axis/www/current;- 修正权限:目录需要执行位才能被遍历,文件只需读权限。
sudo find /srv/axis/www/releases/$STAMP -type d -exec chmod 755 {} \;
sudo find /srv/axis/www/releases/$STAMP -type f -exec chmod 644 {} \;
sudo chown -R deploy:www-data /srv/axis/www/releases/$STAMP
namei -l /srv/axis/www/current/index.html结果确认
ls -l /srv/axis/www/current显示指向 releases 下的时间戳目录,而非普通目录。namei -l逐级输出中每一层都有 x 权限,无问号或空权限。curl -sS -o /dev/null -w '%{http_code}\n' -H 'Host: example.com' http://127.0.0.1/返回 200。- releases 下至少保留两个版本目录,可快速回退。
注意事项
- 用
ln -sfn覆盖软链,不要先删后建,避免切换瞬间出现 404。 - 构建产物不要包含 sourcemap 与源码,除非明确需要线上调试。
- 发布账号只授予 releases 与 current 的写权限,不要给整个站点目录。
- 切换后旧版本先保留,确认无 404 再清理。