This commit is contained in:
2026-03-09 22:59:24 +08:00
parent 914b914deb
commit b10780a1be
2 changed files with 1230 additions and 0 deletions

390
PHP项目部署说明.md Normal file
View File

@@ -0,0 +1,390 @@
# PHP 项目部署说明文档
## 一、PHP 与 Java 部署方式的本质区别
### 1.1 Java 项目(如 Spring Boot
```
Java 应用 = 自带 Web 服务器
┌─────────────────────────┐
│ your-app.jar │
│ ┌───────────────────┐ │
│ │ 业务代码 │ │
│ ├───────────────────┤ │
│ │ 内置 Tomcat │ │ ← 自带 Web 服务器
│ │ (监听 8080 端口) │ │
│ └───────────────────┘ │
└─────────────────────────┘
运行方式:
$ java -jar your-app.jar
# 应用自己监听端口,直接处理 HTTP 请求
```
**特点:**
- JAR 包内置了 Web 服务器Tomcat/Jetty/Undertow
- 独立运行,不需要外部 Web 服务器
- 直接监听端口(如 8080
- 一个命令启动:`java -jar app.jar`
---
### 1.2 PHP 项目(如 ThinkPHP
```
PHP 应用 = 需要外部 Web 服务器
┌──────────────────────────────────┐
│ Web 服务器 (Nginx/Apache) │
│ ┌────────────────────────────┐ │
│ │ 监听 80/443 端口 │ │
│ │ 处理 HTTP 请求 │ │
│ │ ↓ │ │
│ │ 转发给 PHP 解释器 │ │
│ └────────────────────────────┘ │
└──────────────────────────────────┘
┌──────────────────────────────────┐
│ PHP-FPM (PHP 解释器) │
│ ┌────────────────────────────┐ │
│ │ 执行 PHP 代码 │ │
│ │ 返回结果 │ │
│ └────────────────────────────┘ │
└──────────────────────────────────┘
┌──────────────────────────────────┐
│ 你的 PHP 代码 (ThinkPHP) │
│ - index.php │
│ - 业务逻辑 │
└──────────────────────────────────┘
```
**特点:**
- PHP 代码本身不能直接运行
- 需要 Web 服务器Nginx/Apache接收 HTTP 请求
- 需要 PHP 解释器PHP-FPM执行代码
- 三层架构Web 服务器 → PHP 解释器 → 你的代码
---
## 二、为什么 PHP 需要 Nginx/Apache
### 2.1 PHP 的运行机制
PHP 是**脚本语言**,不是编译型语言:
```php
// index.php - 这只是文本文件
<?php
echo "Hello World";
?>
```
这个文件**不能直接运行**,需要:
1. **Web 服务器**监听 80 端口,接收 HTTP 请求
2. **PHP 解释器**读取 .php 文件,执行代码
3. 返回结果给 Web 服务器
4. Web 服务器返回给客户端
### 2.2 完整请求流程
```
用户浏览器
↓ HTTP 请求
↓ http://your-domain.com/api/user/login
┌─────────────────────────────────────┐
│ Nginx (监听 80 端口) │
│ - 接收 HTTP 请求 │
│ - 处理静态文件 (CSS/JS/图片) │
│ - 转发 PHP 请求给 PHP-FPM │
└─────────────────────────────────────┘
↓ FastCGI 协议
┌─────────────────────────────────────┐
│ PHP-FPM (监听 9000 端口) │
│ - 接收 Nginx 转发的请求 │
│ - 执行 PHP 代码 │
│ - 连接数据库 │
│ - 返回执行结果 │
└─────────────────────────────────────┘
↓ 执行
┌─────────────────────────────────────┐
│ 你的 ThinkPHP 项目 │
│ /back/public/index.php │
│ /back/application/api/controller/ │
└─────────────────────────────────────┘
```
---
## 三、两种部署方案对比
### 3.1 方案一Apache + mod_php
```
Apache 服务器
├── 内置 PHP 模块 (mod_php)
├── 直接执行 PHP 代码
└── 配置简单,但性能较低
```
**优点:**
- 配置简单,.htaccess 自动生效
- 适合小型项目、虚拟主机
**缺点:**
- 性能较低
- 每个 Apache 进程都加载 PHP 模块(占内存)
**你的项目已有配置:**
```apache
# back/public/.htaccess
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
```
---
### 3.2 方案二Nginx + PHP-FPM推荐
```
Nginx (Web 服务器)
↓ FastCGI
PHP-FPM (PHP 进程管理器)
你的 PHP 代码
```
**优点:**
- 高性能,适合生产环境
- Nginx 处理静态文件速度快
- PHP-FPM 独立管理 PHP 进程
**缺点:**
- 配置稍复杂
- 需要单独安装 PHP-FPM
---
## 四、实际部署步骤
### 4.1 使用 Apache简单方式
```bash
# 1. 安装 Apache 和 PHP
sudo apt install apache2 php libapache2-mod-php php-mysql
# 2. 启用 mod_rewrite
sudo a2enmod rewrite
# 3. 配置虚拟主机
sudo nano /etc/apache2/sites-available/your-site.conf
```
```apache
<VirtualHost *:80>
ServerName your-domain.com
DocumentRoot /var/www/back/public
<Directory /var/www/back/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```
```bash
# 4. 启用站点并重启
sudo a2ensite your-site.conf
sudo systemctl restart apache2
# 5. 设置权限
sudo chown -R www-data:www-data /var/www/back
sudo chmod -R 755 /var/www/back
sudo chmod -R 777 /var/www/back/runtime
```
---
### 4.2 使用 Nginx + PHP-FPM推荐
```bash
# 1. 安装 Nginx 和 PHP-FPM
sudo apt install nginx php-fpm php-mysql php-mbstring php-curl
# 2. 配置 Nginx
sudo nano /etc/nginx/sites-available/your-site
```
```nginx
server {
listen 80;
server_name your-domain.com;
root /var/www/back/public;
index index.php index.html;
# 访问日志
access_log /var/log/nginx/your-site-access.log;
error_log /var/log/nginx/your-site-error.log;
# ThinkPHP 路由重写
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
# PHP 处理
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据 PHP 版本调整
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态文件缓存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
expires 30d;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}
```
```bash
# 3. 启用站点
sudo ln -s /etc/nginx/sites-available/your-site /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm
# 4. 设置权限
sudo chown -R www-data:www-data /var/www/back
sudo chmod -R 755 /var/www/back
sudo chmod -R 777 /var/www/back/runtime
```
---
## 五、与 Java 部署的对比总结
| 特性 | Java (Spring Boot) | PHP (ThinkPHP) |
|------|-------------------|----------------|
| **运行方式** | `java -jar app.jar` | 需要 Web 服务器 + PHP 解释器 |
| **Web 服务器** | 内置Tomcat | 外部Nginx/Apache |
| **进程模型** | 单个 JVM 进程 | 多个 PHP-FPM 进程 |
| **端口监听** | 应用自己监听 | Web 服务器监听 |
| **部署复杂度** | 简单(一个 JAR | 中等(需配置 Web 服务器) |
| **性能** | 高JIT 编译) | 中(解释执行) |
| **内存占用** | 较高JVM | 较低 |
| **适用场景** | 微服务、高并发 | Web 应用、CMS |
---
## 六、常见问题
### Q1: 为什么不能像 Java 一样 `php index.php` 直接运行?
**A:** 可以,但只能在命令行运行,不能处理 HTTP 请求:
```bash
# 命令行运行(仅用于测试)
php index.php
# PHP 内置服务器(仅用于开发)
php -S localhost:8080 -t public/
```
内置服务器**不适合生产环境**,因为:
- 单线程,性能差
- 功能简陋,不支持 .htaccess
- 不稳定,容易崩溃
### Q2: 能不能让 PHP 像 Java 一样独立运行?
**A:** 可以使用 Swoole/Workerman 等框架:
```php
// 使用 Workerman类似 Node.js
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
$http_worker = new Worker("http://0.0.0.0:8080");
$http_worker->onMessage = function($connection, $request) {
$connection->send("Hello World");
};
Worker::runAll();
```
但你的 ThinkPHP 项目是传统架构,需要 Web 服务器。
### Q3: 我应该选择 Apache 还是 Nginx
**建议:**
- **开发/测试环境**Apache配置简单
- **生产环境**Nginx + PHP-FPM性能更好
- **虚拟主机**:通常只能用 Apache
---
## 七、快速部署检查清单
```bash
# ✓ 1. 环境检查
php -v # PHP >= 5.4
nginx -v # 或 apache2 -v
mysql --version # 数据库
# ✓ 2. 安装依赖
cd /var/www/back
composer install
# ✓ 3. 配置数据库
# 修改 application/database.php
# ✓ 4. 导入数据库
mysql -u root -p < kingcharm.sql
# ✓ 5. 设置权限
chmod -R 777 runtime/
# ✓ 6. 配置 Web 服务器
# 见上文 Nginx/Apache 配置
# ✓ 7. 重启服务
sudo systemctl restart nginx
sudo systemctl restart php-fpm
# ✓ 8. 测试访问
curl http://localhost
```
---
## 八、总结
**核心区别:**
- **Java**:应用 = Web 服务器 + 业务代码(一体化)
- **PHP**:应用 = Web 服务器 + PHP 解释器 + 业务代码(分离式)
**为什么这样设计?**
- PHP 诞生于 Web 时代,设计为与 Web 服务器配合
- Java 后来发展出内置服务器,简化部署
- 各有优劣,适用不同场景
你的 ThinkPHP 项目需要 Nginx/Apache 是正常的,这是 PHP 的标准部署方式!

View File

@@ -0,0 +1,840 @@
# Windows 服务器 PHP 项目部署指南
## 目录
- [方案一Apache + PHP推荐新手](#方案一apache--php推荐新手)
- [方案二Nginx + PHP推荐生产环境](#方案二nginx--php推荐生产环境)
- [数据库配置](#数据库配置)
- [常见问题](#常见问题)
---
## 方案一Apache + PHP推荐新手
### 优点
- 配置简单,一键安装
- .htaccess 自动生效,无需额外配置
- 适合 Windows 环境
- 图形化管理界面
### 缺点
- 性能略低于 Nginx
- 内存占用较高
---
### 步骤 1下载安装包
#### 方式 A使用 XAMPP最简单
1. 下载 XAMPP
- 官网https://www.apachefriends.org/
- 选择 Windows 版本
- 包含Apache + PHP + MySQL
2. 安装 XAMPP
```
双击安装程序
选择安装路径C:\xampp
勾选组件:
✓ Apache
✓ MySQL
✓ PHP
✓ phpMyAdmin
```
3. 启动服务
```
打开 XAMPP Control Panel
点击 Apache 的 "Start" 按钮
点击 MySQL 的 "Start" 按钮
```
#### 方式 B使用 PHPStudy国内推荐
1. 下载 PHPStudy
- 官网https://www.xp.cn/
- 下载 Windows 版本
- 集成环境,中文界面
2. 安装并启动
```
安装到D:\phpstudy_pro
启动面板
启动 Apache 和 MySQL
```
---
### 步骤 2部署项目
#### 2.1 复制项目文件
**XAMPP 方式:**
```
将你的 back 文件夹复制到:
C:\xampp\htdocs\back
```
**PHPStudy 方式:**
```
将你的 back 文件夹复制到:
D:\phpstudy_pro\WWW\back
```
#### 2.2 配置虚拟主机(可选,推荐)
**XAMPP 配置:**
1. 编辑 Apache 配置文件
```
打开C:\xampp\apache\conf\extra\httpd-vhosts.conf
```
2. 添加虚拟主机配置
```apache
<VirtualHost *:80>
ServerName localhost
DocumentRoot "C:/xampp/htdocs/back/public"
<Directory "C:/xampp/htdocs/back/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "logs/back-error.log"
CustomLog "logs/back-access.log" common
</VirtualHost>
```
3. 重启 Apache
```
在 XAMPP Control Panel 点击 Apache 的 "Stop"
再点击 "Start"
```
**PHPStudy 配置:**
1. 打开 PHPStudy 面板
2. 点击 "网站" → "创建网站"
3. 填写信息:
```
域名localhost 或 your-domain.com
端口80
根目录D:\phpstudy_pro\WWW\back\public
PHP 版本:选择 7.2 或更高
```
4. 点击 "确认"
---
### 步骤 3配置 PHP
#### 3.1 检查 PHP 扩展
**XAMPP**
```
编辑C:\xampp\php\php.ini
```
**PHPStudy**
```
在面板中点击 "软件管理" → "PHP" → "配置文件"
```
**确保以下扩展已启用(去掉前面的分号):**
```ini
extension=curl
extension=gd2
extension=mbstring
extension=mysqli
extension=pdo_mysql
extension=openssl
; 如果需要连接 SQL Server你的项目有用到
extension=pdo_sqlsrv
extension=sqlsrv
```
#### 3.2 下载 SQL Server 驱动(重要!)
你的项目需要连接 SQL Server需要额外安装驱动
1. 下载 Microsoft Drivers for PHP for SQL Server
- 官网https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server
- 选择对应 PHP 版本的驱动
2. 解压并复制 DLL 文件
```
将 php_sqlsrv_*.dll 和 php_pdo_sqlsrv_*.dll 复制到:
XAMPP: C:\xampp\php\ext\
PHPStudy: D:\phpstudy_pro\Extensions\php\php7.x\ext\
```
3. 在 php.ini 中启用
```ini
extension=php_sqlsrv_74_ts_x64.dll
extension=php_pdo_sqlsrv_74_ts_x64.dll
```
4. 重启 Apache
---
### 步骤 4安装 Composer 依赖
1. 下载 Composer for Windows
- 官网https://getcomposer.org/download/
- 下载 Composer-Setup.exe
2. 安装 Composer
```
双击安装程序
选择 PHP 路径:
XAMPP: C:\xampp\php\php.exe
PHPStudy: D:\phpstudy_pro\Extensions\php\php7.x\php.exe
```
3. 安装项目依赖
```cmd
打开命令提示符CMD
cd C:\xampp\htdocs\back
composer install
```
如果速度慢,使用国内镜像:
```cmd
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer install
```
---
### 步骤 5配置项目
#### 5.1 修改数据库配置
编辑:`back/application/database.php`
```php
return [
'type' => 'mysql',
'hostname' => '127.0.0.1', // 本地数据库
'database' => 'oms', // 数据库名
'username' => 'root', // 用户名
'password' => '', // XAMPP 默认为空PHPStudy 可能是 root
'hostport' => '3306',
'charset' => 'utf8',
'prefix' => 'wdq_',
];
```
#### 5.2 修改应用配置
编辑:`back/application/config.php`
```php
return [
// 开发环境可以开启,生产环境必须关闭
'app_debug' => true,
// 修改文件服务器地址
'file_server_url' => 'http://localhost',
// 其他配置保持不变...
];
```
#### 5.3 设置目录权限
右键点击以下文件夹 → 属性 → 安全:
```
back/runtime → 完全控制
back/public/uploads → 完全控制(如果有)
```
或使用命令:
```cmd
icacls "C:\xampp\htdocs\back\runtime" /grant Everyone:F /T
```
---
### 步骤 6导入数据库
#### 使用 phpMyAdminXAMPP/PHPStudy 自带)
1. 访问 phpMyAdmin
```
XAMPP: http://localhost/phpmyadmin
PHPStudy: http://localhost/phpMyAdmin
```
2. 创建数据库
```
点击 "新建"
数据库名oms
排序规则utf8_general_ci
点击 "创建"
```
3. 导入 SQL 文件
```
选择 oms 数据库
点击 "导入"
选择文件C:\xampp\htdocs\back\kingcharm.sql
点击 "执行"
```
#### 使用命令行
```cmd
cd C:\xampp\mysql\bin
mysql -u root -p oms < C:\xampp\htdocs\back\kingcharm.sql
```
---
### 步骤 7测试访问
1. 打开浏览器访问:
```
http://localhost
http://localhost/index.php
```
2. 测试 API 接口:
```
http://localhost/api/test
```
3. 查看错误日志(如果有问题):
```
back/runtime/log/
```
---
## 方案二Nginx + PHP推荐生产环境
### 优点
- 性能更好,并发能力强
- 内存占用低
- 适合高流量网站
### 缺点
- 配置稍复杂
- 需要手动配置路由规则
---
### 步骤 1下载安装包
#### 1.1 下载 Nginx
1. 访问官网http://nginx.org/en/download.html
2. 下载 Windows 版本(如 nginx-1.24.0.zip
3. 解压到:`C:\nginx`
#### 1.2 下载 PHP
1. 访问官网https://windows.php.net/download/
2. 下载 **Non Thread Safe (NTS)** 版本(重要!)
3. 解压到:`C:\php`
#### 1.3 下载 MySQL
1. 访问官网https://dev.mysql.com/downloads/mysql/
2. 下载 Windows 版本
3. 安装到:`C:\Program Files\MySQL\MySQL Server 8.0`
---
### 步骤 2配置 PHP
#### 2.1 配置 php.ini
```cmd
cd C:\php
copy php.ini-development php.ini
notepad php.ini
```
修改以下配置:
```ini
; 设置扩展目录
extension_dir = "C:/php/ext"
; 启用扩展
extension=curl
extension=gd
extension=mbstring
extension=mysqli
extension=pdo_mysql
extension=openssl
; SQL Server 扩展(需要单独下载)
extension=php_sqlsrv_81_nts_x64.dll
extension=php_pdo_sqlsrv_81_nts_x64.dll
; 时区设置
date.timezone = Asia/Shanghai
; 上传文件大小
upload_max_filesize = 50M
post_max_size = 50M
; 错误显示(开发环境)
display_errors = On
error_reporting = E_ALL
```
#### 2.2 下载 SQL Server 驱动
1. 下载驱动https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server
2. 解压并复制 DLL 到:`C:\php\ext\`
3. 确保 php.ini 中已启用(见上面配置)
---
### 步骤 3配置 Nginx
#### 3.1 编辑 Nginx 配置
编辑:`C:\nginx\conf\nginx.conf`
```nginx
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
# 项目根目录(注意:指向 public 目录)
root C:/xampp/htdocs/back/public;
index index.php index.html;
# 访问日志
access_log logs/back-access.log;
error_log logs/back-error.log;
# ThinkPHP 路由重写规则
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
# PHP 处理
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态文件缓存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
expires 30d;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
}
}
```
---
### 步骤 4启动服务
#### 4.1 启动 PHP-CGI
创建启动脚本:`C:\php\start-php.bat`
```batch
@echo off
echo Starting PHP FastCGI...
C:\php\php-cgi.exe -b 127.0.0.1:9000 -c C:\php\php.ini
```
双击运行 `start-php.bat`
**或者使用后台运行(推荐):**
创建:`C:\php\start-php-background.vbs`
```vbscript
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\php\php-cgi.exe -b 127.0.0.1:9000 -c C:\php\php.ini", 0
Set WshShell = Nothing
```
双击运行 `.vbs` 文件(不会显示黑窗口)
#### 4.2 启动 Nginx
```cmd
cd C:\nginx
start nginx
```
或创建启动脚本:`C:\nginx\start-nginx.bat`
```batch
@echo off
echo Starting Nginx...
cd C:\nginx
start nginx.exe
echo Nginx started!
pause
```
#### 4.3 验证服务运行
```cmd
# 检查 Nginx 进程
tasklist | findstr nginx
# 检查 PHP 进程
tasklist | findstr php-cgi
# 检查端口占用
netstat -ano | findstr :80
netstat -ano | findstr :9000
```
---
### 步骤 5部署项目
#### 5.1 复制项目文件
```
将 back 文件夹复制到:
C:\www\back
```
#### 5.2 修改 Nginx 配置中的路径
```nginx
root C:/www/back/public;
```
#### 5.3 重启 Nginx
```cmd
cd C:\nginx
nginx -s reload
```
---
### 步骤 6安装 Composer 依赖
```cmd
cd C:\www\back
composer install
```
---
### 步骤 7配置数据库
同方案一的步骤 5 和步骤 6
---
### 步骤 8测试访问
访问http://localhost
---
## 数据库配置
### MySQL 配置
#### XAMPP/PHPStudy
- 主机127.0.0.1
- 端口3306
- 用户root
- 密码XAMPP 默认为空)
#### 独立安装的 MySQL
- 安装时设置的密码
### SQL Server 配置
你的项目还需要连接 SQL Server
```php
// back/application/config.php 中的 db2 配置
'db2' => [
'type' => 'sqlsrv',
'hostname' => 'localhost', // 或 SQL Server 服务器 IP
'database' => 'UFDATA_998_2017',
'username' => 'sa',
'password' => 'your_password',
'hostport' => '1433',
'charset' => 'utf8',
'prefix' => '',
],
```
**注意:** 需要安装 SQL Server 并确保 PHP 的 sqlsrv 扩展已启用!
---
## 设置开机自启动
### 方案一:使用 Windows 服务
#### 将 Nginx 注册为服务
1. 下载 NSSMNon-Sucking Service Manager
- 官网https://nssm.cc/download
2. 安装 Nginx 服务
```cmd
cd C:\nssm
nssm install nginx C:\nginx\nginx.exe
nssm start nginx
```
#### 将 PHP 注册为服务
```cmd
nssm install php-cgi C:\php\php-cgi.exe -b 127.0.0.1:9000
nssm start php-cgi
```
### 方案二:使用启动文件夹
1. 按 `Win + R`,输入 `shell:startup`
2. 将启动脚本的快捷方式复制到此文件夹
---
## 常见问题
### Q1: 访问提示 404 Not Found
**原因:** 路由规则未生效
**解决:**
- Apache确保 mod_rewrite 已启用,.htaccess 文件存在
- Nginx检查 rewrite 规则是否正确配置
### Q2: 提示 "No input file specified"
**原因:** PHP 路径配置错误
**解决:**
```nginx
# Nginx 配置中确保使用绝对路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
```
### Q3: 无法连接数据库
**检查:**
```cmd
# 测试 MySQL 连接
mysql -u root -p
# 检查 MySQL 服务是否运行
services.msc
找到 MySQL 服务,确保已启动
```
### Q4: PHP 扩展未加载
**检查:**
```cmd
# 查看已加载的扩展
php -m
# 查看 PHP 配置
php --ini
```
### Q5: 端口被占用
**检查端口占用:**
```cmd
netstat -ano | findstr :80
netstat -ano | findstr :9000
```
**结束占用进程:**
```cmd
taskkill /F /PID 进程ID
```
### Q6: Nginx 无法启动
**检查配置:**
```cmd
cd C:\nginx
nginx -t
```
**查看错误日志:**
```
C:\nginx\logs\error.log
```
### Q7: 权限问题
**解决:**
```cmd
# 给 runtime 目录完全权限
icacls "C:\www\back\runtime" /grant Everyone:F /T
```
---
## 性能优化建议
### 1. 开启 OPcache
编辑 `php.ini`
```ini
[opcache]
zend_extension=opcache
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
```
### 2. 调整 PHP-FPM 进程数
如果使用 PHP-FPM需要额外安装编辑配置
```ini
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
```
### 3. Nginx 缓存配置
```nginx
# 在 http 块中添加
fastcgi_cache_path C:/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;
# 在 location ~ \.php$ 中添加
fastcgi_cache my_cache;
fastcgi_cache_valid 200 60m;
```
---
## 生产环境检查清单
```
✓ 关闭调试模式app_debug = false
✓ 修改数据库密码(不使用默认密码)
✓ 设置 runtime 目录权限
✓ 配置防火墙规则
✓ 启用 HTTPS使用 SSL 证书)
✓ 定期备份数据库
✓ 配置日志轮转
✓ 监控服务器资源
```
---
## 快速启动脚本
### 创建一键启动脚本
`start-all.bat`
```batch
@echo off
echo ========================================
echo Starting PHP Development Environment
echo ========================================
echo.
echo [1/3] Starting PHP-CGI...
start /B C:\php\php-cgi.exe -b 127.0.0.1:9000
echo [2/3] Starting Nginx...
cd C:\nginx
start nginx.exe
echo [3/3] Starting MySQL...
net start MySQL80
echo.
echo ========================================
echo All services started successfully!
echo ========================================
echo.
echo Visit: http://localhost
echo.
pause
```
### 创建一键停止脚本
`stop-all.bat`
```batch
@echo off
echo Stopping all services...
taskkill /F /IM nginx.exe
taskkill /F /IM php-cgi.exe
net stop MySQL80
echo All services stopped!
pause
```
---
## 总结
### 推荐方案
| 场景 | 推荐方案 | 原因 |
|------|---------|------|
| 开发测试 | XAMPP/PHPStudy | 安装简单,图形化管理 |
| 生产环境 | Nginx + PHP | 性能更好,稳定性高 |
| 新手入门 | XAMPP | 一键安装,无需配置 |
| 高并发 | Nginx + PHP | 并发能力强 |
### 下一步
1. 完成基础部署
2. 测试所有功能
3. 配置定时任务(如果需要)
4. 设置数据库备份
5. 监控服务器性能
有问题随时问我!