ADD DOC
This commit is contained in:
390
PHP项目部署说明.md
Normal file
390
PHP项目部署说明.md
Normal 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 的标准部署方式!
|
||||
840
Windows服务器PHP部署指南.md
Normal file
840
Windows服务器PHP部署指南.md
Normal 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:导入数据库
|
||||
|
||||
#### 使用 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. 监控服务器性能
|
||||
|
||||
有问题随时问我!
|
||||
Reference in New Issue
Block a user