SuperAPI AI 工具集

linux-site-deployment

部署与运维

查看项目

更新于 10-16 08:04

技能介绍

用途:把静态站、PHP 应用、Astro 静态站或 Astro+PHP 混合站部署到已存在的 Nginx/Apache 主机,覆盖克隆、构建、配置虚拟主机、签发 TLS、启用站点、验证与注册更新流程。服务器尚未初始化时不用本技能(改用 linux-server-provisioning),纯粹排查通用 Web 栈问题也不适用(改用 linux-webstack)。

主要能力:区分 Debian/Ubuntu 与 RHEL 系(Fedora、RHEL、CentOS Stream、Rocky、Alma、Oracle)。Debian 用 a2ensite + reload 启用 Apache vhost,Web 用户为 www-data:www-data;RHEL 系把 .conf 放入 /etc/httpd/conf.d/ 并 reload,Web 用户为 apache,且自定义 docroot 需设 SELinux 上下文,否则即使 Unix 权限正确也会返回 403: sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/example(/.)?" && sudo restorecon -Rv /var/www/example 防火墙分别用 ufw 或 firewall-cmd 开放 80/443。

必要用法(8 步):1 克隆仓库到 /var/www/html 或 /var/www;2 构建(静态/混合站)如 sudo npm install --production && sudo npm run build,混合站再加 sudo composer install --no-dev;3 创建 Nginx 配置 /etc/nginx/sites-available/<domain>.conf;4 软链到 sites-enabled;5 必须 sudo nginx -t && sudo systemctl reload nginx 后才可继续;6 sudo certbot --nginx -d <domain> 签发 TLS;7 PHP/混合站在 Apache 配置并 a2ensite、configtest、reload;8 必须把站点注册进 /usr/local/bin/update-all-repos,条目格式为 "Display Name|/path/to/repo|build command"。验证可用 curl -sI https://<domain> 与 sudo certbot certificates。

适用场景:新增站点、混合站部署、发布时签发证书并纳入仓库更新流程。发布需明确版本、密钥来源、DNS/TLS 归属、健康检查、回滚点与切换授权;缺失时应停在预检或构建阶段。

限制与反模式:不在实时 docroot 直接构建,应构建版本化 release 后切换;不把密钥放入仓库或 Web 根;忽略 SELinux 标注会导致 403;不得跳过 nginx -t 直接 reload。本地 200 不等于部署成功,需验证 DNS、TLS、重定向、资源与后端。可选 sk-* 脚本为同一流程的封装,非必需。