温馨提示×

ubuntu上thinkphp开发环境怎么搭建

小樊
39
2025-12-14 15:45:33
栏目: 编程语言

Ubuntu 上搭建 ThinkPHP 开发环境

一 环境准备与安装

  • 更新系统并安装基础组件(以 Ubuntu 20.04/22.04 为例,PHP 版本请以实际仓库为准):
    • 安装 Web 与 PHP:sudo apt update && sudo apt install -y nginx php php-fpm php-mysql php-mbstring php-xml php-curl php-zip
    • 安装数据库:sudo apt install -y mysql-server
    • 安全初始化数据库(可选):sudo mysql_secure_installation
    • 验证版本:php -v、nginx -v、mysql --version
  • 安装 Composer(PHP 依赖管理):
    • curl -sS https://getcomposer.org/installer | php
    • sudo mv composer.phar /usr/local/bin/composer
    • 可选:设置国内镜像加速 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

二 创建项目与目录权限

  • 使用 Composer 创建项目(以 ThinkPHP 6 为例,项目名自定义为 tp6):
    • composer create-project topthink tp6
    • cd tp6
  • 目录权限(确保写入 runtime 等目录):
    • sudo chown -R www-data:www-data /var/www/html/tp6
    • sudo chmod -R 755 /var/www/html/tp6
  • 数据库准备(示例):
    • 登录 MySQL:sudo mysql -u root -p
    • 创建库与用户:CREATE DATABASE tp6 DEFAULT CHARSET utf8mb4; CREATE USER ‘tp6’@‘localhost’ IDENTIFIED BY ‘StrongPass!’; GRANT ALL ON tp6.* TO ‘tp6’@‘localhost’; FLUSH PRIVILEGES;

三 Web 服务器配置

  • Nginx 配置(推荐,指向 public 目录并支持 PATHINFO)
    • 新建站点:sudo nano /etc/nginx/sites-availablephp
    • 示例配置:
      server {
          listen 80;
          server_name your_domain_or_ip;
          root /var/www/html/tp6/public;
          index index.php;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # 按实际 PHP 版本调整
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      
          location ~ /\.env { deny all; }
      }
      
    • 启用站点并重启:sudo ln -s /etc/nginx/sites-availablephp /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl restart nginx
  • Apache 配置(可选)
    • 启用重写:sudo a2enmod rewrite && sudo systemctl restart apache2
    • 虚拟主机示例(DocumentRoot 指向 public):
      <VirtualHost *:80>
          ServerAdmin webmaster@localhost
          DocumentRoot /var/www/html/tp6/public
          <Directory /var/www/html/tp6/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 000-default.conf && sudo systemctl restart apache2

四 框架配置与本地开发启动

  • 配置数据库连接(优先使用 .env,若不存在则编辑 config/database.php
    • .env 示例:
      DB_TYPE=mysql
      DB_HOST=127.0.0.1
      DB_NAME=tp6
      DB_USER=tp6
      DB_PASSWORD=StrongPass!
      DB_PORT=3306
      DB_PREFIX=
      
  • 开发环境启动
    • 内置服务器(仅开发):cd /var/www/html/tp6 && php think run
    • 浏览器访问:http://your_domain_or_ip:8000(内置服务器默认端口为 8000
  • 常见问题快速排查
    • 502 Bad Gateway:检查 PHP-FPM 是否运行(systemctl status php7.4-fpm)、Nginx 中 fastcgi_pass 路径是否与 /etc/php/7.4/fpm/pool.d/www.conf 的 listen 一致
    • 路由 404:确认 Nginx 包含 try_files $uri $uri/ /index.php?$query_string;
    • 权限错误:确认 runtime 目录可写(www-data 拥有)

五 生产环境建议

  • 关闭调试:在 .env 设置 APP_DEBUG=false,或在 config/app.php 设置 ‘app_debug’ => false
  • 性能与安全:启用 OPcache,使用 Redis 会话/缓存,限制 .env 访问(已在 Nginx 示例中配置),定期更新框架与依赖
  • HTTPS:使用 Certbot 获取免费证书(Apache 示例:sudo certbot --apache -d your_domain_or_ip),并按需自动续期
  • 日志排查:Nginx 错误日志 /var/log/nginx/error.log,Apache 错误日志 /var/log/apache2/error.log

0