温馨提示×

Ubuntu下Laravel项目如何部署

小樊
37
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