温馨提示×

Ubuntu中Laravel项目如何部署

小樊
43
2025-10-31 15:27:56
栏目: 智能运维

1. 准备服务器环境
首先更新系统软件包,确保所有组件为最新版本:

sudo apt update && sudo apt upgrade -y 

安装Nginx(高性能Web服务器)、PHP(Laravel依赖环境)及常用扩展(如MySQL驱动、JSON解析、XML处理等)、MySQL(关系型数据库)和Composer(PHP依赖管理工具):

sudo apt install nginx php-fpm php-mysql php-curl php-json php-common php-zip php-gd php-mbstring php-xml php-bcmath mysql-server -y 

验证Composer安装:

composer --version 

2. 配置PHP-FPM
编辑PHP-FPM池配置文件(默认路径为/etc/php/8.1/fpm/pool.d/www.conf,版本号随系统而异),确保listen指令与Nginx的FastCGI设置匹配:

sudo nano /etc/php/8.1/fpm/pool.d/www.conf 

找到listen = /run/php/php8.1-fpm.sock(部分系统可能使用127.0.0.1:9000),保存并退出。启动并启用PHP-FPM服务:

sudo systemctl start php8.1-fpm sudo systemctl enable php8.1-fpm 

3. 部署Laravel项目
将本地项目上传至服务器(推荐使用scprsync,避免直接在服务器上创建项目导致依赖问题),例如上传至/var/www/laravel-app

scp -r ./local-laravel-project user@your_server_ip:/var/www/laravel-app 

进入项目目录,安装PHP依赖(使用--optimize-autoloader优化自动加载,--no-dev移除开发依赖以提升性能):

cd /var/www/laravel-app composer install --optimize-autoloader --no-dev 

复制.env.example.env(环境配置模板),并编辑.env文件,配置数据库连接(替换your_databaseyour_usernameyour_password为实际值)、应用密钥(后续生成)等信息:

cp .env.example .env nano .env 

生成应用密钥(用于加密会话、CSRF令牌等):

php artisan key:generate 

运行数据库迁移(创建数据表结构,如usersposts等):

php artisan migrate 

(可选)清除缓存以应用配置变更:

php artisan config:clear php artisan cache:clear 

4. 配置Nginx虚拟主机
创建Nginx服务器块配置文件(以laravel-app为例),指定项目根目录为public(Laravel入口文件index.php所在目录):

sudo nano /etc/nginx/sites-available/laravel-app 

粘贴以下配置(替换your_domain.com为域名或IP,/var/www/laravel-app为项目路径):

server { listen 80; server_name your_domain.com www.your_domain.com; root /var/www/laravel-app/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.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } error_log /var/log/nginx/laravel-app_error.log; access_log /var/log/nginx/laravel-app_access.log; } 

启用配置(创建符号链接至sites-enabled目录):

sudo ln -s /etc/nginx/sites-available/laravel-app /etc/nginx/sites-enabled/ 

测试Nginx配置语法(无错误则继续):

sudo nginx -t 

重启Nginx服务:

sudo systemctl restart nginx 

5. 设置文件权限
Laravel的storage(日志、缓存、上传文件)和bootstrap/cache(框架缓存)目录需要Web服务器用户(通常为www-data)的可写权限:

sudo chown -R www-data:www-data /var/www/laravel-app/storage sudo chown -R www-data:www-data /var/www/laravel-app/bootstrap/cache sudo chmod -R 775 /var/www/laravel-app/storage sudo chmod -R 775 /var/www/laravel-app/bootstrap/cache 

6. 验证部署
在浏览器中访问http://your_domain.com(或服务器IP),若看到Laravel欢迎页面或项目首页,则部署成功。若遇到502 Bad Gateway错误,需检查Nginx与PHP-FPM的通信(如fastcgi_pass路径是否正确)、项目目录权限是否足够。

常见问题排查

  • 502 Bad Gateway:确认PHP-FPM服务正在运行(sudo systemctl status php8.1-fpm),并检查Nginx配置中的fastcgi_pass路径是否与PHP-FPM的listen指令一致。
  • 403 Forbidden:检查项目目录权限(www-data用户是否有读取权限),或Nginx配置中root指令是否指向public目录。
  • 500 Internal Server Error:查看Laravel日志(/var/www/laravel-app/storage/logs/laravel.log)或Nginx日志(/var/log/nginx/error.log)定位具体错误。

0