在 Ubuntu 上部署 Laravel 应用
一 准备与版本要求
php -vphp -m(确保包含 mbstring、openssl、pdo_mysql、tokenizer、xml、ctype、json 等)二 安装与配置 LEMP 或 LAMP
sudo apt update && sudo apt upgrade -ysudo apt install nginx -y && sudo systemctl enable --now nginxsudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd php8.1-bcmath -ysudo apt install mysql-server -y && sudo mysql_secure_installationsudo mysql -u root -pCREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'StrongPass!';GRANT ALL ON laravel_db.* TO 'laravel_user'@'localhost'; FLUSH PRIVILEGES; EXIT;curl -sS https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composer && composer -V三 部署 Laravel 应用
cd /var/wwwcomposer create-project --prefer-dist laravel/laravel laravel_appcomposer install --optimize-autoloader --no-devcp .env.example .env 并编辑:
APP_ENV=production、APP_DEBUG=falseAPP_URL=https://your_domainDB_CONNECTION=mysql、DB_HOST=127.0.0.1、DB_PORT=3306、DB_DATABASE=laravel_db、DB_USERNAME=laravel_user、DB_PASSWORD=StrongPass!php artisan key:generatephp artisan migrate --force,如需演示数据:php artisan db:seed --forcesudo chown -R www-data:www-data /var/www/laravel_appfind /var/www/laravel_app -type d -exec chmod 755 {} \;find /var/www/laravel_app -type f -exec chmod 644 {} \;chmod -R ug+rwx storage bootstrap/cache四 配置 Nginx 与启用 HTTPS
try_files 将所有请求转发给 index.php。sudo ln -s /etc/nginx/sites-available/laravel_app /etc/nginx/sites-enabled/sudo nginx -t && sudo systemctl reload nginxsudo apt install certbot python3-certbot-nginx -ysudo certbot --nginx -d your_domain -d www.your_domainsudo certbot renew --dry-run五 生产优化与常见问题
php artisan config:cache、php artisan route:cache、php artisan view:cachephp artisan queue:work --queue=default --tries=3APP_DEBUG=false;确保 .env 不在 Web 可访问路径;隐藏敏感文件:在 Nginx 中加入 location ~ /\.(?!well-known).* { deny all; }root 指向 public 且 try_files $uri $uri/ /index.php?$query_string; 正确;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 与 PHP-FPM 监听路径;composer config -g repo.packagist composer https://packagist.phpcomposer.com)。