Shopware 6 部署完整指南:20 分钟从零跑起你的电商平台
【免费下载链接】shopwareShopware 6 is an open commerce platform based on Symfony Framework and Vue and supported by a worldwide community and more than 3.100 community extensions项目地址: https://gitcode.com/GitHub_Trending/sh/shopware
Shopware 6 部署是这篇指南要解决的问题。Shopware 6 是基于 Symfony 7 与 Vue.js 3 的开源电商平台(MIT 协议),既能当一套现成的购物车用,也能作为电商框架让你构建从简单小店到复杂 B2B 系统的任意形态。本仓库当前主线为 6.7 系列(见 composer.json 中的 branch-alias),适合想自建可控电商系统的开发者、以及需要在本地完整跑起开发环境的插件开发者。
跑通之后你会同时拥有商店前台和管理后台两个界面,并能看懂数据库、缓存、邮件这几个核心配置项。
部署方式选型:三条路线怎么选
不同目标对应不同部署路线,先看这张表再动手。
| 路线 | 适用场景 | 优势 | 取舍 |
|---|---|---|---|
| Docker Compose(官方推荐) | 本地开发、插件开发、学习 | 环境零配置,服务齐全(PHP、MariaDB、Valkey、OpenSearch、Mailpit),一键重置 | 需要 Docker;容器镜像占磁盘,内存消耗较高 |
| 手动安装(PHP + Composer + Node) | 生产服务器、精细控制环境 | 完全自主可控,可逐层调优 | PHP 8.2–8.5、Node、MariaDB 需自行对齐版本,排障成本高 |
| Composer Flex 模板 | 生产环境快速建站 | 不把 platform 仓库克隆下来,Shopware 作为依赖引入,升级更干净 | 需要按官方模板指南另行准备项目骨架 |
README 的 Installation 一节把 Flex 模板列为 on-premise 生产环境的首选;本仓库自带 CONTRIBUTING.md 中声明 Docker 是开发环境的推荐方式。下面以 Docker 为主线,手动安装给出可对照的最小路径。
最小可运行路径:从克隆到打开管理后台
这一节的目标很单一:用最少的命令看到第一个可用界面。
先拿到代码。仓库自带完整的开发环境编排,克隆即可:
git clone https://gitcode.com/GitHub_Trending/sh/shopware cd shopware启动全部服务。compose.yaml里定义了 web(php8.4-node24-caddy 镜像)、database(mariadb)、valkey、opensearch、mailer 五个服务:
docker compose up -d在 web 容器里执行一次完整初始化。composer setup会依序完成:安装 PHP 依赖、建库并安装系统、安装 JS 依赖、构建前端资源、激活 Storefront 主题(逻辑定义在 composer.json 的 scripts 里):
docker compose exec web composer setup完成后按这个地址表验证:
| 界面 | 地址 |
|---|---|
| 商店前台 | http://localhost:8000 |
| 管理后台 | http://localhost:8000/admin |
| 数据库(Adminer) | http://localhost:9080 |
| 邮件捕获(Mailpit) | http://localhost:8025 |
管理后台默认账号是admin,密码shopware(--basic-setup安装流程的固定产物)。看到后台登录页,说明 Shopware 6 部署的主线已经走通。
如果你不想用 Docker,手动路径是:准备 PHP 8.2–8.5(composer.json 的 require 段写明了版本区间,且需要 pdo_mysql、gd、intl 等扩展)与 Node.js LTS,创建.env文件后依次执行:
composer install -o # 安装 PHP 依赖 bin/console system:install --basic-setup --create-database # 建库并安装 composer init:js # 安装前端依赖 composer build:js # 构建 Administration 与 Storefront其中--basic-setup会创建前台销售通道和 admin 用户,--create-database让安装程序在库不存在时自动创建(参数定义见 SystemInstallCommand.php)。
界面跑起来只是起点,接下来看支撑它的几个核心配置。
关键配置解读:数据库、邮件与搜索
这一节按「改哪里 → 填什么 → 为什么」过一遍你真正需要动的变量。Docker 路线下这些值集中在 compose.yaml 的web服务 environment 块;手动安装则写进.env。
数据库连接(DATABASE_URL)
改哪里:compose.yaml 的DATABASE_URL或.env。 填什么:
DATABASE_URL="mysql://root:root@database/shopware" # 协议://用户:密码@主机/库名为什么:安装程序从这里读取全部数据库凭据,决定连接哪个实例、建不建库。compose.yaml 里还配了 OpenSearch、缓存等服务地址:
OPENSEARCH_URL: http://opensearch:9200 # 全文搜索服务,可整段删除 ADMIN_OPENSEARCH_URL: http://opensearch:9200 MAILER_DSN: smtp://mailer:1025 # 邮件发往 Mailpit邮件(MAILER_DSN)
改哪里:同上。 填什么:开发环境保持smtp://mailer:1025,指向 compose 里的 Mailpit 容器;生产环境换成真实 SMTP,如smtp://user:pass@smtp.example.com:587。 为什么:订单确认、密码重置等邮件都走这个通道,开发时 Mailpit 让你在 http://localhost:8025 直接查看发出的邮件,无需真发。
搜索(OPENSEARCH_URL)
改哪里:同上,两个变量成对出现。 填什么:OpenSearch 地址,或整段删除。 为什么:商品与后台的全文检索依赖它;不配只是失去搜索,不影响下单主流程。
缓存(CACHE_URL)
改哪里:.env(生产环境建议必配)。 填什么:CACHE_URL=redis://localhost:6379。 为什么:前台 HTTP 缓存、实体缓存都落在这层,生产环境用内存型缓存是性能优化的第一杠杆。开发环境的 compose.yaml 已内置 Valkey 容器,开箱即用。
日常维护两个高频命令:composer init:db会重建数据库并重新安装(等效system:install --drop-database --basic-setup --force),composer reset在此基础上重建全部前端资源并同步主题。环境要干净时直接用它们,不必手动删表。
前台跑通、配置看懂之后,可以开始按自己的业务做定制。
定制与扩展:主题、插件与前端开发
扩展机制分两层,先选对层级再动手。App System 适合轻量功能,只需要很少的 Shopware 内部知识;Plugin 系统适合需要直接访问数据库和内部流程的场景(README 的 Extending 一节对此有明确指引)。自研插件放入custom/plugins/,composer.json 已配置为 path 仓库符号链接,放进去即可被识别。
主题基于 Twig 模板与 SCSS,核心流程就三条命令:
bin/console theme:create YourThemeName # 创建主题骨架 bin/console theme:compile # 编译资源 bin/console theme:change --all YourThemeName --sync # 激活并同步前端热更新用 watch 系列脚本,改动即时生效:
docker compose exec web composer watch:admin # 后台开发,http://localhost:5173 docker compose exec web composer watch:storefront # 前台开发,http://localhost:9998定制最终要落在订单和支付上。Shopware 把支付拆成同步与异步两种流程,异步流程为网关回调预留了状态迁移,接第三方网关前先看懂这两张图:
定制完成并验证无误后,就可以按下面的清单把环境收敛到生产标准。
生产上线检查清单
上线前逐项打勾。命令均来自仓库内已验证的脚本与 console 命令,不要凭记忆输入。
- 环境切换为生产:
APP_ENV=prod、APP_DEBUG关闭,APP_SECRET已替换为自生成的随机串 - 前端资源已编译:
composer build:js(等价于分别构建 admin 与 storefront,并同步主题) - 缓存策略就位:
CACHE_URL指向 Redis 或 Valkey,前台 HTTP 缓存启用,PHP 开启 OPcache - 定时任务已注册并挂 cron:先执行
bin/console scheduled-task:register,再每分钟调度bin/console scheduled-task:run install.lock存在:安装成功后自动生成,阻止重复安装(system:install检测到它即拒绝执行)- 数据库只保留业务所需用户,root 密码不对外暴露
- 升级前通读对应版本说明(仓库内 UPGRADE-6.7.md、UPGRADE-6.8.md 等),确认无破坏性变更
性能基线用 phpbench 跑一次,先有数字再谈优化(phpbench.json已配置好测试集):
vendor/bin/phpbench run --report=compressedTideways 的火焰图能直接暴露耗时组件,优化时优先看热点方法而不是凭感觉:
清单全部打勾后,上线初期的问题多半集中在下面这几类。
排障速查
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 安装反复提示已完成、拒绝执行 | 根目录已存在 install.lock | 确认无误后用--force强制安装,或先删除 install.lock |
| 数据库连接失败 | DATABASE_URL 主机/账号错误,或数据库容器未就绪 | 核对 compose.yaml 的 DATABASE_URL;确认depends_on的 healthcheck 已通过 |
| 前台/后台资源 404 | 前端未构建或构建中断 | 重跑composer build:js,再bin/console assets:install |
| 改前端代码不生效 | 直接访问了 8000 端口的生产构建 | 开发走 5173(admin)/ 9998(storefront)watch 端点 |
| 邮件收不到 | MAILER_DSN 未指向可用 SMTP | 开发环境确认 Mailpit 容器在跑,浏览器访问 8025 端口查看 |
| 后台白屏、样式丢失 | 缓存或主题未同步 | bin/console cache:clear后bin/console theme:compile --sync |
| 页面整体偏慢 | 未启用 OPcache / Redis 缓存 | 按生产清单逐项核对,用 phpbench 定位热点 |
| npm 构建报错 | Node 版本不匹配 | 对齐 .nvmrc(lts/*)与容器镜像的 node24,重建 node_modules |
问题排完、站点稳定之后,顺着仓库内的文档继续深入会快得多。
进阶方向
- 贡献与开发规范:CONTRIBUTING.md 完整覆盖 Docker 开发、PHPStorm 配置与常用命令速查表
- 编码规范:coding-guidelines/ 分 Administration 与 Core 两个目录
- 架构决策:adr/ 收录了支付流程、缓存策略、消息队列等关键设计的历史决策
- 版本演进:根目录 CHANGELOG.md 与 UPGRADE-*.md 按版本记录了变更与升级注意事项
- 扩展开发:App System 与 Plugin 体系的差异和入门路径见 README 的 Extending Shopware 一节,官方开发者文档在 developer.shopware.com
把docker compose up -d和composer setup敲下去,二十分钟后你的 Shopware 6 就会在 8000 端口等你登录。
【免费下载链接】shopwareShopware 6 is an open commerce platform based on Symfony Framework and Vue and supported by a worldwide community and more than 3.100 community extensions项目地址: https://gitcode.com/GitHub_Trending/sh/shopware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考