温馨提示×

ThinkPHP在Debian中如何配置环境

小樊
36
2025-12-17 02:19:46
栏目: 编程语言

在 Debian 上配置 ThinkPHP 运行环境

一 准备与安装基础组件

  • 更新索引并安装基础软件:
    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y nginx mysql-server composer
  • 查看可用的 PHP 版本并安装(示例为 PHP 8.2;如为 7.4/8.1/8.3,将版本号替换为实际值):
    • apt-cache policy php
    • sudo apt install -y php php-cli php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-bcmath
  • 启动并开机自启 PHP-FPMNginx
    • sudo systemctl enable --now php8.2-fpm nginx
  • 验证安装:
    • php -v
    • sudo systemctl status php8.2-fpm nginx 说明:ThinkPHP 可在 Linux 上稳定运行,建议组合为 Nginx + PHP-FPM + MySQL,并使用 Composer 管理依赖。

二 部署 ThinkPHP 项目

  • 放置代码(推荐将站点根目录指向项目的 public 目录):
    • sudo mkdir -p /var/www/your_project
    • 将项目文件上传至该目录(如使用 git 或 scp)
  • 安装依赖与初始化目录权限:
    • cd /var/www/your_project
    • composer install --optimize-autoloader --no-dev
    • sudo chown -R www-data:www-data /var/www/your_project
    • sudo chmod -R 755 /var/www/your_project
    • sudo chmod -R 775 /var/www/your_project/runtime
  • 配置数据库连接(以 .envconfig/database.php 为准,示例为 .env):
    • DB_CONNECTION=mysql
    • DB_HOST=127.0.0.1
    • DB_PORT=3306
    • DB_DATABASE=your_db
    • DB_USERNAME=your_user
    • DB_PASSWORD=your_password
  • 创建数据库与用户(示例 SQL):
    • CREATE DATABASE your_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    • CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘your_password’;
    • GRANT ALL PRIVILEGES ON your_db.* TO ‘your_user’@‘localhost’;
    • FLUSH PRIVILEGES;
  • 开发环境可选:启动内置服务器进行快速验证
    • php think run --host 0.0.0.0 --port 8000 说明:确保 public 为 Web 可访问根目录,安装依赖后设置 runtime 可写,生产环境关闭调试模式。

三 配置 Web 服务器

  • Nginx 配置示例(站点根目录指向 public,隐藏入口 index.php)
    • 新建站点:sudo nano /etc/nginx/sites-available/your_project
    • 内容示例:
      server {
          listen 80;
          server_name your_domain_or_ip;
          root /var/www/your_project/public;
          index index.php index.html;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php8.2-fpm.sock;  # 按实际 PHP 版本调整
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      
          location ~ /\.ht {
              deny all;
          }
      }
      
    • 启用站点并重启:
      • sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/
      • sudo nginx -t && sudo systemctl reload nginx
  • Apache 配置要点(如选择 Apache)
    • 启用重写:sudo a2enmod rewrite
    • 虚拟主机示例:
      <VirtualHost *:80>
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/your_project/public
          <Directory /var/www/your_project/public>
              Options Indexes FollowSymLinks
              AllowOverride All
              Require all granted
          </Directory>
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      
    • 启用站点并重启:sudo a2ensite your_project.conf && sudo systemctl reload apache2 说明:Nginx 推荐将 root 指向 public 并使用 try_files 转发到 index.php;Apache 需启用 mod_rewrite 并开启 AllowOverride All

四 生产环境与安全加固

  • 关闭调试与优化:
    • 将应用配置中的 app_debug 设为 false(如 config/app.php 或 .env)
    • 设置 APP_ENV=production
  • 目录与权限:
    • 确保 runtimestorage 等可写目录权限最小化(如 775/755,属主 www-data)
  • 启用 HTTPS(Let’s Encrypt 示例,Apache):
    • sudo apt install certbot python3-certbot-apache
    • sudo certbot --apache -d your_domain_or_ip
  • 防火墙与端口:
    • 如使用 UFW:sudo ufw allow ‘Nginx Full’(或 ‘Apache Full’)
  • 日志排查:
    • Nginx:/var/log/nginx/error.log
    • Apache:/var/log/apache2/error.log 说明:生产环境务必关闭调试、限制写入权限、启用 HTTPS,并通过日志快速定位问题。

0