温馨提示×

centos服务器上thinkphp如何配置

小樊
37
2025-12-23 08:32:56
栏目: 云计算

CentOS服务器上部署与配置 ThinkPHP 的实用步骤

一 环境准备与版本要求

  • 操作系统建议使用CentOS 7.x(或兼容的 Alibaba Cloud Linux 3/2)。
  • 安装并启用 PHP 8.0+(ThinkPHP 8.0 要求 PHP ≥ 8.0)。
  • 安装 Composer 作为依赖管理工具。
  • 放行安全组与防火墙端口:入方向放行 22(SSH)、80/443(HTTP/HTTPS),如使用内置服务器可临时放行 8000
  • 建议安装 Nginx 或 Apache 作为生产环境 Web 服务,并准备数据库(如 MySQL/MariaDB)。

二 安装 PHP 与 Composer

  • 安装 EPEL 与 Remi 仓库,并启用 PHP 8.0 仓库:
    • CentOS 7.x 常用命令:
      • 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-php80
  • 安装 PHP 及常用扩展(按项目需要增减):
    • sudo yum install -y php php-cli php-fpm php-common php-mysqlnd php-gd php-mbstring php-curl php-xml php-zip php-bcmath php-json
  • 验证版本:
    • php -v(应显示 PHP 8.0.x
  • 安装 Composer:
    • sudo yum install -y unzip git
    • curl -sS https://getcomposer.org/installer | php
    • sudo mv composer.phar /usr/local/bin/composer
    • composer --version

三 创建项目与目录权限

  • 使用 Composer 创建项目(示例目录:/var/www/myapp):
    • cd /var/www
    • composer create-project topthink myapp
  • 目录权限与属主(以 Apache 为例,用户/组为 apache;如使用 Nginx,通常为 nginx):
    • sudo chown -R apache:apache /var/www/myapp
    • sudo chmod -R 755 /var/www/myapp
    • 确保运行时可写目录(如 runtimepublic/static 等)具备写权限,避免 500 错误。
  • 开发环境快速验证:
    • cd /var/www/myapp
    • php think run
    • 浏览器访问:http://<服务器公网IP>:8000(仅在开发环境使用内置服务器)。

四 Web 服务器配置

  • Nginx 配置示例(站点根目录指向项目的 public,并开启 PATH_INFO 兼容):
    • 建议将站点配置放入:/etc/nginx/conf.dphp.conf
    • 核心配置片段:
      • server { listen 80; server_name your_domain.com; root /var/www/myapp/public; index index.php index.html;

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

        location ~ .php$ { fastcgi_pass unix:/run/php-fpm/www.sock; # 如使用 TCP,可改为 127.0.0.1:9000 fastcgi_index index.php; include fastcgi.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; }

        location ~ /.ht { deny all; } }

    • 检查并重载:
      • sudo nginx -t && sudo systemctl reload nginx
  • Apache 配置要点:
    • 启用模块:sudo a2enmod rewrite(或确保 mod_rewrite 已启用)
    • 虚拟主机示例(DocumentRoot 指向 public,并开启 AllowOverride All 以使用 .htaccess 重写):
      • <VirtualHost *:80> ServerName your_domain.com DocumentRoot /var/www/myapp/public <Directory /var/www/myapp/public> Options Indexes FollowSymLinks AllowOverride All Require all granted
    • 重启:sudo systemctl reload httpd
  • 说明:ThinkPHP 的路由依赖 URL 重写,务必确保 public/.htaccess(Apache)或 Nginx 的 try_files 规则生效。

五 数据库与框架配置及常见问题

  • 数据库准备(示例):
    • 安装与启动 MariaDB/MySQL(略)
    • 创建库与用户并授权(示例):
      • CREATE DATABASE thinkphp DEFAULT CHARSET utf8mb4;
      • CREATE USER ‘tpuser’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
      • GRANT ALL PRIVILEGES ON thinkphp.* TO ‘tpuser’@‘localhost’;
      • FLUSH PRIVILEGES;
  • ThinkPHP 配置:
    • 使用 .env 或配置文件 config/database.php 设置数据库连接:
      • DB_TYPE=mysql
      • DB_HOST=127.0.0.1
      • DB_NAME=thinkphp
      • DB_USER=tpuser
      • DB_PASS=StrongPass!
      • DB_PORT=3306
      • DB_PREFIX=tp_
  • 常见问题排查:
    • 404/白屏:检查 public/.htaccess 或 Nginx try_files 是否正确;确认站点根目录为 public
    • 500 错误:查看 runtime 目录是否可写;检查 PHP 错误日志与 FPM 日志。
    • 路由无效:确认重写规则生效;PATH_INFO 传递正确(Nginx 需显式设置 fastcgi_param PATH_INFO)。
    • 权限问题:确保 apache:apachenginx:nginx 拥有项目目录的读写权限(生产环境谨慎设置 777)。
    • 端口访问被拒:核对云服务器安全组与系统防火墙(firewalld/iptables)已放行 80/443(及开发时的 8000)。

0