温馨提示×

Debian如何为Laravel提供最佳服务器环境

小樊
41
2025-12-17 02:02:54
栏目: 云计算

Debian 为 Laravel 提供最佳服务器环境

一 系统准备与基础组件

  • 更新系统并安装基础工具
    • sudo apt update && sudo apt full-upgrade -y
    • sudo apt install -y curl wget git unzip
  • 安装并优化 PHP(以 PHP 8.2 为例,按你的 Debian 版本选择可用版本)
    • sudo apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-json php8.2-xml php8.2-mbstring php8.2-curl php8.2-zip php8.2-gd php8.2-bcmath php8.2-intl
    • 启用常用扩展(如 fileinfo、mbstring、openssl 等),编辑对应 php.ini 后重启 FPM:sudo systemctl restart php8.2-fpm
  • 安装 Composer
    • curl -sS https://getcomposer.org/installer | php
    • sudo mv composer.phar /usr/local/bin/composer
  • 安装数据库(二选一)
    • MariaDB:sudo apt install -y mariadb-server && sudo mysql_secure_installation
    • MySQL:sudo apt install -y mysql-server && sudo mysql_secure_installation
  • Web 服务器(二选一)
    • Nginx:sudo apt install -y nginx
    • Apache:sudo apt install -y apache2 && sudo a2enmod rewrite

二 Web 服务器与 PHP-FPM 配置

  • Nginx 站点示例(将 yourdomain.com 与路径替换为你的实际值)
    • 建议将站点根目录指向 /var/www/yourproject/public
    • 示例要点:
      • root 指向 public;index 为 index.php
      • try_files $uri $uri/ /index.php?$query_string;
      • PHP 通过 FPM:fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      • 安全头:add_header X-Frame-Options “SAMEORIGIN”; add_header X-Content-Type-Options “nosniff”;
      • 隐藏敏感文件:location ~ /.(?!well-known). { deny all; }
    • 启用站点:sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx
  • Apache 虚拟主机要点
    • DocumentRoot 指向 /var/www/yourproject/public
    • 中 AllowOverride All(启用 .htaccess)
    • 启用站点:sudo a2ensite yourproject.conf && sudo systemctl reload apache2
  • PHP-FPM 与权限
    • FPM 池通常以 www-data:www-data 运行(检查 /etc/php/8.2/fpm/pool.d/www.conf)
    • 项目属主:sudo chown -R www-data:www-data /var/www/yourproject
    • 目录权限:sudo chmod -R 755 /var/www/yourproject;sudo chmod -R 775 /var/www/yourproject/storage /var/www/yourproject/bootstrap/cache(避免使用 777)

三 部署与数据库

  • 创建项目
    • 全新项目:composer create-project --prefer-dist laravel/laravel /var/www/yourproject
    • 已有代码:git clone 或上传至 /var/www/yourproject
  • 安装依赖与优化
    • 生产环境:composer install --optimize-autoloader --no-dev
  • 环境变量与密钥
    • cp .env.example .env && php artisan key:generate
    • 编辑 .env:设置 APP_ENV=productionAPP_DEBUG=false、数据库连接等
  • 数据库准备(以 MySQL/MariaDB 为例)
    • 登录数据库后执行:
      • CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      • CREATE USER ‘laravel_user’@‘localhost’ IDENTIFIED BY ‘StrongPassword!’;
      • GRANT ALL PRIVILEGES ON laravel_db.* TO ‘laravel_user’@‘localhost’;
      • FLUSH PRIVILEGES;
    • 迁移与填充:php artisan migrate --force(必要时 php artisan db:seed)

四 性能与安全优化

  • PHP 运行时
    • 启用并优化 OPcache(生产环境强烈建议)
      • opcache.enable=1
      • opcache.memory_consumption=128
      • opcache.interned_strings_buffer=8
      • opcache.max_accelerated_files=4000
      • opcache.revalidate_freq=60
  • Laravel 应用层
    • 生产缓存:php artisan config:cache、php artisan route:cache、php artisan view:cache(开发环境勿启用)
    • 缓存驱动:优先 Redis(CACHE_DRIVER=redis;如需会话/队列也用 Redis)
    • 队列与异步:配置 QUEUE_CONNECTION=redis,耗时任务入队;使用 Supervisor 守护队列进程,示例:
      • sudo apt install -y supervisor
      • /etc/supervisor/conf.d/laravel-worker.conf:
        • [program:laravel-worker]
        • command=php /var/www/yourproject/artisan queue:work --sleep=3 --tries=3 --daemon
        • autostart=true;autorestart=true;user=www-data;numprocs=4
        • redirect_stderr=true;stdout_logfile=/var/www/yourproject/storage/logs/worker.log
      • 使配置生效:sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start laravel-worker:*
  • Web 服务器与安全
    • 启用 HTTPS(Let’s Encrypt):sudo apt install -y certbot python3-certbot-nginx && sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
    • 安全头与静态资源:配置 X-Frame-Options、X-Content-Type-Options、X-XSS-Protection;对 favicon.ico、robots.txt 等关闭访问日志
    • 隐藏敏感文件与目录:location ~ /.(?!well-known). { deny all; };location ~ /.ht { deny all; }
  • 系统层面(可选,按负载调优)
    • 文件描述符:在 /etc/security/limits.conf 提高 nofile(如 65535)
    • 内核网络参数:如 net.core.somaxconn、net.ipv4.tcp_max_syn_backlog 等(sysctl -p 生效)
  • 文件权限建议
    • 推荐:sudo chown -R www-data:www-data /var/www/yourproject
    • 目录:sudo find /var/www/yourproject -type d -exec chmod 755 {} ;
    • 可写目录:sudo chmod -R 775 /var/www/yourproject/storage /var/www/yourproject/bootstrap/cache
    • 避免使用 777,优先通过用户组与 ACL 精细控制

五 上线检查清单

  • 访问域名显示 Laravel 欢迎页或你的应用首页
  • .env 中 APP_ENV=production、APP_DEBUG=false,数据库连接正常
  • 已执行:composer install --optimize-autoloader --no-dev
  • 已缓存:config:cache、route:cache、view:cache(仅生产)
  • 队列由 Supervisor 正常守护(如启用队列)
  • HTTPS 已启用且自动续期(certbot)
  • 日志可写:storage/logs/ 与 Supervisor 日志无报错
  • 定期备份:数据库与代码(考虑自动化与异地)

0