该文档为 v3 版本的文档,如果您需要使用 v2.x 版本的,请您传送至 这里 (opens new window)

当前版本: GitHub last release

# 概叙

# 前言

个人之前做了很多次商城,每次都是从头开始开发比较耗时,后来熟悉流程后自己写了一套方便产品经理的需求快速上线。

欢迎 Star,欢迎 PR!

fork star

star

GitHub (opens new window) Gitee (opens new window)

交流QQ群:1062159788 - 私人QQ:364825702 请备注 青梧商城

# 运行环境

PHP : 7.4

MySql >= 5.6

Apache || Nginx = *

node >= 17.*

composer >= 1.*

【重点】请二开前先前往对应官网熟悉相关文档 Laravel8 Vue3

更新日志记录

# 快速安装

# Composer 安装 [ 推荐 ]

composer create-project qingwuit/qwshop shop

# 手动建好数据库 - 项目不会自己建数据库的 只会根据你填写的数据库账户密码去插入数据
php artisan qwshop:install 
# [ 如果执行失败 看下文档【PHP配置】是否正确 ]

# 下面两条需要安装Node 环境请npm -v 查看是否有安装 或自行搜索nodejs安装
npm install
npm run prod

## linux 得给下权限 window 不用执行
chmod -R 777 ./storage/

# Docker 安装

## 早先年写的不确定是否还可用 作者不熟悉docker有问题需要百度 推荐composer 安装
git clone https://github.com/qingwuit/qwshop.git  # https://gitee.com/qingwuitcn/qwshop.git

cd qwshop/dockerfiles # 进入目录

docker-compose up -d  # 这里默认你已经安装【docker】

docker exec -it dockerfiles_qwshop_1 /bin/sh # 进入工作台

./dockerfiles/install.sh # 安装项目 如因权限无法执行 运行: sh ./dockerfiles/install.sh

## [ 下面的问题 我未尝试成功 ] 这个问题等我查到能用的再更新
## 运行在docker接口请求慢卡,是微软wsl2子系统的问题,磁盘IO太慢,导致的响应时间超长。
## 解决方法:在docker设置页面,General->把除第一个复选框全部取消掉。特别是其中一个use the wsl2 based engine,就是我们访问慢的罪魁祸首。
## 参考文献: https://blog.dugwang.com/?p=1346

# 手动安装

1、下载对应版本 GitHub传送门 (opens new window) Gitee传送门 (opens new window)

或者

# 如果有安装Git bash 可以Clone
git clone https://github.com/qingwuit/qwshop.git
# 或者
git clone https://gitee.com/qingwuitcn/qwshop.git

2、复制根目录 .env.example.env

3、修改 .env 数据库

4、下载PHP Composer扩展

composer install

5、在根目录执行以下命令

php artisan key:generate # 密钥key
php artisan passport:keys --ansi # 密钥key
php artisan storage:link # 软链接

6、导入Sql文件

php artisan migrate # 数据迁移
php artisan qwshop:mysql # 导入初始数据

7、下载前端扩展 [ 这里预知你已经安装了Node套件 ]

npm install
# 也可以使用淘宝镜像
# npm install --registry=https://registry.npmmirror.com --force

# 前端代码打包
npm run prod

## linux 得给下权限 window 不用执行
chmod -R 777 ./storage/

# Swoole

# pecl install swoole || extension=swoole.so
composer require swooletw/laravel-swoole
php artisan vendor:publish --tag=laravel-swoole 

wiki (opens new window)

# Nginx 配置

# 参考代码
listen  80;
server_name localhost;
root  /var/www/laravel-app/public; # 解析目录到项目Public
index  index.html index.htm index.php;
...

#伪静态代码 [ 这里不少人忘记导致接口404情况 ]
location / {
    try_files $uri $uri/ /index.php?$query_string;
}


## 如果使用了laravel-swoole 未使用不用管
location / {
    try_files $uri $uri/ @swoole;
}

location @swoole {
    set $suffix "";
    if ($uri = /index.php) {
        set $suffix "/";
    }
    proxy_set_header Host $host;
    proxy_set_header SERVER_PORT $server_port;
    proxy_set_header REMOTE_ADDR $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # IF https
    # proxy_set_header HTTPS "on";
    proxy_pass http://127.0.0.1:1215$suffix;
}

## config swoole_http.php 记得加上

# App\Providers\AuthServiceProvider::class,
# Laravel\Passport\PassportServiceProvider::class

# PHP 配置

# php.ini 文件中解除限制函数
'shell_exec','exec','symlink','proc_open','putenv'
# php.ini 一个个搜索看有没有删除 如果没删除的删除下 [ 如果还是无法执行看报错再删除下 ]

# 商城登录

  • 【总后台】 /Admin/login - admin 123456
  • 【商家后台】 /Seller/login - 18888888888 123456
  • 【用户后台】 /login - 18888888888 123456

[重要] 记得路径大小写一定要一样 如:/Admin/login 不能是 /admin/login 否则出现无法登录登陆后又跳转回来的问题

# 移动端

# 常见问题

  • 需要自行配置PHP环境、和node 环境(安装扩展尽量使用国内镜像)

  • npm install 失败 看看是否时node版本和node-sass sass-loader 版本不匹配 删除package-lock.json 并且 删除package.json内的node-sass 手动安装

  • npm run 打包过程失败,请查看node-sass or corejs 是否有下载成功,尝试重新下载或者去淘宝镜像下载 确定node版本是否过低。

  • 【安装后无法打开】,是否忘记配置伪静态ngnix linux 查看 chmod -R 777 storage 是否给权限

  • 【安装后无法打开】,是否将目录解析到public,nginx下是否配置Laravel伪静态

  • 【安装后无法打开】,是否php artisan qwshop:install 时填写的域名和你目前访问的域名一致

  • 【无法登录】,是否使用 php artisan serve 访问 是无法访问的 会和passport冲突 最好重新搭个服务端环境 如Nginx 或者 集成环境

  • 接口502单独打开接口又能打开,查看nginx日志看是否header传输过大,关闭envDEBUG,如果还不行,请修改nginx配置文件

  • 如果因为负载均衡反向代理导致url() 链接https变成http 参考 https://learnku.com/articles/67283 (opens new window)

  • 如果需要强制转化httphttps 配置根目录.env文件 URL_SECURE=true 没有的话自行加上

  • CDN 访问不了自行找合适得节点

<link rel="stylesheet" href="//cdn.bootcdn.net/ajax/libs/element-plus/2.3.12/index.min.css" /> 
<script src="//cdn.bootcdn.net/ajax/libs/vue/3.3.4/vue.global.min.js"></script>
<script src="//cdn.bootcdn.net/ajax/libs/vue-router/4.2.4/vue-router.global.min.js"></script>
<script src="//cdn.bootcdn.net/ajax/libs/vuex/4.1.0/vuex.global.min.js"></script>
<script src="//cdn.bootcdn.net/ajax/libs/element-plus/2.3.12/index.full.min.js"></script>
<script src="//cdn.bootcdn.net/ajax/libs/nprogress/0.2.0/nprogress.min.js"></script>
<script src="//cdn.bootcdn.net/ajax/libs/dayjs/1.11.9/dayjs.min.js"></script>
<script src="//cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.core.min.js"></script> <!-- excel -->
<script src="//cdn.jsdelivr.net/npm/qrcode.vue@3.4.1/dist/qrcode.vue.browser.min.js"></script> <!-- qrcode -->
<script src="//cdn.bootcdn.net/ajax/libs/clipboard.js/2.0.11/clipboard.min.js"></script> <!-- clipboard -->
<script src="//lib.baomitu.com/g2plot/1.2.0-beta.0/g2plot.min.js"></script> <!-- g2plot -->
<script src="//cdn.jsdelivr.net/npm/@amap/amap-jsapi-loader@1.0.1/dist/index.min.js"></script> <!-- amap -->

<link href="//lib.baomitu.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="//cdn.bootcdn.net/ajax/libs/nprogress/0.2.0/nprogress.min.css" rel="stylesheet" /> <!-- 进度条 -->

<!-- edit -->
<link href="//cdn.bootcdn.net/ajax/libs/wangeditor5/5.1.23/css/style.min.css" rel="stylesheet">
<script src="//cdn.bootcdn.net/ajax/libs/wangeditor5/5.1.23/index.min.js"></script>
<!-- edit -->