linux

Linux服务器上Laravel应用的部署流程

小樊
51
2025-10-05 20:26:19
栏目: 云计算

1. 准备Linux服务器环境
在部署前需安装Laravel运行所需的软件栈:PHP(≥7.3,需包含pdo_mysql、mbstring、xml、curl、zip、gd、bcmath等扩展)、Composer(PHP依赖管理工具)、Nginx/Apache(Web服务器)、MySQL/PostgreSQL(数据库)。以Ubuntu为例,可通过以下命令快速安装:

sudo apt update && sudo apt upgrade -y
sudo apt install php php-cli php-fpm php-mysql php-curl php-mbstring php-xml php-zip php-gd php-bcmath -y
sudo apt install composer -y
sudo apt install nginx mysql-server -y

安装完成后,启动并设置服务开机自启:

sudo systemctl start nginx mysql
sudo systemctl enable nginx mysql

2. 上传Laravel项目到服务器
使用SCP、FTP或Git将本地Laravel项目上传至服务器指定目录(如/var/www/your-domain.com)。例如,通过SCP命令:

scp -r /local/path/to/laravel-project username@server_ip:/var/www/your-domain.com

确保项目目录权限正确(后续步骤会调整)。

3. 安装PHP依赖
进入项目根目录,运行composer install安装所有依赖(生产环境建议添加--no-dev排除开发依赖,提升性能):

cd /var/www/your-domain.com
composer install --no-dev --optimize-autoloader

--optimize-autoloader可优化自动加载性能,减少运行时开销。

4. 配置环境变量
复制.env.example文件生成.env(包含数据库、应用密钥等敏感配置),并编辑该文件:

cp .env.example .env
nano .env

修改以下关键配置(根据实际情况调整):

APP_ENV=production  # 生产环境
APP_DEBUG=false     # 关闭调试模式
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=db_user
DB_PASSWORD=strong_password

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

php artisan key:generate

确保.env中的APP_KEY已正确生成(若未生成,可手动复制APP_KEY值)。

5. 运行数据库迁移与数据填充
执行迁移命令创建数据库表结构:

php artisan migrate --force  # --force强制在生产环境运行

若有初始数据需要填充(如测试用户、默认配置),可运行:

php artisan db:seed --class=YourSeederClass  # 可选

注意:迁移前需确保数据库已创建(可通过MySQL命令行或phpMyAdmin操作)。

6. 配置Web服务器(以Nginx为例)
创建Nginx服务器块配置文件(替代默认配置):

sudo nano /etc/nginx/sites-available/your-domain.com

粘贴以下配置(根据实际路径、域名调整):

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    root /var/www/your-domain.com/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:/var/run/php/php8.2-fpm.sock;  # 根据PHP版本调整
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;  # 禁止访问隐藏文件(如.git)
    }

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header X-XSS-Protection "1; mode=block";
}

启用配置并重启Nginx:

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

若使用Apache,需启用mod_rewrite模块并配置.htaccess文件。

7. 设置文件权限
Laravel的storage(日志、缓存、上传文件)和bootstrap/cache(路由/配置缓存)目录需可写,运行以下命令:

sudo chown -R www-data:www-data /var/www/your-domain.com  # www-data为Nginx默认用户
sudo chmod -R 755 /var/www/your-domain.com
sudo chmod -R 775 /var/www/your-domain.com/storage /var/www/your-domain.com/bootstrap/cache

注意:避免使用777权限(存在安全风险),优先使用775

8. 优化应用性能
通过缓存配置、路由、视图提升响应速度:

php artisan config:cache      # 缓存配置文件
php artisan route:cache       # 缓存路由
php artisan view:cache        # 缓存视图(生产环境推荐)

注意:开发环境无需缓存(频繁修改文件时需清除缓存:php artisan config:clear)。

9. 配置SSL证书(可选但推荐)
使用Let’s Encrypt免费获取SSL证书,启用HTTPS:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com -d www.your-domain.com

按照提示完成配置,Certbot会自动修改Nginx配置以支持HTTPS,并设置自动续期。

10. 启动队列(若使用队列功能)
若项目使用Laravel队列(如发送邮件、处理异步任务),需启动队列监听器:

php artisan queue:work --daemon  # 持续运行(生产环境推荐)

或使用supervisor管理队列进程(确保进程崩溃后自动重启)。

11. 测试访问
在浏览器输入http://your-domain.comhttps://your-domain.com,检查Laravel应用是否正常加载。若遇到502错误,需检查Nginx配置、PHP-FPM服务状态及文件权限;若遇到404错误,需确认public目录是否为Web根目录。

0
看了该问题的人还看了