You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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改成production
    • APP_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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:18:01