温馨提示×

在Linux上运行Laravel需要注意什么

小樊
52
2025-09-29 09:53:22
栏目: 智能运维

1. 环境准备:安装必要组件
在Linux上运行Laravel前,需确保系统已安装以下核心组件:

  • PHP:Laravel 8.x及以上版本要求PHP 7.3或更高版本,需安装常用扩展(如mbstringopensslpdo_mysqltokenizerxml等);
  • Composer:PHP依赖管理工具,用于安装Laravel框架及项目依赖;
  • Web服务器:推荐使用Nginx(高性能)或Apache(兼容性好),需配置虚拟主机指向项目public目录;
  • 数据库:Laravel支持MySQL、PostgreSQL等,需安装对应数据库服务并创建数据库;
  • Node.js & NPM:用于编译前端资源(如CSS、JavaScript),Laravel Mix依赖这些工具。

2. 文件权限:保障安全与可访问性
Laravel的storage(日志、缓存、上传文件)和bootstrap/cache(框架缓存)目录需要Web服务器用户(如www-data)的读写权限,否则会导致“无法写入”错误。正确设置步骤如下:

  • 将项目目录所有者更改为Web服务器用户:sudo chown -R www-data:www-data /path/to/laravel
  • 递归设置目录权限为755(允许所有者读写执行,其他用户读执行)、文件权限为644(允许所有者读写,其他用户只读):
    sudo find /path/to/laravel -type d -exec chmod 755 {} \; sudo find /path/to/laravel -type f -exec chmod 644 {} \; 
  • 单独为storagebootstrap/cache目录添加组写权限:sudo chmod -R ug+rwx storage bootstrap/cache(确保Web服务器可写入)。

3. .env配置:避免敏感信息泄露

  • .env.example复制生成.env文件:cp .env.example .env
  • 修改.env中的关键配置:数据库连接(DB_CONNECTIONDB_HOSTDB_DATABASEDB_USERNAMEDB_PASSWORD)、应用密钥(APP_KEY,需通过php artisan key:generate生成)、调试模式(生产环境务必设置为APP_DEBUG=false,避免暴露敏感错误信息)。

4. Web服务器配置:正确指向public目录

  • Nginx配置示例
    server { listen 80; server_name yourdomain.com; root /path/to/laravel/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据PHP版本调整 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.(?!well-known).* { deny all; # 禁止访问隐藏文件(如.git) } } 
  • Apache配置示例
    需启用mod_rewrite模块(sudo a2enmod rewrite),并在虚拟主机配置中添加:
    <Directory /path/to/laravel/public> AllowOverride All Require all granted </Directory> 
    重启Web服务器(sudo systemctl restart nginx/apache2)使配置生效。

5. 依赖与缓存:提升性能与稳定性

  • 安装项目依赖:进入项目目录,运行composer install(根据composer.json安装所有依赖);
  • 生成应用密钥:php artisan key:generate(用于加密会话、令牌等敏感数据);
  • 清除旧缓存:php artisan config:clear(清除配置缓存)、php artisan route:clear(清除路由缓存)、php artisan view:clear(清除视图缓存);
  • 生成新缓存(生产环境推荐):php artisan config:cache(缓存配置)、php artisan route:cache(缓存路由)、php artisan view:cache(缓存视图),显著提升应用启动速度。

6. SELinux(可选):解决权限冲突
若系统启用SELinux(如CentOS),需调整安全上下文以允许Web服务器访问项目文件:

  • 设置项目目录的SELinux上下文为httpd_sys_rw_content_t
    sudo semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/laravel(/.*)?" sudo restorecon -Rv /path/to/laravel 
    此操作允许Web服务器读写项目中的所有文件,避免因SELinux导致的权限问题。

0