返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >crmeb商城部署(踩坑及解决方法)
  • 820
分享到

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

phpdockerjava 2023-09-02 13:09:45 820人浏览 八月长安
摘要

源码地址: https://gitee.com/ZhongBangKeJi/CRMEB 原版是PHP版,我也不懂php,但看到功能很全,而且有Docker-compose的脚本可以部署,并且教程也很完

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

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

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

代码结构

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

部署步骤

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

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

docker-compose up -d

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

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

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

docker exec crmeb_php chmod 777 -R /var/www

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

设置mysqlRedis配置:

Mysql数据库信息:Host:192.168.10.1 Post:3306 user:root pwd:123456 Redis信息:Host:192.168.10.10Post:6379db:0pwd:123456

修改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

访问项目:
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.80networks: #网络配置  app_net: #网络名称    driver: bridge    ipam: #网络配置      config:        - subnet: 192.168.0.0/16 #IP区间          gateway: 192.168.10.100

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

微信授权登录点击后不唤起
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储存目录)

来源地址:https://blog.csdn.net/weixin_44139651/article/details/129271958

--结束END--

本文标题: crmeb商城部署(踩坑及解决方法)

本文链接: https://lsjlt.com/news/390884.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作