# 部署指南

本文档提供了 Shopex OMS 系统的完整部署指南,包括生产环境部署、Docker 容器化部署和云平台部署方案。


# 📋 目录


# 🖥️ 生产环境部署

# 系统要求

服务器环境

  • 操作系统:Linux(推荐 Alibaba Cloud Linux release 3 (Soaring Falcon))
  • PHP:8.2(推荐)
  • MySQL:8.0(推荐)
  • Redis:6.2(推荐)
  • Memcached:1.5(推荐)
  • Web 服务器:Apache 2.4+ 或 OpenResty 1.21.4.2(推荐)

PHP 扩展

  • 必需:pdo_mysqlmysqlimbstringgdcurljsonopensslredisxlswriterswoole
  • 推荐:memcached

# 部署步骤

# 1. 准备服务器环境

# 更新系统
sudo apt-get update && sudo apt-get upgrade -y  # Ubuntu/Debian
# 或
sudo yum update -y  # CentOS/RHEL

# 安装基础工具
sudo apt-get install -y git curl wget unzip  # Ubuntu/Debian
# 或
sudo yum install -y git curl wget unzip  # CentOS/RHEL
1
2
3
4
5
6
7
8
9

# 2. 安装 PHP 8.2

Ubuntu/Debian

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring \
    php8.2-gd php8.2-curl php8.2-xml php8.2-zip php8.2-redis php8.2-memcached
1
2
3
4
5

CentOS/RHEL

sudo yum install -y epel-release
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php82
sudo yum install -y php php-fpm php-mysql php-mbstring php-gd \
    php-curl php-xml php-zip php-redis php-memcached
1
2
3
4
5

安装必需扩展

# xlswriter(必需)
pecl install xlswriter
echo "extension=xlswriter.so" >> $(php --ini | grep "Loaded Configuration File" | sed -e "s|.*:\s*||")

# Swoole(必需)
pecl install swoole
echo "extension=swoole.so" >> $(php --ini | grep "Loaded Configuration File" | sed -e "s|.*:\s*||")
1
2
3
4
5
6
7

# 3. 安装 OpenResty 1.21.4.2

Alibaba Cloud Linux / CentOS / RHEL

# 添加 OpenResty 仓库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

# 安装 OpenResty
sudo yum install -y openresty openresty-opm

# 启动 OpenResty
sudo systemctl enable openresty
sudo systemctl start openresty
1
2
3
4
5
6
7
8
9
10

Ubuntu/Debian

# 添加 OpenResty 仓库
sudo apt-get install -y software-properties-common
wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
sudo add-apt-repository -y "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"
sudo apt-get update

# 安装 OpenResty
sudo apt-get install -y openresty

# 启动 OpenResty
sudo systemctl enable openresty
sudo systemctl start openresty
1
2
3
4
5
6
7
8
9
10
11
12

验证安装

openresty -v
# 应该显示:openresty/1.21.4.2
1
2

# 4. 部署应用代码

说明:MySQL、Redis、Memcached 等服务:

  • 开发环境:使用 Docker Compose 中的本地服务(见 Docker 容器化部署章节)
  • 生产环境:使用云PAAS服务(RDS、云Redis、云Memcached),详见"配置数据库和缓存服务"章节
# 克隆项目
cd /var/www
sudo git clone https://github.com/your-org/oms.git
cd oms

# 设置目录权限
sudo chown -R www-data:www-data /var/www/oms  # Ubuntu/Debian
# 或
sudo chown -R apache:apache /var/www/oms  # CentOS/RHEL

sudo chmod -R 755 /var/www/oms
sudo chmod -R 777 /var/www/oms/data
sudo chmod -R 777 /var/www/oms/config
sudo chmod -R 777 /var/www/oms/public
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 5. 安装 Composer 依赖

cd /var/www/oms
composer install --no-dev --optimize-autoloader
1
2

# 6. 配置 Web 服务器

Apache 配置/etc/apache2/sites-available/oms.conf):

<VirtualHost *:80>
    DocumentRoot "/var/www/oms"
    ServerName your-domain.com

    # 禁止访问敏感目录
    <LocationMatch "^\/(\.git|script|data|config|vendor|cgi-bin|tools|docs|docker|tests|upgrade)\/">
        Require all denied
    </LocationMatch>

    <Directory "/var/www/oms">
        Options FollowSymLinks
        AllowOverride None
        Require all granted
        
        # 启用 Rewrite 引擎
        RewriteEngine On
        
        # 如果文件或目录不存在,重定向到 index.php
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        
        # 特殊路由规则
        RewriteRule ^m- /index.html [NC,L]
        RewriteRule ^home$ /index.html [NC,L]
    </Directory>

    # 安全头设置
    Header always set X-Frame-Options "SAMEORIGIN"

    ErrorLog ${APACHE_LOG_DIR}/oms_error.log
    CustomLog ${APACHE_LOG_DIR}/oms_access.log combined
</VirtualHost>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

启用站点:

# 启用必要的模块
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2ensite oms.conf
sudo systemctl restart apache2
1
2
3
4
5

OpenResty 配置(配置文件路径:/usr/local/openresty/nginx/conf/sites-available/oms):

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/oms;

    index index.php index.html;

    # 将以 'm-' 开头的请求重写到 index.html
    location ^~ /m- {
        rewrite ^ /index.html break;
    }

    # 将 '/home' 的请求重写到 index.html
    location = /home {
        rewrite ^ /index.html break;
    }

    # 禁止访问敏感目录
    location ~ ^/(\.git|script|data|config|vendor|cgi-bin|tools|docs|docker|tests|upgrade)/ {
        deny all;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\. {
        deny all;
    }

    error_page 404 /404.html;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

启用站点:

# 创建配置目录(如果不存在)
sudo mkdir -p /usr/local/openresty/nginx/conf/sites-available
sudo mkdir -p /usr/local/openresty/nginx/conf/sites-enabled

# 创建符号链接
sudo ln -s /usr/local/openresty/nginx/conf/sites-available/oms /usr/local/openresty/nginx/conf/sites-enabled/

# 在 nginx.conf 中引入 sites-enabled
# 编辑 /usr/local/openresty/nginx/conf/nginx.conf,在 http 块中添加:
# include /usr/local/openresty/nginx/conf/sites-enabled/*;

# 测试配置
sudo /usr/local/openresty/nginx/sbin/nginx -t

# 重启 OpenResty
sudo systemctl restart openresty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 7. 初始化系统

方式1:浏览器安装(推荐)

  1. 访问:http://your-domain.com/index.php/setup
  2. 按照安装向导完成配置

方式2:命令行安装

cd /var/www/oms
php app/base/cmd install
1
2

# 8. 配置任务服务

# 启动任务服务
cd /var/www/oms
php app/taskmgr/sw.php worker:start -d

# 检查状态
php app/taskmgr/sw.php worker:status
1
2
3
4
5
6

# 🐳 Docker 容器化部署

# 前置要求

  • Docker >= 20.10
  • Docker Compose >= 2.0(可选)

# 快速开始

重要说明:项目已提供完整的 Dockerfile,可以直接使用,无需自己创建。

项目包含以下 Dockerfile:

  • docker/Dockerfile:主应用服务镜像(基于 Apache + PHP 8.2)
  • docker/supervisor/Dockerfile:任务服务镜像(基于 Supervisor + PHP 8.2)

# 1. 准备配置文件

环境说明

  • 生产环境:强烈推荐使用云PAAS服务(RDS、云Redis、云Memcached),提供高可用、自动备份、监控告警等功能
  • 开发环境:可以使用本地服务(Docker中的MySQL、Redis、Memcached),便于本地开发和测试

生产环境推荐

  • MySQL:使用云数据库服务(RDS、TencentDB、RDS for MySQL等)
  • Redis:使用云Redis服务(阿里云Redis、腾讯云Redis、AWS ElastiCache等)
  • Memcached:使用云Memcached服务,或使用云Redis替代

开发环境可选

  • 可以使用Docker Compose中的MySQL、Redis、Memcached服务进行本地开发

创建 docker-compose.yml(可选,也可以直接使用 docker 命令):

注意:下面的配置中,MySQL、Redis、Memcached服务已注释,适用于生产环境使用云PAAS服务。如果是开发环境,可以取消注释使用本地服务。

version: '3.8'

services:
  # 主应用服务
  oms-app:
    build:
      context: .
      dockerfile: docker/Dockerfile
    container_name: oms-app
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # 配置文件挂载(必需)
      - ./config/config.php:/data/httpd/oms/config/config.php
      - ./config/install.lock.php:/data/httpd/oms/config/install.lock.php
      - ./app/taskmgr/config/config.php:/data/httpd/oms/app/taskmgr/config/config.php
      # 数据目录挂载(可选,可以不挂载)
      # - ./data:/data/httpd/oms/data
      # 日志目录挂载(可选,可以不挂载)
      # - ./logs:/var/log/apache2
    environment:
      - TZ=Asia/Shanghai
    # 开发环境:使用本地服务时,取消下面的注释
    # 生产环境:使用云PAAS服务时,注释掉 depends_on,并在 config/config.php 中配置云服务地址
    depends_on:
      - redis
      - memcached
    networks:
      - oms-network

  # 任务服务
  oms-worker:
    build:
      context: .
      dockerfile: docker/supervisor/Dockerfile
    container_name: oms-worker
    volumes:
      # 配置文件挂载(必需)
      - ./config/config.php:/data/httpd/oms/config/config.php
      - ./config/install.lock.php:/data/httpd/oms/config/install.lock.php
      - ./app/taskmgr/config/config.php:/data/httpd/oms/app/taskmgr/config/config.php
      # 数据目录挂载(可选,可以不挂载)
      # - ./data:/data/httpd/oms/data
    environment:
      - TZ=Asia/Shanghai
    # 开发环境:使用本地服务时,取消下面的注释
    # 生产环境:使用云PAAS服务时,注释掉 depends_on,并在 config/config.php 中配置云服务地址
    depends_on:
      - redis
      - memcached
    networks:
      - oms-network

  # Redis 服务(生产环境推荐使用云PAAS服务,开发环境可以使用本地服务)
  # 开发环境:取消下面的注释使用本地Redis
  # 生产环境:注释掉,使用云Redis服务,并在 config/config.php 中配置
  redis:
    image: redis:6.2-alpine
    container_name: oms-redis
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
    command: redis-server --appendonly yes
    networks:
      - oms-network

  # Memcached 服务(生产环境推荐使用云PAAS服务,开发环境可以使用本地服务)
  # 开发环境:取消下面的注释使用本地Memcached
  # 生产环境:注释掉,使用云Memcached或云Redis服务,并在 config/config.php 中配置
  memcached:
    image: memcached:1.5-alpine
    container_name: oms-memcached
    ports:
      - "11211:11211"
    networks:
      - oms-network

  # MySQL 服务(生产环境强烈推荐使用云PAAS服务,开发环境可以使用本地服务)
  # 开发环境:取消下面的注释使用本地MySQL
  # 生产环境:注释掉,使用RDS、TencentDB等云数据库,并在 config/config.php 中配置
  mysql:
    image: mysql:8.0
    container_name: oms-mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=root_password
      - MYSQL_DATABASE=oms
      - MYSQL_USER=oms_user
      - MYSQL_PASSWORD=oms_password
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - oms-network

volumes:
  redis-data:
  mysql-data:

networks:
  oms-network:
    driver: bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

# 2. 构建和启动

# 构建镜像(使用项目提供的 Dockerfile)
docker-compose build

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f oms-app

# 查看状态
docker-compose ps
1
2
3
4
5
6
7
8
9
10
11

# 3. 初始化系统

# 进入应用容器
docker exec -it oms-app sh

# 初始化数据库
php app/base/cmd install

# 或使用浏览器访问安装向导
# http://your-domain.com/index.php/setup
1
2
3
4
5
6
7
8

# 4. 启动任务服务

# 进入任务容器
docker exec -it oms-worker sh

# 启动任务服务
php app/taskmgr/sw.php worker:start -d

# 检查状态
php app/taskmgr/sw.php worker:status
1
2
3
4
5
6
7
8

# 配置数据库和缓存服务

环境区分

  • 生产环境:强烈推荐使用云PAAS服务(RDS、云Redis、云Memcached),提供高可用、自动备份、监控告警等功能
  • 开发环境:可以使用本地服务(Docker中的MySQL、Redis、Memcached),便于本地开发和测试

# 开发环境配置(使用本地服务)

如果使用 Docker Compose 中的本地服务,无需额外配置,服务会自动启动。确保 depends_on 配置已启用。

# 生产环境配置(使用云PAAS服务)

强烈推荐:生产环境使用云PAAS服务,而不是在容器中运行数据库和缓存服务。

# 配置云数据库(MySQL)

config/config.php 中配置云数据库连接:

阿里云 RDS

define('DB_HOST', 'rm-xxxxx.mysql.rds.aliyuncs.com');
define('DB_USER', 'oms_user');
define('DB_PASSWORD', 'your_password');
define('DB_NAME', 'oms');
1
2
3
4

腾讯云 TencentDB

define('DB_HOST', 'xxxxx.sql.tencentcdb.com');
define('DB_USER', 'oms_user');
define('DB_PASSWORD', 'your_password');
define('DB_NAME', 'oms');
1
2
3
4

AWS RDS

define('DB_HOST', 'oms-db.xxxxx.us-east-1.rds.amazonaws.com');
define('DB_USER', 'oms_user');
define('DB_PASSWORD', 'your_password');
define('DB_NAME', 'oms');
1
2
3
4

# 配置云Redis

config/config.php 中配置云Redis连接:

阿里云 Redis

define('KVSTORE_REDIS_CONFIG', 'r-xxxxx.redis.rds.aliyuncs.com:6379');
define('CACHE_REDIS_CONFIG', 'r-xxxxx.redis.rds.aliyuncs.com:6379:1');
1
2

腾讯云 Redis

define('KVSTORE_REDIS_CONFIG', 'xxxxx.redis.tencentcdb.com:6379');
define('CACHE_REDIS_CONFIG', 'xxxxx.redis.tencentcdb.com:6379:1');
1
2

AWS ElastiCache

define('KVSTORE_REDIS_CONFIG', 'oms-redis.xxxxx.cache.amazonaws.com:6379');
define('CACHE_REDIS_CONFIG', 'oms-redis.xxxxx.cache.amazonaws.com:6379:1');
1
2

# 配置云Memcached(可选)

如果使用云Memcached服务,在 config/config.php 中配置:

define('CACHE_MEMCACHED_CONFIG', 'your-memcached-host:11211');
1

注意:也可以使用云Redis替代Memcached,Redis功能更强大且支持持久化。

# 云PAAS服务优势

使用云PAAS服务的优势:

  • 高可用:自动故障转移,99.95%+ SLA
  • 自动备份:定期自动备份,支持按时间点恢复
  • 监控告警:完善的监控指标和告警机制
  • 弹性扩展:可根据业务需求快速扩容
  • 安全防护:内置安全防护和访问控制
  • 运维简化:无需自行维护数据库和缓存服务

# 配置文件挂载说明

重要:以下配置文件必须通过挂载方式持久化,避免容器重启后配置丢失:

  1. 系统配置文件

    • config/config.php:系统主配置文件(包含云PAAS服务配置)
    • config/install.lock.php:安装锁定文件
  2. 任务管理配置文件

    • app/taskmgr/config/config.php:任务管理系统配置文件(数据导出功能必需)
  3. 数据目录和日志目录(可选,可以不挂载):

    • data/:数据目录(缓存、日志等)
    • logs/:日志目录
    • 注意:如果不挂载,数据将存储在容器内,容器删除后数据会丢失

# ☁️ 云平台部署指南

# 阿里云部署

# 1. 创建 ECS 实例

  • 操作系统:Alibaba Cloud Linux release 3 (Soaring Falcon)(推荐)
  • 实例规格:建议 2核4GB 起步
  • 网络:配置安全组,开放 80、443、3306、6379、11211 端口

# 2. 使用 RDS MySQL(强烈推荐)

创建 RDS 实例

  • 登录阿里云控制台,创建 RDS MySQL 实例
  • 选择 MySQL 版本(推荐 8.0)
  • 配置实例规格和存储空间
  • 设置白名单,添加ECS实例的内网IP

配置连接

// 在 config/config.php 中配置 RDS 连接
define('DB_HOST', 'rm-xxxxx.mysql.rds.aliyuncs.com');
define('DB_USER', 'oms_user');
define('DB_PASSWORD', 'your_password');
define('DB_NAME', 'oms');
1
2
3
4
5

# 3. 使用 Redis 云数据库(强烈推荐)

创建 Redis 实例

  • 登录阿里云控制台,创建 Redis 实例
  • 选择 Redis 版本(推荐 6.2)
  • 配置实例规格和内存大小
  • 设置白名单,添加ECS实例的内网IP

配置连接

// 在 config/config.php 中配置 Redis
define('KVSTORE_REDIS_CONFIG', 'r-xxxxx.redis.rds.aliyuncs.com:6379');
define('CACHE_REDIS_CONFIG', 'r-xxxxx.redis.rds.aliyuncs.com:6379:1');
1
2
3

# 4. 使用 OSS 存储(可选)

如果需要使用 OSS 存储文件,需要配置存储适配器。

# 5. 使用 SLB 负载均衡

配置应用服务器为后端服务器,实现高可用。

# 6. 使用容器服务 ACK

# 使用阿里云容器镜像服务构建镜像
# 推送到 ACR
docker tag oms-app:latest registry.cn-hangzhou.aliyuncs.com/your-namespace/oms-app:latest
docker push registry.cn-hangzhou.aliyuncs.com/your-namespace/oms-app:latest

# 在 ACK 中部署
kubectl apply -f k8s-deployment.yaml
1
2
3
4
5
6
7

# 腾讯云部署

# 1. 创建 CVM 实例

  • 操作系统:Ubuntu 20.04 或 CentOS 7
  • 实例规格:建议 2核4GB 起步
  • 安全组:开放必要端口

# 2. 使用 TencentDB MySQL(强烈推荐)

创建 TencentDB 实例

  • 登录腾讯云控制台,创建 TencentDB MySQL 实例
  • 选择 MySQL 版本(推荐 8.0)
  • 配置实例规格和存储空间
  • 设置安全组,允许CVM实例访问

配置连接

// 在 config/config.php 中配置
define('DB_HOST', 'xxxxx.sql.tencentcdb.com');
define('DB_USER', 'oms_user');
define('DB_PASSWORD', 'your_password');
define('DB_NAME', 'oms');
1
2
3
4
5

# 3. 使用 Redis 云数据库(强烈推荐)

创建 Redis 实例

  • 登录腾讯云控制台,创建 TencentDB for Redis 实例
  • 选择 Redis 版本(推荐 6.2)
  • 配置实例规格和内存大小
  • 设置安全组,允许CVM实例访问

配置连接

// 在 config/config.php 中配置
define('KVSTORE_REDIS_CONFIG', 'xxxxx.redis.tencentcdb.com:6379');
define('CACHE_REDIS_CONFIG', 'xxxxx.redis.tencentcdb.com:6379:1');
1
2
3

# 4. 使用 CLB 负载均衡

配置应用服务器为后端服务器。

# AWS 部署

# 1. 创建 EC2 实例

  • AMI:Ubuntu Server 20.04 LTS
  • 实例类型:t3.medium(2核4GB)起步
  • 安全组:开放必要端口

# 2. 使用 RDS MySQL(强烈推荐)

创建 RDS 实例

  • 登录 AWS 控制台,创建 RDS MySQL 实例
  • 选择 MySQL 版本(推荐 8.0)
  • 配置实例类型和存储空间
  • 配置安全组,允许EC2实例访问

配置连接

// 在 config/config.php 中配置
define('DB_HOST', 'oms-db.xxxxx.us-east-1.rds.amazonaws.com');
define('DB_USER', 'oms_user');
define('DB_PASSWORD', 'your_password');
define('DB_NAME', 'oms');
1
2
3
4
5

# 3. 使用 ElastiCache Redis(强烈推荐)

创建 ElastiCache 实例

  • 登录 AWS 控制台,创建 ElastiCache Redis 集群
  • 选择 Redis 版本(推荐 6.2)
  • 配置节点类型和内存大小
  • 配置安全组,允许EC2实例访问

配置连接

// 在 config/config.php 中配置
define('KVSTORE_REDIS_CONFIG', 'oms-redis.xxxxx.cache.amazonaws.com:6379');
define('CACHE_REDIS_CONFIG', 'oms-redis.xxxxx.cache.amazonaws.com:6379:1');
1
2
3

# 4. 使用 ECS(容器服务)

# 构建并推送镜像到 ECR
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxxx.dkr.ecr.us-east-1.amazonaws.com
docker tag oms-app:latest xxxxx.dkr.ecr.us-east-1.amazonaws.com/oms-app:latest
docker push xxxxx.dkr.ecr.us-east-1.amazonaws.com/oms-app:latest

# 在 ECS 中创建任务定义和服务
1
2
3
4
5
6

# 5. 使用 ALB 负载均衡

配置目标组,将流量分发到多个 ECS 任务。

# 通用云平台部署建议

核心原则:使用云PAAS服务,而不是在计算实例上自行安装数据库和缓存服务。

  1. 数据库强烈推荐使用云数据库服务(RDS、TencentDB、RDS for MySQL等)

    • 提供高可用、自动备份、监控告警
    • 支持按时间点恢复
    • 自动故障转移,99.95%+ SLA
  2. 缓存强烈推荐使用云 Redis 服务(阿里云Redis、腾讯云Redis、AWS ElastiCache等)

    • 提供持久化、高可用、自动故障转移
    • 支持集群模式,自动扩容
    • 完善的监控和告警
  3. Memcached:推荐使用云Memcached服务,或使用云Redis替代(Redis功能更强大)

  4. 存储:使用对象存储服务(OSS、COS、S3)存储文件

    • 高可用、低成本
    • 支持CDN加速
  5. 负载均衡:使用云负载均衡服务(SLB、CLB、ALB),实现高可用

    • 自动分发流量
    • 健康检查
    • SSL终端
  6. 监控:配置云监控服务,监控系统健康状态

    • CPU、内存、磁盘、网络监控
    • 应用性能监控(APM)
    • 告警通知
  7. 备份:使用云数据库自动备份功能,定期备份配置文件

    • 数据库自动备份(云服务提供)
    • 配置文件手动备份
  8. 安全:配置安全组、WAF、SSL 证书

    • 最小权限原则
    • 网络隔离
    • 数据加密传输

# ⚙️ 部署后配置

PHP 配置优化php.ini):

; 内存限制,单个脚本可使用的最大内存
memory_limit = 128M

; 脚本最大执行时间(秒),0 表示无限制
max_execution_time = 300

; 单个上传文件的最大大小
upload_max_filesize = 64M

; POST 请求的最大大小(应大于等于 upload_max_filesize)
post_max_size = 50M

; 表单提交的最大变量数量
max_input_vars = 5000

; 同时上传文件的最大数量
max_file_uploads = 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# ❓ 常见问题

# 部署问题

Q: 容器启动后无法访问?

A: 检查:

  1. 容器是否正常运行:docker ps
  2. 端口映射是否正确:docker port oms-app
  3. 防火墙是否开放端口
  4. 查看容器日志:docker logs oms-app

Q: 配置文件挂载后不生效?

A: 检查:

  1. 文件路径是否正确
  2. 文件权限是否正确(容器内用户可读)
  3. 容器是否重启:docker restart oms-app

Q: 数据库连接失败?

A: 检查:

  1. 数据库服务是否运行
  2. 数据库用户权限是否正确
  3. 网络是否连通(容器部署时检查网络配置)
  4. 配置文件中的数据库地址是否正确

Q: Redis/Memcached 连接失败?

A: 检查:

  1. 服务是否运行
  2. 端口是否开放
  3. 配置文件中的地址是否正确(容器部署时使用服务名)
  4. 网络是否连通

# 性能问题

Q: 系统响应慢?

A: 优化建议:

  1. 启用 Memcached 缓存
  2. 优化数据库查询
  3. 增加 PHP-FPM 进程数
  4. 使用 Redis 作为 KV 存储
  5. 启用 OPcache

Q: 内存占用高?

A: 优化建议:

  1. 调整 PHP memory_limit
  2. 优化代码,减少内存使用
  3. 定期清理缓存和日志
  4. 增加服务器内存

# 安全问题

Q: 如何防止未授权访问?

A: 安全措施:

  1. 配置防火墙,只开放必要端口
  2. 使用 SSL 证书(HTTPS)
  3. 配置强密码策略
  4. 定期更新系统和依赖
  5. 配置 WAF(Web 应用防火墙)

Q: 如何备份数据?

A: 备份方案:

  1. 数据库备份:使用 mysqldump 或云数据库备份功能
  2. 配置文件备份:定期备份 config/ 目录
  3. 数据目录备份:定期备份 data/ 目录

祝部署顺利! 🚀


最后更新:2025年11月2日
版本:1.0

最后更新: 11/11/2025, 3:42:17 PM