Files
oms-back/Windows服务器PHP部署指南.md

841 lines
15 KiB
Markdown
Raw Normal View History

2026-03-09 22:59:24 +08:00
# 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. 监控服务器性能
有问题随时问我!