CRMEB多商户商城系统阿里云集群部署教程
注意:
1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区
2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示
一、 创建容器镜像服务,容器镜像服务(aliyun.com) ,个人版本就可以
- 先创建一个命名空间
- 然后创建一个镜像仓库
- 查看并记录镜像公网地址
- 创建镜像,首先保证本地已经安装号docker服务
4.1 登录阿里云docker
docker login --username=你的用户名 registry.cn-hangzhou.aliyuncs.com
Copy
4.2 拉取多商户预制镜像
docker pull leekay0218/crmeb-mer
Copy
4.3 在多商户项目根目录创建Dockerfile文件,内容为
FROM leekay0218/crmeb-mer
MAINTAINER crmeb.com# 复制代码
ADD . /var/www# 设置容器启动后的默认运行目录
WORKDIR /var/www# 默认入口命令
ENTRYPOINT ["/entrypoint.sh"]# CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
#CMD []
CMD ["php", "-d", "memory_limit=2048M", "think", "swoole"]
Copy
二、开通阿里云mysql服务 RDS管理控制台 (aliyun.com)
- 开通服务
- 创建数据库,mysql选择5.7
- 配置按照自己的需求选择即可,我这里演示用,所以选择的最低配置
- 这里选择默认即可, 没有的话就创建一个, 后面服务需要选择同一个
- 为了方便使用,直接设置好root密码
- 等待mysql创建完成
- 开通外网地址,自行创建多商户的数据库并导入数据.这个就不做演示了
- 修改sql-mode配置为: NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
- 刷新检查一下,确保修改成功
- 修改项目根目录.env文件中的mysql配置,如下:
填写配置并保存, 数据库配置完毕了
三、开通redis服务 云数据库Redis版管理控制台 (aliyun.com)
- 创建redis服务,区域和mysql保持一致
- 选择相同的网络配置
- 按照需求选择配置
- 设置redis密码
- 开通完成
- 等待创建完成
- 设置白名单,这里按照自己的需求设置,我这里设置0.0.0.0/0是方便演示,有安全问题
- env文件填写配置并保存, redis配置完毕了
四、 推送镜像
- 在项目根目录执行下面的命令,代码打包镜像推送到阿里云云仓库
docker build -t leekay0218/crmeb-mer .docker tag leekay0218/crmeb-mer 你的公网镜像地址docker push 你的公网镜像地址
Copy
- 推送成功后镜像更新时间会更新
五、 创建阿里云集群服务容器服务ACK_容器服务Kubernetes版_容器_云原生应用平台-阿里云 (aliyun.com)
- 创建集群,选择杭州K区
- 按照自己的需求选择,然后下一步
- 按需求选择负载均衡配置
- 创建集群
- 待集群初始化完毕
- 创建应用
- 选择镜像,tag不用填
- 按照自己的需求选择
- 填写端口,8324
- 创建应用,等待应用初始化完毕
六、 创建服务,获取公网IP
- 创建应用
- 等待应用启动完毕后,访问118.31.68.253/api/config, 有数据说明部署成功;
-
如果失败请检查镜像,可以在本地运行镜像检查是否正常. 本地运行时记得将redis和mysql的访问地址改为外网地址;
-
集群服务使用完毕后,释放时记得删除干净,并单独删除负载均衡服务,避免意外扣费;
七、代码更新及集群配置
-
后端代码更新后需要重新打包镜像并推送到阿里云docker
-
然后点击重新部署
- 修改集群服务器配置
编辑可以修改服务器配置
伸缩可以修改集群服务器数量
- 队列服务
在一个阿里云服务器中再部署一套多商户项目代码, 单独启动多商户的队列服务并运行多商户项目. 保证队列和ws可用
ws需要配置独立的域名单独访问
- 前端项目
在一个阿里云服务器中单独部署多商户的移动端,平台端,商户端. 并使用独立的域名访问, 接口地址使用集群服务的域名
集群部署完毕,感谢浏览,附件中有word文档可下载查看
多商户阿里云集群部署流程.zip
相关文章:

CRMEB多商户商城系统阿里云集群部署教程
注意: 1.所有服务创建时地域一定要选择一致,这里我用的是杭州K区 2.文件/图片上传一定要用类似oss的云文件服务, 本文不做演示 一、 创建容器镜像服务,容器镜像服务(aliyun.com) ,个人版本就可以 先创建一个命名空间 然后创建一个镜像仓库 查看并记录镜像公网地址…...
Java第三方登录封装工具类
Java中可以使用第三方登录来简化用户登录流程,常见的第三方登录如QQ、微信、微博等。下面是一个Java封装第三方登录的工具类: import java.io.IOException; import java.util.HashMap; import java.util.Map;import org.apache.http.client.ClientProto…...

BUUCTF学习(四): 文件包含tips
1、介绍 2、hackBar插件安装 教程: Hackbar插件安装-CSDN博客 3、解题 php://filter/readconvert.base64-encode/resource要读取的文件 ?filephp://filter/readconvert.base64-encode/resourceflag.php Base64 在线编码解码 | Base64 加密解密 - Base64.us 结束...

德国人工智能公司【Kodex AI】完成160万欧元融资
来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于德国柏林的人工智能公司【Kodex AI】今日宣布已完成160万欧元融资。 本轮融资由Signals VC领投,Techstars、德意志银行等天使投资者参与,其中包括:most AI首席执行官…...

LeetCode 2 两数相加
题目描述 链接:https://leetcode.cn/problems/add-two-numbers/?envTypefeatured-list&envId2ckc81c?envTypefeatured-list&envId2ckc81c 难度:中等 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式…...
springboot项目启动失败,不打印报错详细信息(启动打印日记问题)
1:出现这种我问题一般都是日记的问题,查看控制台启动打印的第一句,为什么启动失败,需要用那个日记 2:如果使用的是log4j或者logback与slf4j都是默认在依赖web自带的如下 <dependency><groupId>org.springf…...
MyBatis (where、set、foreach)标签
where标签 在上一节SQL 语句中加入了一个条件“11”,如果没有加入这个条件,那么可能就会变成下面这样一条错误的语句。 SELECT id,name,url,age,country FROM website AND name LIKE CONCAT(%,#{name},%)显然以上语句会出现 SQL 语法异常,但…...
flutter开发之安装dart
1、在MacOS系统中打开终端,进入到官网Get the Dart SDK | Dart brew tap dart-lang/dartbrew install dart 注意:若显示没有brew,请先执行第二步骤,如下: 2、打开homebrew的官网Homebrew — The Missing Package Man…...
向量召回:深入评估离线体系,探索优质召回方法
向量召回:深入评估离线体系,探索优质召回方法 1.简介 近年来,基于向量进行召回的做法在搜索和推荐领域都得到了比较广泛的应用,并且在学术界发表的论文中,基于向量的 dense retrieve 的方法也在不少数据集上都战胜了 sparse retrieve,吸引了越来越多的关注。在内网的不…...
播放器缓存队列bug解决方案
背景 我在开发一个播放器的缓存队列时,遇到一个bug,导致包和帧无法被下一个模块读取 找了半天,原来是队列中的包和帧数据要进行内容的刷新暂存 包数据和帧数据不能直接放入队列 //入队,包进队列 int AVPacketQueue::Push(AVPacket *val,i…...
React拖拽实践
当涉及到前端开发中的用户体验时,拖拽功能是一个常见而重要的需求。在React中,实现拖拽功能可以通过多种方式完成,但通常需要深刻理解React的状态管理、事件处理和DOM操作。本文将探讨React中拖拽的实践,包括基本原理、拖拽库的使…...

Stable Diffusion绘图,lora选择
best quality, ultra high res, (photorealistic:1.4), 1girl, off-shoulder white shirt, black tight skirt, black choker, (faded ash gray hair:1), looking at viewer, closeup <lora:koreandolllikeness_v20:0.66> 最佳品质,超高分辨率,&am…...

kube-controller-manager和kube-scheduler不能正常启动
kube-controller-manager-k8s-worker01和kube-scheduler-k8s-worker01没有启动起来 原因: 解决:进入/etc/kubernetes/manifests 编辑 将镜像地址修改为 然后重启kubelet:systemctl restart kubelet.service...

Mac OS m1 下安装Gradle5.1
1. 下载、解压 1.1 下载地址 https://gradle.org 往下翻 选择 5.1 或者选择 任何 你想要的版本 ,点击 binary-only 即可下载 . 1.2 解压到指定目录 2. 配置环境变量 2.1 编辑环境文件 vi ~/.bash_profile #GRADLE相关配置 GRADLE_HOME/Users/zxj/Documents/devSoft/grad…...
JUC并发编程面试题(自用)
线程池 1 线程池的作用:提高线程的利用率,线程复用,频繁的创建和销毁线程非常浪费资源 线程池的七大参数: corePoolSize(核心线程数):线程池中始终保持的活动线程数,即使它们处于空…...
Redis分布式会话
当探讨Redis分布式会话管理时,以下是更加详细的知识点: 1. 会话管理的挑战: 在分布式应用程序中,每个用户请求可能由不同的服务器处理。这导致了会话数据的分散性,需要一种方法来维护一致性的用户会话状态。 2. Redi…...

程序员大厂之鹅厂探秘
...

【Java 进阶篇】深入理解 JavaScript DOM Node 对象
在前端开发中,与HTML文档进行交互是一项基本任务。文档对象模型(Document Object Model,简称DOM)为开发者提供了一种以编程方式访问和操作HTML文档的方式。DOM的核心是节点(Node)对象,它代表了文…...

测试用例基础
测试用例的基本要素 测试环境, 操作步骤, 测试数据, 预期结果 测试用例的设计方法 基于需求的设计方法 需求文档 -> 梳理需求(掌握需求) -> 针对文档设计测试用例 只是针对需求进行大概的测试 具体的设计方法 等价类 等价类: 依据需求将输入(特殊情况…...

“Flex弹性布局、轮播图mock遍历数据和首页布局解析与实践“
目录 引言1. Flex弹性布局介绍及使用什么是Flex弹性布局?Flex容器与Flex项目Flex属性详解 2. 轮播图mock遍历数据简述轮播图的作用和意义处理mock数据的重要性使用Mock模拟数据遍历 3. 首页布局总结 引言 在现代网页开发中,灵活性和响应式布局是至关重要…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...