部署上线
从本地到服务器:目录上传、Nginx 完整配置、双入口形态、HTTPS、权限、迁移、备份与升级,一次做对。
约 10 分钟
上线
代码块右上角可一键复制
本页目录(10 分钟读完)
这一章把站点搬到服务器。
出错 → 看 排错手册。
怎么查环境#
先在本地跑一遍,能早发现九成问题。
php aucms env:check| 项 | 要求 |
|---|---|
| PHP | ≥ 7.2 |
| 扩展 | pdo mbstring json openssl |
| 数据库 | MySQL 或 SQLite |
| Web | Nginx 或 Apache |
怎么打包上传#
要传的:程序全部文件和 data/。
不传的:缓存、日志、开发工具。
# 本地打包,排除不用的
zip -r aucms.zip . \
-x "runtime/*" \
-x ".workbuddy/*" \
-x ".git/*" \
-x "data/plugin_config/*"- 把 zip 传到服务器站点目录
- 解压
- 确认
data/secret.key在
unzip aucms.zip -d /www/wwwroot/example.com
ls -l /www/wwwroot/example.com/data/secret.key传完就报错? → 看 排错手册
怎么配目录权限#
- 进站点目录
- 复制下面三行
- 依次执行
chown -R www:www .
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod -R 775 runtime data不要用 777,那是挂马的起点。
怎么写 Nginx 入口#
根目录模式,宝塔新建站点后照这个填。
server {
listen 80;
server_name example.com;
root /www/wwwroot/example.com;
index index.php;
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}改完点「保存」,再点「重载配置」。
怎么开伪静态#
作用:网址变好看,/article/1 → /article/1.html
步骤:
- 登录后台
/admin - 左侧点「系统设置」
- 找到「链接形态」
- 选「伪静态」
- 点「保存」
复制这 3 行 → 贴到宝塔「网站 → 伪静态」→ 保存:
location / {
try_files $uri /index.php?$query_string;
}效果:
| 原来 | 现在 |
|---|---|
| /list/news?page=2 | /list/news/page/2 |
| /article/123 | /article/123.html |
打不开? → 看 排错手册
安全规则#
禁止直接访问核心目录。
宝塔:网站 → 设置 → 配置文件。
复制下面规则,贴进 server { }。
location ^~ /app/ { deny all; }
location ^~ /core/ { deny all; }
location ^~ /config/ { deny all; }
location ^~ /data/ { deny all; }
location ^~ /docs/ { deny all; }
location ^~ /lang/ { deny all; }
location ^~ /tests/ { deny all; }随包还有一份完整规则:.workbuddy/deploy/00-security.conf。
整份贴进配置文件即可,别两处重复写。
怎么用隔离模式#
运行目录指到 public/,更安全。
- 打开 Nginx 站点配置
- 把
root改成.../public - 补三段 alias
- 保存并重载
root /www/wwwroot/example.com/public;
location ^~ /view/ {
alias /www/wwwroot/example.com/view/;
location ~* \.(css|js|png|jpe?g|gif|webp|svg|woff2?|ttf)$ { }
location ~* \.html$ { deny all; }
}
location ^~ /runtime/upload/ {
alias /www/wwwroot/example.com/runtime/upload/;
}
location ^~ /plugin/ {
alias /www/wwwroot/example.com/plugin/;
location ~ ^/plugin/[^/]+/(src|view|lang)/ { deny all; }
location ~ \.(php|json)$ { deny all; }
}/view/ 只放行静态文件,不要整目录放行。
怎么装新站#
- 浏览器打开域名
- 按向导走五步
- 装完跑收尾命令
mv install /root/aucms-install-backup
php aucms db:index
php aucms cache:rebuild
php aucms env:check怎么从旧服务器搬过来#
搬家要做的事比较多:备份、传文件、改数据库连接、换域名、清缓存、验收。
→ 完整步骤看 搬家与换域名
这里只提醒最容易漏的一件:
data/secret.key 一定要带上。
丢了它,加密过的数据全都解不开。搬完检查首页、栏目页、详情页、后台、图片。
搬完全 404? → 看 排错手册
怎么上 HTTPS#
- 先在宝塔申请证书
- 打开站点配置
- 贴入下面配置
- 保存并重载
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /www/server/panel/vhost/cert/example.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}上 HTTPS 后,到系统设置改站点地址为 https。
怎么备份#
每天定时跑,复制就能用。
#!/bin/bash
# /root/backup-aucms.sh
TS=$(date +%F)
DIR=/www/wwwroot/example.com
OUT=/root/backup/$TS
mkdir -p $OUT
mysqldump -u 用户 -p密码 库名 --single-transaction --quick | gzip > $OUT/db.sql.gz
tar czf $OUT/files.tar.gz -C $DIR --exclude=runtime/cache --exclude=runtime/log .
cp $DIR/data/secret.key $OUT/secret.key
find /root/backup -maxdepth 1 -type d -mtime +14 -exec rm -rf {} \;加进定时任务。
0 3 * * * /bin/bash /root/backup-aucms.sh备份要先恢复一次,能起来才算数。
怎么升级#
- 先备份
- 覆盖程序文件
- 跑升级命令
- 再自检
php aucms db:install
php aucms db:index
php aucms cache:rebuild
php aucms env:check永远不要覆盖这三个目录:data/、runtime/、你的主题目录。
怎么自检#
全部 200 才算通。
BASE=https://你的域名
for u in / /list/news /article/1.html /sitemap.xml /robots.txt /admin/login \
/view/default/static/css/style.css; do
printf "%-42s %s\n" "$u" "$(curl -s -o /dev/null -w '%{http_code}' $BASE$u)"
done下面这些必须是 403 或 404。
BASE=https://你的域名
for u in /data/secret.key /core/Bootstrap.php /config/app.php \
/view/default/layout.html /runtime/log/; do
printf "%-42s %s\n" "$u" "$(curl -s -o /dev/null -w '%{http_code}' $BASE$u)"
done对不上? → 看 排错手册
没找到答案?
在后台「缓存与维护 → 系统体检」里看环境是否正常;仍无解就打开
server_debug.php 复现一次,页面会直接告诉你异常文件与行号。