需打通代码、依赖、配置、Web服务和缓存五个环节:确认PHP≥8.2并安装相关扩展;安装Composer、Nginx、MySQL并初始化root密码;拉取代码、安装生产依赖、配置.env、生成密钥;Nginx指向public目录并禁止敏感路径访问;执行迁移与config/route/view缓存;最后用Certbot启用HTTPS。

将Laravel项目从本地开发环境直接推送到生产服务器并对外提供服务,需要打通代码、依赖、配置、Web服务和缓存五个关键环节,缺一不可。
准备生产服务器基础环境
登录服务器后,先确认PHP版本是否满足要求:执行 php -v,必须为8.2或更高版本。若不满足,需添加Ondřej PHP源并安装:sudo add-apt-repository ppa:ondrej/php && sudo apt update && sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-bcmath php8.2-opcache。
安装Composer:下载安装脚本并全局启用:curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer。
安装Nginx和MySQL:sudo apt install nginx mysql-server。启动服务:sudo systemctl start nginx mysql,并设为开机自启:sudo systemctl enable nginx mysql。
【MySQL必须初始化root密码,否则后续Laravel连接会失败】。运行sudo mysql_secure_installation,按提示设置密码并禁用匿名用户。
拉取代码并安装生产依赖
在/var/www目录下创建项目文件夹:sudo mkdir -p /var/www/myapp,然后进入:cd /var/www/myapp。
克隆你的Git仓库(确保远程仓库已推送最新代码):sudo git clone https://github.com/yourname/your-laravel-app.git .。
切换到项目根目录后,执行:sudo composer install --optimize-autoloader --no-dev。这一步跳过开发依赖,仅安装生产必需包,并生成优化的自动加载映射。
复制环境模板:sudo cp .env.example .env,再用sudo nano .env编辑关键项:
APP_ENV=productionAPP_DEBUG=falseAPP_URL=https://yourdomain.com-
DB_HOST=127.0.0.1(若MySQL与Laravel同机,无需改) -
DB_DATABASE=myapp(提前在MySQL中创建该数据库) -
DB_USERNAME=root(或你创建的专用账号) DB_PASSWORD=your_secure_password
生成密钥:sudo php artisan key:generate。这步必须执行,否则应用无法启动。
配置Nginx指向public目录
创建站点配置文件:sudo nano /etc/nginx/sites-available/myapp,写入以下内容:
server {<br> listen 80;<br> server_name yourdomain.com;<br> root /var/www/myapp/public;<br> index index.php;<br><br> location / {<br> try_files $uri $uri/ /index.php?$query_string;<br> }<br><br> location ~ \.php$ {<br> include snippets/fastcgi-php.conf;<br> fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;<br> }<br><br> location ~ /\.env {<br> deny all;<br> }<br>}
启用该站点:sudo ln -sf /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/。
测试Nginx配置语法:sudo nginx -t。若输出success,则重载服务:sudo systemctl reload nginx。
【root路径必须精确到public子目录,写成/var/www/myapp会导致403错误】。
执行迁移与缓存优化
第一步:执行数据库迁移(强制在生产环境运行):sudo php artisan migrate --force。
第二步:生成配置缓存:sudo php artisan config:cache。这一步让所有配置合并为单个PHP文件,大幅提升加载速度。
第三步:生成路由缓存:sudo php artisan route:cache。适用于路由结构稳定的应用,能减少每次请求的路由解析开销。
第四步:生成视图缓存:sudo php artisan view:cache。Blade模板被编译为原生PHP代码,避免重复编译。
第五步:设置storage和bootstrap/cache目录权限:sudo chown -R www-data:www-data /var/www/myapp/storage /var/www/myapp/bootstrap/cache。
启用HTTPS并加固安全
安装Certbot:sudo apt install certbot python3-certbot-nginx。
申请并自动配置SSL证书:sudo certbot --nginx -d yourdomain.com。Certbot会自动修改Nginx配置,添加443监听和重定向规则。
禁止访问敏感路径:确认Nginx配置中已有location ~ /\.env { deny all; },再补充两行:
location ~ /\.git { deny all; }<br>location ~ /artisan { deny all; }
重启Nginx生效:sudo systemctl restart nginx。


















