📦 安装部署

ThinkAdmin 是一个基于 ThinkPHP 6 & 8 开发的强大后台管理框架,专为简化后台管理流程而设计。

🚀 框架特点

核心特性

  • 基于 ThinkPHP: 基于 ThinkPHP 6 & 8 框架开发
  • 后台管理: 专为简化后台管理流程而设计
  • 功能丰富: 提供丰富的后台管理功能
  • 易于扩展: 支持灵活的扩展和定制

技术优势

  • 现代化: 采用现代化的开发技术
  • 高性能: 提供高性能的运行效率
  • 安全可靠: 注重安全性和可靠性
  • 文档完善: 提供完善的开发文档

⚙️ 系统要求

基础要求

  • PHP 版本: 7.1 或更高版本(推荐 PHP 8.0+)
  • Composer: 必须安装 Composer 包管理工具
  • 数据库: 支持 Sqlite、MySQL 和 SQL Server
  • Web 服务器: Apache、Nginx 或 PHP 内置服务器

推荐配置

  • PHP 版本: PHP 8.0 或更高版本
  • 内存: 至少 512MB 内存
  • 磁盘空间: 至少 100MB 可用空间
  • 网络: 稳定的网络连接

必需扩展

# 检查 PHP 扩展
php -m | grep -E "(gd|mbstring|openssl|pdo|curl|fileinfo|json|zip)"

# 必需扩展列表
- gd: 图像处理
- mbstring: 多字节字符串处理
- openssl: 加密功能
- pdo: 数据库抽象层
- curl: HTTP 客户端
- fileinfo: 文件类型检测
- json: JSON 处理
- zip: 压缩文件处理

环境检测脚本

<?php
// 环境检测脚本
$requirements = [
    'PHP 版本' => version_compare(PHP_VERSION, '7.1.0', '>='),
    'GD 扩展' => extension_loaded('gd'),
    'MBString 扩展' => extension_loaded('mbstring'),
    'OpenSSL 扩展' => extension_loaded('openssl'),
    'PDO 扩展' => extension_loaded('pdo'),
    'CURL 扩展' => extension_loaded('curl'),
    'FileInfo 扩展' => extension_loaded('fileinfo'),
    'JSON 扩展' => extension_loaded('json'),
    'ZIP 扩展' => extension_loaded('zip'),
];

echo "环境检测结果:\n";
foreach ($requirements as $name => $status) {
    echo $name . ': ' . ($status ? '✅ 通过' : '❌ 失败') . "\n";
}
?>

⚠️ 重要提示

ThinkPHP 8 兼容性

  • 全面兼容: ThinkAdmin 已与 ThinkPHP 8 框架全面兼容
  • 自动升级: 在 PHP 8 环境中执行 composer update 指令,系统会自动升级到 ThinkPHP 8 框架
  • 性能提升: ThinkPHP 8 提供更好的性能和功能

系统升级建议

  • 保留模块: 建议保留原系统的 PaaS 模块
  • 定期更新: 官方会不定期发布插件更新
  • 安全修复: 及时修复系统漏洞
  • 功能增强: 持续增加新功能

个性化定制

  • 内容修改: admin 模块中的显示内容可以修改
  • 参数调整: 可通过调整相关参数进行个性化
  • 主题定制: 支持主题定制功能
  • 界面优化: 可根据需求优化界面展示

运行环境检查

  • 执行 php -v,是否可以看到 PHP 的版本信息?
  • 执行 composer -v 是否可以看到 Composer 的版本信息?
  • 执行 composer self-updateComposer 更新到最新版本!
$ php -v
# 执行 php -v 结果如下为 PHP 8.1.10
> PHP 8.1.10 (cli) (built: Aug 30 2022 18:08:04) (NTS Visual C++ 2019 x64)
> Copyright (c) The PHP Group
> Zend Engine v4.1.10, Copyright (c) Zend Technologies

如果还没有安装 Composer,在 LinuxMacOS X 中可以运行如下命令:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Windows 中,你需要下载 Composer-Setup.exe,并运行程序进行安装操作。

如果遇到任何问题或者想更深入地学习 Composer,请参考 Composer 文档(英文文档中文文档)。

温馨提示: 目前国内大部分 Composer 代理镜像不全,使用以下命令移除代理。

// 移除代理镜像
composer config -g --unset repos.packagist

系统下载及安装

下载并进入 ThinkAdmin 目录,运行指令安装依赖组件。

打开命令行窗口( Windows 用户)或控制台( LinuxMac 用户)并执行如下命令:

1. 通过 Composer 安装: ( 推荐方式,默认只安装 admin 模块 )

### 创建项目( 需要在英文目录下面执行 )
composer create-project zoujingli/thinkadmin

### 进入项目根目录
cd thinkadmin

### 数据库初始化并安装 
### 默认使用 Sqlite 数据库,若使用其他数据库请修改配置后再执行
php think migrate:run

### 安装微信管理模块
composer require zoujingli/think-plugs-wechat

### 开启PHP内置WEB服务
### 默认后台登录账号及密码都是 admin
php think run --host 127.0.0.1

2. 通过源码安装:( 默认安装 adminwechat 两个模块 )

如果需要安装演示系统的旧版本 data 模块代码,请跳转到 https://gitee.com/zoujingli/think-plugs-data

### 下载项目( 需要在英文目录下面执行 )
# git clone https://github.com/zoujingli/ThinkAdmin
git clone https://gitee.com/zoujingli/ThinkAdmin

### 进入项目根目录
cd ThinkAdmin

### 安装项目依赖组件
composer install --optimize-autoloader

### 数据库初始化并安装
### 默认使用 Sqlite 数据库,若使用其他数据库请修改配置后再执行
php think migrate:run

### 开启PHP内置WEB服务
### 默认后台登录账号及密码都是 admin
php think run --host 127.0.0.1

如果希望安装其他插件,可以跳转到 插件生态 查看详情。

数据库配置及安装

  1. 创建空的数据库,其中 Sqlite 不需要创建;
  2. 将数据库配置到 config/database.php 文件;

注意:数据库参数修改,除了要修改连接参数,还需要切换 default 默认连接名称,如下面的 mysqlsqlite 等。

return [
     // 数据库类型
    'default' => 'sqlite',
    // 数据库连接参数
    'connections' => [
        'mysql'  => [ /* 具体参数省略 */ ], 
        'sqlite' => [ /* 具体参数省略 */ ],
    ]       
]

当前版本是 ThinkAdmin v6.1 ,不需要导入数据库 SQL 脚本,修改数据库配置后执行 php think migrate:run 即可;

注意:如果希望在 PgSQL 上运行,需要先将数据库安装到 MySQL 再使用工具同步到 PgSQL,再配置数据表 ID 主键自增。

运行 PHP 内置服务

本地开发可以直接使用 php -S 内置服务器,不需要配置完整的 Web 服务。

  • 方式 1.>$ php think run // 以 debug 方式运行(会显示 CMD 界面及加载日志)
  • 方式 2.>$ php think xadmin:queue webstart // 以 daemon 方式运行(不会显示 CMD 界面)
  • 浏览器访问 http://127.0.0.1:8000 // 可以使用 --port 端口号 指定服务端口号

默认账号及初始化

系统默认是没有配置文件存储规则,无法上传文件,需要进入后台配置。

  • 1.登录并进入后台,默认账号及密码都为:admin
  • 2.进入后台 系统管理->系统参数配置,修改文件上传参数并保存。
  • 3.初始化后建议修改系统参数,如:网站名称,版权信息,网站备案号等。

线上生产环境部署

生产环境部署参考 ThinkPHP 官方的文档,建议使用 宝塔面板 管理服务器。

NginxApache 服务方式运行配置如下:

配置网站路径

宝塔集成环境,直接选择 MVCThinkPHP 默认规则

配置伪静态规则
  • Worker 内存方式运行

以插件 ThinkPlugsWorker 运行以获得更高性能,注意项目端口与 Worker 配置的运行端口需要一致,具体配置如下:

配置启动参数

配置绑定域名
  • Apache 服务器配置
  • httpd.conf 配置文件中加载了mod_rewrite.so模块
  • AllowOverride NoneNone改为All
  • 把下面的内容保存为.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>
  • Nginx 服务器配置
if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php$1 last;
}
  • IIS 服务器管理
  • 如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:RewriteRule (.*)$ /index\.php\?s=$1 [I]
  • IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:

<rewrite>
    <rules>
        <rule name="OrgPage" stopProcessing="true">
            <match url="^(.*)$"/>
            <conditions logicalGrouping="MatchAll">
                <add input="{HTTP_HOST}" pattern="^(.*)$"/>
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
            </conditions>
            <action type="Rewrite" url="index.php/{R:1}"/>
        </rule>
    </rules>
</rewrite>

🚀 高级部署

1. Docker 部署

Dockerfile

FROM php:8.1-fpm

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# 安装 PHP 扩展
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# 安装 Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 设置工作目录
WORKDIR /var/www

# 复制项目文件
COPY . .

# 安装依赖
RUN composer install --no-dev --optimize-autoloader

# 设置权限
RUN chown -R www-data:www-data /var/www
RUN chmod -R 755 /var/www

EXPOSE 9000
CMD ["php-fpm"]

docker-compose.yml

version: '3.8'
services:
  app:
    build: .
    ports:
      - "9000:9000"
    volumes:
      - .:/var/www
    depends_on:
      - db
      - redis

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - .:/var/www
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: thinkadmin
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

volumes:
  mysql_data:

2. 性能优化

PHP-FPM 优化

[www]
user = www-data
group = www-data
listen = /run/php/php8.1-fpm.sock
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 1000

Nginx 优化

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/public;
    index index.php;

    # 开启 Gzip 压缩
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_types text/plain text/css application/json application/javascript;

    # 静态文件缓存
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # PHP 处理
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 隐藏入口文件
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
}

3. 安全配置

文件权限设置

# 设置正确的文件权限
find /var/www -type f -exec chmod 644 {} \;
find /var/www -type d -exec chmod 755 {} \;
chmod -R 777 /var/www/runtime
chmod -R 777 /var/www/public/static

隐藏敏感文件

# .htaccess
<Files "composer.json">
    Order Allow,Deny
    Deny from all
</Files>

<Files ".env">
    Order Allow,Deny
    Deny from all
</Files>

🚨 故障排除

常见问题

问题: 500 内部服务器错误

# 检查错误日志
tail -f /var/log/nginx/error.log
tail -f /var/www/runtime/log/error.log

问题: 数据库连接失败

# 检查数据库服务
systemctl status mysql
mysql -u root -p -e "SHOW DATABASES;"

问题: 文件上传失败

# 检查文件权限
ls -la /var/www/public/static/
php -i | grep upload

恭喜! 您已经成功安装了 ThinkAdmin。现在可以开始您的开发之旅了!

下一步建议

  1. 📖 阅读 快速开始指南
  2. 🔧 了解 系统架构
  3. 📚 查看 开发文档
  4. 🔌 探索 插件生态
  5. ⭐ 学习 最佳实践
最近更新:
Contributors: 邹景立, Anyon