# 银妆企业官网

长沙银妆文化发展有限公司官方网站。项目基于 Astro 5 + Node standalone adapter，包含品牌官网、产品轮播、响应式页面、银饰资讯内容后台、SEO、原子构建与 GitLab/Nginx 部署配置。

## 本地运行

```bash
npm install
npm run dev
```

- 官网开发地址：`http://localhost:4321/`
- 内容后台：`http://localhost:4321/admin/`

生产构建与本地服务：

```bash
npm run build
npm start
```

生产模式默认监听 `http://127.0.0.1:8790/`。

## 常用命令

```bash
npm run check   # Astro / TypeScript 检查
npm run build   # 带共享锁的原子生产构建
npm start       # 启动 standalone 服务
```

## 内容管理

银饰资讯使用 Markdown 存储，并由同端口 `/admin/` 后台管理。工作稿位于 `src/content/articles/`，线上稿位于 `src/content/published/`；生产环境可通过 `CMS_DATA_DIR` 将内容持久化到仓库外。发布、下架、删除和分类修改会触发带共享锁的静态页面重建。

完整后台与部署说明见 [CMS_README.md](./CMS_README.md)。

## 部署

- Astro standalone 输出：`dist/server/` 与 `dist/client/`
- GitLab CI：`.gitlab-ci.yml`
- Nginx 配置：`deploy/nginx/yinzhuang.conf`
- 生产端口：`8790`
- 站点域名：`www.inzung.cn`
- 服务器目录：`/root/yinzhuang/current`（唯一运行版本，实体目录）与 `/root/yinzhuang/shared`（持久化数据）

CI 使用单目录覆盖部署：停止本项目 PM2 进程，清空 `current`，导出当前 Git 提交，关联 `shared/.env`，安装依赖并构建，再启动应用、执行健康检查并更新 Nginx。该流程不创建或清理历史 release，也不提供自动回滚；安装和构建期间站点会短暂停机。

部署前请在服务器创建 `/root/yinzhuang/shared/.env`，替换 `CMS_PASSWORD`、`CMS_SECRET`、`CMS_API_KEY`，并确保 `CMS_DATA_DIR` 与 `CMS_BUILD_LOCK` 都指向 `shared/` 内。上传文件、CMS/数据库数据、构建锁及其他运行期生成的数据不得存放在 `current`。详细迁移和服务器配置见 [CMS_README.md](./CMS_README.md)。
