温馨提示×

Ubuntu下Laravel项目如何部署

小樊
33
2025-10-18 17:01:01
栏目: 智能运维

Ubuntu下部署Laravel项目的完整步骤

1. 准备工作

  • 确保服务器已安装Ubuntu(推荐22.04及以上版本),并具备sudo权限;
  • 通过SSH连接到服务器;
  • 准备好待部署的Laravel项目代码(或后续通过Composer创建)。

2. 更新系统包

运行以下命令更新系统包列表及已安装的包,确保系统处于最新状态:

sudo apt update && sudo apt upgrade -y 

3. 安装Web服务器(以Nginx为例)

Laravel需要Web服务器来处理HTTP请求,推荐使用Nginx(高性能、轻量级):

sudo apt install nginx -y # 启动Nginx并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 验证Nginx状态(显示“active (running)”即为成功) sudo systemctl status nginx 

4. 安装PHP及必要扩展

Laravel依赖PHP 8.1及以上版本,需安装PHP核心及常用扩展:

sudo apt install php-fpm php-mysql php-zip php-gd php-mbstring php-curl php-xml php-bcmath -y # 验证PHP版本(需符合Laravel要求) php -v 

5. 配置PHP-FPM

编辑PHP-FPM池配置文件,确保与Nginx通信正常:

sudo nano /etc/php/8.1/fpm/pool.d/www.conf # 找到“listen”行,确认值为“/run/php/php8.1-fpm.sock”(与Nginx配置一致) listen = /run/php/php8.1-fpm.sock # 保存退出后重启PHP-FPM sudo systemctl restart php8.1-fpm 

6. 配置Nginx虚拟主机

为Laravel项目创建专属Nginx配置,替换yourdomain.com为实际域名/IP:

sudo nano /etc/nginx/sites-available/yourdomain.com 

粘贴以下配置(关键路径需调整):

server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourproject/public; # Laravel项目public目录 index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; # 路由转发到index.php } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 与PHP-FPM通信 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; # 禁止访问.htaccess文件 } } 

启用配置并重启Nginx:

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置语法 sudo systemctl restart nginx 

7. 安装Composer(PHP依赖管理工具)

Composer用于安装Laravel依赖,若未安装则运行:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer # 验证安装 composer -v 

8. 部署Laravel项目

方式一:通过Composer创建新项目

cd /var/www/ composer create-project --prefer-dist laravel/laravel yourproject 

方式二:上传现有项目

将本地项目上传至/var/www/yourproject(通过SFTP/SCP工具),然后进入项目目录:

cd /var/www/yourproject 

9. 配置环境变量

复制.env.example.env(包含敏感配置),并编辑数据库等信息:

cp .env.example .env nano .env 

修改以下关键配置(替换为实际值):

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_app # 数据库名 DB_USERNAME=laravel_user # 数据库用户 DB_PASSWORD=strong_pass # 数据库密码 APP_KEY= # 生成密钥(下一步) 

生成应用密钥(用于加密):

php artisan key:generate 

10. 配置数据库

10.1 安装MySQL

sudo apt install mysql-server -y sudo mysql_secure_installation # 安全配置(设置root密码、移除匿名用户等) 

10.2 创建数据库及用户

登录MySQL:

sudo mysql -u root -p 

执行以下SQL(替换strong_pass为实际密码):

CREATE DATABASE laravel_app; CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'strong_pass'; GRANT ALL PRIVILEGES ON laravel_app.* TO 'laravel_user'@'localhost'; FLUSH PRIVILEGES; EXIT; 

11. 运行数据库迁移

将数据库结构同步到MySQL:

php artisan migrate 

12. 设置文件权限

确保Web服务器(www-data)有权访问项目目录:

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 # 存储目录需可写 sudo chmod -R 775 /var/www/yourproject/bootstrap/cache # 缓存目录需可写 

13. 优化Laravel性能

清理缓存并优化自动加载:

php artisan optimize 

14. 访问项目

在浏览器输入http://yourdomain.com,若看到Laravel欢迎页面,则部署成功!

可选步骤:启用HTTPS(推荐)

使用Let’s Encrypt免费SSL证书,提升网站安全性:

sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com # 按提示完成证书申请(自动配置Nginx重定向HTTP→HTTPS) 

常见问题排查

  • 502 Bad Gateway:检查Nginx与PHP-FPM通信(fastcgi_pass路径是否正确)、PHP-FPM服务状态;
  • 403 Forbidden:确认项目目录权限(www-data用户有权访问);
  • 数据库连接失败:检查.env中的数据库配置(用户名、密码、数据库名)及MySQL服务状态。

0