deepin 20.9 部署 laravel 10 必须过三关:一、php ≥8.1 且 mbstring、openssl、pdo、intl 等扩展真实启用;二、配置腾讯云 composer 镜像并验证生效;三、项目初始化后执行 php artisan key:generate、config:clear、cache:clear 并设 storage 权限。

Deepin 20.9 部署 Laravel 10 要过三关:PHP 版本必须 ≥8.1 且扩展真实加载、Composer 镜像必须稳定可用、项目初始化后必须清理缓存并生成密钥。缺一不可,否则 php artisan serve 启动失败或页面报错。
确认 PHP ≥8.1 并启用关键扩展
Laravel 10 明确要求 PHP 8.1+,只运行 php -v 不够——得验证扩展是否真在运行时生效:
-
php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|ctype|json|intl)"必须每项都有输出;缺intl在 Deepin 上很常见,执行sudo apt install php-intl - 检查
php --ini输出的Loaded Configuration File路径,打开对应php.ini,确认extension=mbstring、extension=openssl等行未被注释(无分号开头) - Deepin 20.9 默认源可能只带 PHP 8.0,需手动添加 Ondřej Surý 的 PPA:
sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php && sudo apt update && sudo apt install php8.1 php8.1-cli php8.1-mbstring php8.1-xml php8.1-zip php8.1-sqlite3
配腾讯云 Composer 镜像并验证
Deepin 自带的 apt 源不包含 Composer,且默认镜像在 2026 年已不稳定。阿里云镜像近期有 provider JSON 404 问题,腾讯云更可靠:
- 先安装 Composer:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer - 设镜像:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - 验证是否生效:
composer config -l | grep repo.packagist,输出应含https://mirrors.cloud.tencent.com/composer/ - 若后续
create-project卡住或报zlib_decode错,加内存限制重试:COMPOSER_MEMORY_LIMIT=-1 composer create-project laravel/laravel:^10.0 myapp
创建项目后必须执行的四条命令
仅跑通 composer create-project 不代表能访问。Laravel 10 初始化后,.env 是空的,缓存未清,密钥未生成,storage 权限未设:
- 进入项目目录后,立即执行:
php artisan key:generate(否则报 “Application key not set”) - 清配置缓存:
php artisan config:clear和php artisan cache:clear - 确保
storage和bootstrap/cache可写:sudo chown -R $USER:www-data storage bootstrap/cache && chmod -R 775 storage bootstrap/cache - 启动服务:
php artisan serve(默认http://127.0.0.1:8000),不是php -S——后者不加载 Laravel 路由中间件
用 Nginx 部署时 public 目录权限和 try_files 是关键
如果想用 Nginx 替代 artisan serve(比如上线或长期运行),不能把 root 指向项目根目录,必须指向 public,且 try_files 规则不能少:
- Nginx 配置中,
root /var/www/myapp/public;是硬性要求,否则路由 404 -
location / { try_files $uri $uri/ /index.php?$query_string; }缺失会导致所有非首页请求返回 404 -
storage和bootstrap/cache必须对www-data用户可写,但不要用777;sudo chown -R www-data:www-data storage bootstrap/cache更安全 - Deepin 20.9 默认没开 Nginx,装完记得:
sudo systemctl enable nginx && sudo systemctl start nginx
最容易被忽略的是:Laravel 10 的 config:cache 命令在开发阶段不建议提前运行,它会固化环境变量,导致改了 .env 也不生效;只有确定要上生产时才执行。本地调试阶段,靠 config:clear + key:generate 就够了。











