必须确保php≥8.2并启用openssl、mbstring、curl、json、xml、zip等扩展,且proc_open未被禁用;使用lnmp一键包安装nginx、mysql 8.0、php 8.2;站点根目录指向public;修改php.ini启用proc_open和cgi.fix_pathinfo=0;执行composer create-project安装项目;设置storage与bootstrap/cache权限、生成app_key、配置.env及伪静态规则。

在阿里云ECS服务器上部署Laravel项目,必须确保PHP版本≥8.2(Laravel 11要求)、已启用openssl、mbstring、curl、json、xml、zip等扩展,并且proc_open函数未被禁用——否则composer install会直接失败。
安装LNMP运行环境
使用LNMP一键包最稳定,避免手动编译出错:
① 下载并解压LNMP安装包:wget http://soft.vpser.net/lnmp/lnmp2.9-full.tar.gz && tar -xzf lnmp2.9-full.tar.gz
② 进入目录并执行安装脚本:cd lnmp2.9-full && sudo ./install.sh lnmp
③ 安装过程中选择:Nginx(最新稳定版)、MySQL 8.0、PHP 8.2(必须选这个版本,低于8.2无法运行Laravel 11)
④ 安装完成后,运行lnmp vhost add新建站点,绑定域名或直接用IP访问,网站根目录设为/home/wwwroot/laravel/public——注意必须指向public子目录,否则暴露敏感文件。
配置PHP关键项
LNMP默认禁用proc_open,这会导致composer完全无法工作:
编辑PHP配置文件:sudo nano /usr/local/php/etc/php.ini
搜索disable_functions,删掉其中的proc_open,proc_get_status(保留其他函数)
再确认cgi.fix_pathinfo=0已取消注释且值为0——不改此项会导致Nginx路由404
重启PHP:lnmp php restart
下载并初始化Laravel项目
方法一:直接用composer create-project(推荐)
进入网站根目录:cd /home/wwwroot
执行安装命令:composer create-project laravel/laravel laravel --prefer-dist --no-interaction
这一步耗时较长(通常3~8分钟),期间不要中断SSH连接;如卡在“Installing dependencies”,说明内存不足,需先sudo fallocate -l 2G /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
方法二:上传本地已打包项目
将本地laravel.zip上传至/home/wwwroot,解压后执行:unzip laravel.zip && mv laravel/* ./ && rm -rf laravel laravel.zip
注意:解压后必须把所有文件移出子目录,让app、bootstrap、config等平级目录直接落在/home/wwwroot下
设置权限与密钥
① 设置storage和bootstrap/cache可写:sudo chmod -R 775 storage bootstrap/cache
② 生成APP_KEY:php artisan key:generate——没这步会导致Session失效、CSRF验证失败
③ 复制环境配置:cp .env.example .env
④ 编辑.env文件:nano .env,修改数据库连接参数(DB_HOST=127.0.0.1,DB_DATABASE=your_db_name,DB_USERNAME=root,DB_PASSWORD=your_mysql_root_pass)
⑤ 清除配置缓存:php artisan config:clear && php artisan cache:clear
配置Nginx伪静态规则
编辑对应虚拟主机配置文件,路径类似/usr/local/nginx/conf/vhost/your_domain.com.conf:
在server块内找到location /段,替换为以下内容:
location / { try_files $uri $uri/ /index.php?$query_string; }
同时确认root指向正确:root /home/wwwroot/public;
最后重启Nginx:lnmp nginx restart











