diff --git a/PHP项目部署说明.md b/PHP项目部署说明.md new file mode 100644 index 0000000..720c25b --- /dev/null +++ b/PHP项目部署说明.md @@ -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 - 这只是文本文件 + +``` + +这个文件**不能直接运行**,需要: +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 + + Options +FollowSymlinks -Multiviews + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] + +``` + +--- + +### 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 + + ServerName your-domain.com + DocumentRoot /var/www/back/public + + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + +``` + +```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 的标准部署方式! diff --git a/Windows服务器PHP部署指南.md b/Windows服务器PHP部署指南.md new file mode 100644 index 0000000..8753ed3 --- /dev/null +++ b/Windows服务器PHP部署指南.md @@ -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 + + ServerName localhost + DocumentRoot "C:/xampp/htdocs/back/public" + + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog "logs/back-error.log" + CustomLog "logs/back-access.log" common + + ``` + +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:导入数据库 + +#### 使用 phpMyAdmin(XAMPP/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. 下载 NSSM(Non-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. 监控服务器性能 + +有问题随时问我!