如何将Laravel应用部署到仅办公室内部可访问的服务器上
Laravel 局域网内部服务器部署全步骤
以下步骤针对常用的Linux服务器(Ubuntu/CentOS等),如果是Windows服务器,核心逻辑一致,仅软件安装、权限配置操作对应Windows系统规则调整即可。
1. 服务器基础环境准备
提前找公司IT获取服务器的局域网IP、登录账号、密码,按照以下要求安装基础运行组件:
- 远程连接服务器:Windows系统可以用终端SSH工具或者Putty连接Linux服务器,用自带远程桌面连接Windows服务器
- 安装Web服务器:选Nginx或者Apache均可
- 安装PHP:版本和你本地开发用的PHP版本保持一致,最低满足当前Laravel版本的要求(比如Laravel10需要PHP8.1+),同时安装必须的PHP扩展:
bcmath、ctype、fileinfo、json、mbstring、openssl、pdo、tokenizer、xml、curl,以及项目自定义用到的其他扩展(比如redis、gd等) - 安装数据库:版本和本地开发用的数据库版本保持一致,可选MySQL、MariaDB、PostgreSQL
- 安装Composer:Laravel 依赖管理必备工具
- 安装Git(可选):用来同步代码,不会用可以跳过,用压缩包传代码即可
2. 代码上传到服务器
两种方式选你顺手的即可:
- Git方式(推荐):把本地代码推送到私有代码仓库,进入服务器存放项目的目录(比如
/var/www/),执行git clone 你的私有代码仓库地址拉取代码 - 压缩包方式:本地把Laravel项目所有文件打压缩包,不要打包
vendor、node_modules、本地的.env文件,节省传输空间还能避免环境冲突,把压缩包用FTP或者SCP传到服务器项目目录后解压
3. 项目基础配置
所有操作都在服务器的项目根目录下执行:
3.1 安装项目依赖
- 执行
composer install --optimize-autoloader --no-dev安装生产环境需要的PHP依赖 - 如果项目用到前端构建(比如Vue/React、Vite混合开发),先安装对应版本的Node.js,再执行
npm install && npm run build打包前端静态资源
3.2 配置环境变量
- 执行
cp .env.example .env复制环境变量模板 - 编辑
.env文件,修改核心配置:APP_NAME改成你的项目名称APP_ENV改成productionAPP_DEBUG改成false,生产环境禁止开调试APP_URL改成http://服务器局域网IP或者你申请的内部访问域名- 数据库相关的
DB_CONNECTION、DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD改成服务器上的数据库信息,提前在数据库建好对应名称的空数据库 - 其他项目自定义的配置(比如redis、邮件、第三方服务密钥)同步修改
3.3 生成应用密钥
执行php artisan key:generate,自动生成Laravel加密需要的唯一密钥写入.env文件
3.4 导入数据库
- 执行
php artisan migrate --force,把项目数据表导入到服务器数据库 - 如果有初始测试数据要导入,执行
php artisan db:seed --force
3.5 配置目录权限
这是新手最容易踩的坑,Laravel需要两个目录的写入权限,执行以下命令:
chown -R www-data:www-data ./storage ./bootstrap/cache chmod -R 775 ./storage ./bootstrap/cache
注意:如果你的Web服务器运行用户不是www-data(比如是apache、nginx),把上面命令里的www-data改成对应的运行用户即可
4. Web服务器配置
选你安装的Web服务器对应配置即可:
4.1 Nginx配置
- 新建站点配置文件,Ubuntu系统默认放在
/etc/nginx/sites-available/目录,文件名自定义即可 - 粘贴以下配置,注意替换里面的项目路径、服务器IP、PHP版本:
server { listen 80; listen [::]:80; server_name 你的服务器局域网IP; root /var/www/你的项目名/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 改成你服务器实际安装的PHP版本 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }
- 执行
ln -s /etc/nginx/sites-available/你的配置文件名 /etc/nginx/sites-enabled/启用站点 - 执行
nginx -t测试配置是否正确,没问题的话执行systemctl reload nginx重载配置生效
4.2 Apache配置
- 确保Apache开启了
mod_rewrite扩展 - 新建站点配置,把站点根目录指向你项目的
public文件夹 - Laravel自带的
public/.htaccess已经配置好了路由规则,不需要额外调整 - 执行
systemctl reload apache2重载配置生效
5. 生产环境缓存优化
执行以下命令缓存配置、路由、视图,提升访问性能:
php artisan config:cache php artisan route:cache php artisan view:cache
注意:后续修改了.env、路由、配置文件之后,需要重新执行以上命令才能让新配置生效
6. 访问测试
- 找一台和服务器同局域网的电脑,打开浏览器输入
http://服务器局域网IP即可访问应用 - 如果访问报错,可以临时把
.env里的APP_DEBUG改成true查看具体报错信息,排查完成后一定要改回false - 常见报错原因:目录权限不足、PHP扩展未安装、数据库配置错误、Web服务器配置未指向项目
public目录
内容的提问来源于stack exchange,提问作者MUHAMMAD MESUM
相关产品推荐
相关产品推荐

