# 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. 监控服务器性能 有问题随时问我!