Files
oms-back/Windows服务器PHP部署指南.md
2026-03-09 22:59:24 +08:00

841 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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