crmeb商城部署(踩坑及解决方法)

源码地址:
https://gitee.com/ZhongBangKeJi/CRMEB

原版是PHP版,我也不懂PHP,但看到功能很全,而且有docker-compose的脚本可以部署,并且教程也很完善,就拿来部署试下。

所以也适用于和我一样,不懂PHP,从Java过来的同学,直接部署使用。

代码结构

在这里插入图片描述
各组件分别对应了他们的docker初始配置,映射的容器外文件夹即时这里。需要把外部整个文件夹上传到服务器上,然后进入该文件夹执行docker-compose的指令。

部署步骤

1、修改docker-compose配置:docker-compose.yml文件:Mysql镜像改为通用的,Nginx容器配置8011改为80

2、直接把整个包放服务器上:

docker-compose up -d

出了个报错,说是无法识别app_net,查了下是docker-compose版本太低,手动升级了下服务器里docker-compose的版本,再次启动,成功。

在浏览器访问域名地址点击下一步安装:http://localhost(Nginx配置的服务器域名)

安装时提示权限不够,进入php的docker 容器,解决目录权限问题:

docker exec crmeb_php chmod 777 -R /var/www

查看权限各字段意义如下:
在这里插入图片描述
要改成其他组对该文件的权限也可读可写。

设置mysql和redis配置:

Mysql数据库信息:
Host:192.168.10.1 
Post:3306 
user:root 
pwd:123456 

Redis信息:
Host:192.168.10.10
Post:6379
db:0
pwd:123456

3、修改PHP长链接,定时任务,队列:

进入容器:docker exec -it crmeb_php /bin/bash
进入到项目目录:cd /var/www
定时任务命令:php think timer start --d
长连接命令:php think workerman start --d
队列命令:php think queue:listen --queue

4、访问项目:
http://localhost/admin(Nginx配置的服务器域名)

issue里看到的踩坑:

不要使用低版本操作系统,会出现MySQL起不来的情况。Ubuntu18.04,正常。centos:不正常,phpfpm失败

排查3306、6379、80端口是否被使用,被占用的话先关掉

修改docker-compose.yml文件:Mysql镜像改为通用的,8011改为80

进入宿主机docker-compose.yml所在目录,执行chmod 777 -R .

启动所有服务:docker-compose up -d

宿主机执行docker exec crmeb_php chmod 777 -R /var/www,解决目录权限问题

访问ip,完成安装,MYSQL和REDIS的服务器地址分别填写固定的192.168.10.1和192.168.10.10,密码都是123456

前台:http://IP/static/html/pc.html

后台:http://IP/admin/login

docker-compose的配置:

version: "3.3"
services:
  # mysql 容器
  mysql:
    container_name: crmeb_mysql #指定容器名
    image: daocloud.io/library/mysql:5.7.5-m15 #M1芯片可以采用这个镜像
    # image: mysql:5.7 #一般电脑可以用这个镜像
    ports:
      - 3306:3306
    # 环境变量
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_USER: 'crmeb'
      MYSQL_PASS: '123456'
      MYSQL_DATABASE: 'crmeb'
    privileged: true
    command:
       --character-set-server=utf8mb4
       --collation-server=utf8mb4_general_ci
       --explicit_defaults_for_timestamp=true
       --lower_case_table_names=1
       --max_allowed_packet=128M
       --default-authentication-plugin=mysql_native_password
       --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    working_dir: /var/lib/mysql
    volumes:
      - ./mysql/my.cnf:/etc/mysql/my.cnf
      - ./mysql/data:/var/lib/mysql #挂载数据目录到本地
      - ./mysql/log:/var/log/mysql
    networks:
      app_net:
        # 固定子网ip,网段必须在子网络192.168.*.*
        ipv4_address: 192.168.10.1
  # redis 容器
  redis:
    container_name: crmeb_redis
    image: 'redis:alpine'
    # image: daocloud.io/library/redis:6.0.5-alpine
    # image: redis:5.0
    ports:
      - "6379:6379"
    command: redis-server /usr/local/etc/redis/redis.conf
    volumes:
      # - ./redis/data:/data #挂载数据目录到本地
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    networks:
      app_net:
        ipv4_address: 192.168.10.10
  # php 容器
  phpfpm:
    container_name: crmeb_php #指定容器名
    # image: phpfpm-image #指定镜像名
    image: crmeb_php #指定镜像名
    build:
      context: ./php #dockerfile文件路径
      dockerfile: Dockerfile #制定dockerfile文件名称
    restart: always
    environment:
      TZ: Asia/Shanghai
    ports:
      - 9000:9000
      - 20002:20002
      - 20003:20003
    tmpfs: /var/temp #上传临时文件夹
    working_dir: /var/www
    volumes:
      - ../crmeb:/var/www #程序运行目录
      - ../crmeb/runtime:/var/www/temp #程序缓存目录
      - ./php/php-ini-overrides.ini:/etc/php/7.4/fpm/conf.d/99-overrides.ini
    networks:
      app_net:
        ipv4_address: 192.168.10.90
#    command: /bin/bash -c "php -v"
  # nginx 容器
  nginx:
    container_name: crmeb_nginx
    image: 'nginx:alpine'
    # image: daocloud.io/library/nginx:1.19.1-alpine
    restart: always
    ports:
      - 8011:80
      # - 443:443
    # 依赖关系 先跑php
    depends_on:
      - phpfpm
    environment:
      TZ: Asia/Shanghai
    working_dir: /var/www
    volumes_from:
      - phpfpm #继承phpfpm挂载目录
    volumes:
      - ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf
      - ./nginx/log:/etc/nginx/log
    networks:
      app_net:
        ipv4_address: 192.168.10.80
networks: #网络配置
  app_net: #网络名称
    driver: bridge
    ipam: #网络配置
      config:
        - subnet: 192.168.0.0/16 #IP区间
          gateway: 192.168.10.100


程序启动后配置遇到的问题

1、微信授权登录点击后不唤起
2、微信支付报错is_dir: open_basedir restriction in effect.File(/tmp) isnot within the allowed path(s): (/var)
https://www.crmeb.com/ask/thread/22332

看到网上说是php目录跳转权限的问题:

在www/server/nginx/conf/fastcgi.conf下最后一行添加 fastcgi_param
PHP_ADMIN_VALUE
“open_basedir=/www/wwwroot:/tmp/:/www/server/phpmyadmin”;

看不懂?其实就是“服务器允许访问的路径”,多个路径就用:隔开,就如上面的open_basedir的路径就是/www/wwwroot,/tmp/,还有/www/server/phpmyadmin,就是意识是nginx允许这些路径使用某些东西(具体什么我也暂时不懂,应该时权限之类的);

那么搞清楚了,就能解决这个问题了 错误是File(/tmp) is not within the allowed path(s):
(/www/wwwroot:/www/server/phpmyadmin)

那么所以只要在open_basedir那堆路径哪里加上:/tmp就行了,改完时没生效可以尝试重启nginx,然后发现可以了!!!

试了上面这个好像还是不行。
还有种是加权限的方法:

言归正传遇到的问题主要是我的ci框架session储存的目录(tmp)问题,

报错如下

PHP Warning: Unknown: open_basedir restriction in effect. File(/tmp)
is not within the allowed path(s): (/home/wwwroot/default) 解决方法

chmod -R 0777 /home/wwwroot/default/tmp (你的session储存目录)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值