- 部署前准备
- 系统要求
- 检查清单
- 服务器配置
- Nginx 配置
- Apache 配置
- PHP-FPM 配置
- 应用部署
- 1. 克隆代码
- 2. 安装依赖
- 安装 Composer 依赖
- 安装 Node.js 依赖(如果使用 Vue3)
- 3. 配置环境
- 复制环境配置文件
- 编辑环境变量
- 4. 生成密钥
- 如果需要应用密钥
- 5. 运行迁移
- 运行数据库迁移
- 运行种子数据(可选)
- 6. 优化应用
- 生成路由缓存
- 生成配置缓存(如果支持)
- 注意:配置缓存由 Config 类在生产环境自动处理,不需要 config:cache 命令
- php console route:cache # 只需要缓存路由
- 编译视图(如果支持)
- 7. 设置权限
- 设置存储目录权限
- 设置文件所有者
- 环境配置
- .env 文件
- 应用环境
- 数据库配置
- 缓存配置
- 队列配置
- JWT 配置
- 安全配置
- ✅ 推荐:使用强密钥
- ✅ 推荐:禁用调试
- ✅ 推荐:使用 HTTPS
- 性能优化
- OPcache 配置
- 路由缓存
- 生成路由缓存
- 清除路由缓存
- 视图缓存
- 队列 Worker
- 使用 Supervisor
- /etc/supervisor/conf.d/queue-worker.conf
- 启动 Supervisor
- 重新加载配置
- 启动 Worker
- 查看状态
- 任务调度
- Cron 配置
- 编辑 crontab
- 添加以下行(每分钟执行一次)
- 监控和维护
- 日志监控
- 查看应用日志
- 查看错误日志
- 查看队列日志
- 性能监控
- 使用系统监控工具
- 备份
- 备份数据库
- 备份文件
- 更新部署
- 1. 拉取最新代码
- 2. 安装依赖
- 3. 运行迁移
- 4. 清除缓存
- 注意:配置缓存由 Config 类自动处理,不需要 config:clear 命令
- php console route:clear # 只需要清除路由缓存
- 5. 重新生成缓存
- 6. 重启服务
- 安全配置
- 文件权限
- 设置正确的文件权限
- 存储和缓存目录
- HTTPS 配置
- Nginx HTTPS 配置
- SSL 配置
- 防火墙
- 配置防火墙
- 常见问题
- Q: 部署后出现 500 错误?
- Q: 如何查看部署日志?
- Q: 如何回滚部署?
- Q: 队列 Worker 不工作?
- Q: 如何优化部署速度?
- 相关文档
部署指南
最后更新: 2026-01-27 11:02:47部署指南
本文档提供了 Unicode Framework 在生产环境的部署指南。
部署前准备
系统要求
- PHP >= 8.1
- Composer
- Web 服务器(Nginx/Apache)
- 数据库(MySQL/PostgreSQL/SQLite)
- Redis(可选,用于缓存和队列)
- [ ] PHP 版本 >= 8.1
- [ ] 必需的 PHP 扩展已安装
- [ ] Composer 已安装
- [ ] 数据库已创建
- [ ] 环境变量已配置
- [ ] 文件权限已设置
检查清单
服务器配置
Nginx 配置
server {
listen 80;
server_name example.com;
root /path/to/project/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\. {
deny all;
}
}
Apache 配置
<VirtualHost *:80>
ServerName example.com
DocumentRoot /path/to/project/public
<Directory /path/to/project/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
PHP-FPM 配置
; php-fpm.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
应用部署
1. 克隆代码
git clone https://github.com/your-repo/framework.git
cd framework
2. 安装依赖
<h1 id="安装-composer-依赖">安装 Composer 依赖</h1>
composer install --no-dev --optimize-autoloader
<h1 id="安装-nodejs-依赖如果使用-vue3">安装 Node.js 依赖(如果使用 Vue3)</h1>
npm install --production
3. 配置环境
<h1 id="复制环境配置文件">复制环境配置文件</h1>
cp .env.example .env
<h1 id="编辑环境变量">编辑环境变量</h1>
nano .env
4. 生成密钥
<h1 id="如果需要应用密钥">如果需要应用密钥</h1>
php console key:generate
5. 运行迁移
<h1 id="运行数据库迁移">运行数据库迁移</h1>
php console migrate
<h1 id="运行种子数据可选">运行种子数据(可选)</h1>
php console db:seed
6. 优化应用
<h1 id="生成路由缓存">生成路由缓存</h1>
php console route:cache
<h1 id="生成配置缓存如果支持">生成配置缓存(如果支持)</h1>
<h1 id="注意配置缓存由-config-类在生产环境自动处理不需要-configcache-命令">注意:配置缓存由 Config 类在生产环境自动处理,不需要 config:cache 命令</h1>
<h1 id="php-console-routecache-只需要缓存路由">php console route:cache # 只需要缓存路由</h1>
<h1 id="编译视图如果支持">编译视图(如果支持)</h1>
php console view:compile
7. 设置权限
<h1 id="设置存储目录权限">设置存储目录权限</h1>
chmod -R 775 storage
chmod -R 775 bootstrap/cache
<h1 id="设置文件所有者">设置文件所有者</h1>
chown -R www-data:www-data storage
chown -R www-data:www-data bootstrap/cache
环境配置
.env 文件
<h1 id="应用环境">应用环境</h1>
APP_ENV=production
APP_DEBUG=false
<h1 id="数据库配置">数据库配置</h1>
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_password
<h1 id="缓存配置">缓存配置</h1>
CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
<h1 id="队列配置">队列配置</h1>
QUEUE_CONNECTION=database
<h1 id="jwt-配置">JWT 配置</h1>
JWT_SECRET=your-secret-key
安全配置
<h1 id="推荐使用强密钥">✅ 推荐:使用强密钥</h1>
JWT_SECRET=your-very-long-and-random-secret-key
<h1 id="推荐禁用调试">✅ 推荐:禁用调试</h1>
APP_DEBUG=false
<h1 id="推荐使用-https">✅ 推荐:使用 HTTPS</h1>
APP_URL=https://example.com
性能优化
OPcache 配置
; php.ini
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0
路由缓存
<h1 id="生成路由缓存">生成路由缓存</h1>
php console route:cache
<h1 id="清除路由缓存">清除路由缓存</h1>
php console route:clear
视图缓存
// config/view.php
return [
'engines' => [
'smarty' => [
'caching' => true,
'cache_lifetime' => 3600,
],
],
];
队列 Worker
使用 Supervisor
<h1 id="etcsupervisorconfdqueue-workerconf">/etc/supervisor/conf.d/queue-worker.conf</h1>
[program:queue-worker]
command=php /path/to/project/console queue:work --sleep=3 --tries=3
directory=/path/to/project
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/path/to/project/storage/logs/queue-worker.log
启动 Supervisor
<h1 id="重新加载配置">重新加载配置</h1>
sudo supervisorctl reread
sudo supervisorctl update
<h1 id="启动-worker">启动 Worker</h1>
sudo supervisorctl start queue-worker:*
<h1 id="查看状态">查看状态</h1>
sudo supervisorctl status
任务调度
Cron 配置
<h1 id="编辑-crontab">编辑 crontab</h1>
crontab -e
<h1 id="添加以下行每分钟执行一次">添加以下行(每分钟执行一次)</h1>
* cd /path/to/project && php console schedule:run >> /dev/null 2>&1
监控和维护
日志监控
<h1 id="查看应用日志">查看应用日志</h1>
tail -f storage/logs/app.log
<h1 id="查看错误日志">查看错误日志</h1>
tail -f storage/logs/error.log
<h1 id="查看队列日志">查看队列日志</h1>
tail -f storage/logs/queue-worker.log
性能监控
<h1 id="使用系统监控工具">使用系统监控工具</h1>
htop
iotop
netstat -tulpn
备份
<h1 id="备份数据库">备份数据库</h1>
mysqldump -u username -p database_name > backup.sql
<h1 id="备份文件">备份文件</h1>
tar -czf backup-$(date +%Y%m%d).tar.gz storage/ bootstrap/cache/
更新部署
<h1 id="1-拉取最新代码">1. 拉取最新代码</h1>
git pull origin main
<h1 id="2-安装依赖">2. 安装依赖</h1>
composer install --no-dev --optimize-autoloader
<h1 id="3-运行迁移">3. 运行迁移</h1>
php console migrate
<h1 id="4-清除缓存">4. 清除缓存</h1>
php console route:clear
<h1 id="注意配置缓存由-config-类自动处理不需要-configclear-命令">注意:配置缓存由 Config 类自动处理,不需要 config:clear 命令</h1>
<h1 id="php-console-routeclear-只需要清除路由缓存">php console route:clear # 只需要清除路由缓存</h1>
<h1 id="5-重新生成缓存">5. 重新生成缓存</h1>
php console route:cache
<h1 id="6-重启服务">6. 重启服务</h1>
sudo supervisorctl restart queue-worker:*
sudo systemctl restart php8.1-fpm
安全配置
文件权限
<h1 id="设置正确的文件权限">设置正确的文件权限</h1>
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
<h1 id="存储和缓存目录">存储和缓存目录</h1>
chmod -R 775 storage bootstrap/cache
HTTPS 配置
<h1 id="nginx-https-配置">Nginx HTTPS 配置</h1>
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# SSL 配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
防火墙
<h1 id="配置防火墙">配置防火墙</h1>
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
常见问题
Q: 部署后出现 500 错误?
A: 检查:
.env 文件是否配置正确Q: 如何查看部署日志?
A: 查看 storage/logs/ 目录下的日志文件。
Q: 如何回滚部署?
A: 使用 Git 回滚到上一个版本,然后重新部署。
Q: 队列 Worker 不工作?
A: 检查 Supervisor 配置和状态,查看队列日志。
Q: 如何优化部署速度?
A: 使用 CI/CD 自动化部署,使用部署脚本。