源码湾 源码湾

Bagisto 电商商城:143MB 依赖全预装,PHP 8.2 直接起站

源码湾
1小时前发布
资源信息 vendor 已预装,PHP 8.2 直接跑,带示例数据。
版本
v2.3.19
授权
MIT
体积
143.41 MB
语言
PHP
数据库
MySQL 8.0
夸克网盘 无提取码 下载

今日下载 0 累计下载 0 还剩 5 个

做独立站的第一笔账往往不是服务器,是商城系统。SaaS 版按月抽成、插件另收费,买断版几千块起步,二次开发还得排队。想把数据握在自己手里、前台随便改,最后大多会走到自建这条路上。

Bagisto 是这条路上比较省心的一个。它用 Laravel 11 打底、Vue 做前台,PHP 8.2 就能跑,MIT 协议,社区星标 2.8 万。装完不是空壳:131 张表、424 条路由(其中 300 条挂在后台)、11 件示例商品、3 个分类、17 张商品图,前台开箱就能点着逛。

v2.3.19 我从零装了两遍。成品包里的依赖已经铺好,composer 那一步可以跳过:Windows 侧解压 2.48 秒,bagisto:install 22.50 秒,artisan serve 首屏 2.78 秒;Linux 侧拿同一份锁文件也跑通,安装 23 秒、首屏 2 秒。两平台 10 个页面全部 200,商品详情页的响应字节完全一致。也有不适合的人:服务器挤不出 400MB 空间的、不想碰命令行的、只想卖卡密的,最后一段单独说。

它是什么,和别的商城程序差在哪

  • 技术栈:Laravel 11.48.0 + Vue,PHP 要求 ^8.2,数据库 MySQL 8
  • 规模:131 张表、424 条路由(222 条 GET,300 条在后台)、示例数据 11 件商品 / 3 个分类 / 17 张商品图
  • 前台资源已预编译:主题的 build 清单 24 项、产物 26 个文件,不用再跑 npm 构建
  • 后台是独立入口 /admin,商品、分类、订单、客户、配置各成一块
  • 许可:MIT,商用、改代码、闭源分发都不受限

它和发卡类程序不是一类东西。那种店没有分类树、没有购物车、没有物流,一条线走到底;Bagisto 是真商城:分类、商品变体、购物车、结账、会员账户、后台订单流全都在。和「WordPress 套 WooCommerce」也不一样,那套靠插件堆功能,它是一体的。

我的测试环境

  • Windows 11,PHP 8.2.20(NTS,VC++ 2019 x64),MySQL 8.0.29,composer 2.1.6
  • Linux:WSL2 里的 Ubuntu 26.04,PHP 8.5.4,MySQL 8.0.29,同一份 composer.lock
  • 服务:php artisan serve,Windows 侧端口 9200,6 个 worker 进程
  • 截图:桌面 1400 宽、deviceScaleFactor 1、fullPage,6 张;手机 390 宽、deviceScaleFactor 2,3 张
  • 成品包:143.41MB,vendor 已包含在内

原先计划在真实服务器上验证 Linux 侧,赶上机器根分区写满、面板终端无响应,改用 WSL2 完成。这一项算环境差异,记录在此。

安装:Windows 本地跑起来

第一步先把 8 个 PHP 扩展确认一遍,缺一个后面会失败在安装脚本里:

calendar  curl  intl  mbstring  openssl  pdo  pdo_mysql  tokenizer

然后建库:

CREATE DATABASE bagisto DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

解压源码(实测 4006 个条目、2894 个文件、164.51MB,2.48 秒),进目录:

composer install
cp .env.example .env
php artisan key:generate

composer install 是全程最慢的一步,干净网络下 342.24 秒,装出 15543 个文件。成品包里这一步已经做完了,直接进下一步。

改 .env 里的数据库连接,然后把 APP_ENV 改成 local——这一行不是可选项,下面的坑里会说为什么:

APP_ENV=local
APP_DEBUG=true
DB_DATABASE=bagisto
DB_USERNAME=root
DB_PASSWORD=你的密码

库建好、键生成完,直接跑安装:

php artisan bagisto:install

脚本会建表、灌示例数据、生成管理员。实测 22.50 秒,落 131 张表,管理员 1 个,示例数据 11 件商品、3 个分类(建管理员 0.07 秒,灌数据 0.42 秒)。

最后把存储软链接接上,否则商品图片全是破图:

php artisan storage:link

启动:

php artisan serve --port=9200

首次请求 2.78 秒,之后首页 63 毫秒,页面 229,108 字节。

安装:Linux 侧

Linux 侧的操作和 Windows 一模一样,PHP 从 8.2 换到 8.5 时只有 composer 那一步会卡住:

phpspreadsheet requires php <8.5
sabberworm/php-css-parser requires php <=8.4

锁文件里写着平台约束,PHP 8.5 直装会被拒;加 --ignore-platform-reqs 能绕过,但依赖下载长时间卡住。更稳的做法是复用 Windows 侧同一份 vendor 树,再重新生成自动加载文件:

composer dump-autoload

实测 9 秒,12786 个文件、317MB。接着 php artisan bagisto:install 23 秒、示例数据 11 / 3 / 131、首屏 2 秒,10 个页面同样全 200。

两平台对比的结论要说得准一些:

  • 完全一致:路由数 222、后台路由 300、manifest 24 项、build 26 个文件、表 131 张、商品 11 件、分类 3 个、Laravel 11.48.0、MySQL 8.0.29
  • 逐字节一致:分类页 262,077 字节、商品详情页 333,019 字节、购物车 151,936 字节、会员登录 46,586 字节、后台登录 31,827 字节
  • 有差异:首页 229,068 与 228,824(差 244 字节,页面里有时间和随机串),搜索页与两个 CMS 页面各差 40 字节(CSRF token 长度)

装完之后先做这四件事

  1. 登录 /admin,先把管理员口令改掉。安装脚本建的是默认账号,不改等于门开着
  2. 把 .env 的 APP_ENV 改回 production、APP_DEBUG 改 false。开发模式会把堆栈和路径直接打在页面上
  3. 建第一个分类和第一件商品,顺手传一张图。传完去前台看图片能不能显示,这一步能同时验证存储软链接和目录权限
  4. 把示例数据清掉或下架。库存里那 11 件商品是为了让你看清页面结构,不是拿来卖的

实测数据

  • 成品包:143.41MB,解压 18406 个条目,12.84 秒
  • Windows 全新安装:解压 2.48 秒 / composer install 342.24 秒(15543 个文件)/ bagisto:install 22.50 秒
  • 示例数据:11 件商品、3 个分类、17 张商品图、131 张表、1 个管理员
  • 应用体积:安装后 382.8MB、18907 个文件
  • 路由:424 条,其中 GET 222 条,后台 300 条
  • 首屏:2.78 秒(首次)、63 毫秒(之后),首页 229,108 字节
  • 10 个 URL 全 200:首页、分类页、商品详情页、购物车、会员登录、会员注册、后台登录、搜索、联系我们、CMS 页面
  • 最慢的一页是商品详情页 463 毫秒,搜索页 276 毫秒,其余都在 250 毫秒以内
  • Linux 侧:安装 23 秒、首屏 2 秒、10 个页面全 200、0 个非 200
  • 前端构建:manifest 24 项、产物 26 个文件,无需 npm
  • 截图 9 张(桌面 6 / 手机 3),抓取过程 0 个 4xx、0 条 JS 报错

界面长什么样

前台首页,Banner 加新品区,下方是按分类切的商品块:

Bagisto 前台首页

分类页,左侧筛选、右上排序,商品卡片带价格和加购按钮:

分类页的商品网格

商品详情页,大图、规格选择、加购、评价区都在一屏里:

商品详情页

购物车是独立路由 /checkout/cart,没登录也能加:

购物车页面

会员登录页:

会员登录页

后台登录页长得和前台完全不一样,一个独立入口:

后台登录页

进去是仪表盘,左侧一整列菜单,商品、订单、客户、配置分组都在:

后台仪表盘

商品列表带缩略图、SKU、价格、库存、状态几列,示例商品 11 条:

后台商品列表

390 宽度下首页的排版,Banner 和商品卡片会自己折行:

手机宽度下的首页

一个真实的坑

APP_ENV=production 时,bagisto:install 会停下来等一句确认,而它等的那句确认在非交互的终端里根本送不进去,脚本直接以 255 退出,全程没有一句报错。我第一遍就是这么失败的。

解决只有一行:APP_ENV=local,再跑一次,22.50 秒走完。

坑的连锁反应更烦人。因为第一遍退出了,表压根没建,紧接着的补数据步骤报错——它默认表已经在了。补跑的时候要按顺序来:先 bagisto:install 成功,再灌示例数据,最后 storage:link。三步顺序错了,中间那步失败不会回滚,只能重新建库重来。

另外 storage:link 第二次跑会报 The [...] link already exists,这是错误提示但它不是新问题,可以忽略;真要重来,先手动删掉 public/storage 再执行。

上线:从本地挪到服务器

  • 站点根必须指到 public/ 目录,不是项目根。指错的话首页会变成一个目录列表,或者直接把 .env 暴露出来
  • 装上之后跑一次 php artisan storage:link,再确认 public/storage 指向 storage/app/public
  • 目录权限:storage 与 bootstrap/cache 要可写,所有者给运行 PHP 的用户
  • artisan serve 只适合本地验证,它是单进程的。对外用 nginx + php-fpm,把 APP_ENV 切回 production
  • 数据库用 MySQL 8,字符集 utf8mb4。表名、排序规则对不上时,最直接的报错就是登录页一片空白

这几类人适合,这几类不适合

适合:

  • 要一个功能齐全的自建商城,不想从零写购物车和订单
  • 服务器能给 PHP 8.2 和一片 400MB 以上的空间
  • 需要多语言、多币种、多店铺这几个能力
  • 想改前台样式,前端资源已经编译好,改样式不用重建整条构建链

不适合:

  • 只想卖卡密、不需要购物车的。那种场景有更轻的程序,没必要背 131 张表
  • 服务器只有 512MB 内存还跑着别的站。装完应用目录 382.8MB,给 MySQL 也要留地方
  • 完全不想碰命令行。安装、建表、软链接全是命令,没有图形安装向导能替代
  • 期待开箱就是生产态。示例数据、默认账号、开发配置都要自己收拾一遍

常见问题

源码获取

建议先转存到自己网盘再下载。手机上打开链接点右下角「保存到网盘」,回头在夸克 App 的「我的网盘」里取。

实测说明

本文截图全部来自本站实测环境(源码湾 yuanmawan.com),实测版本 Bagisto 电商商城 v2.3.19,许可证 MIT。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
OωO
取消