mall-swarm在Linux环境下的部署(基于Docker容器)
本文以 mall-swarm 项目为例,主要介绍一个微服务架构的电商项目如何在 Docker 容器下部署,涉及到大量系统组件的部署及多个 Spring Cloud 微服务应用的部署,基于 CentOS 7.6。
#👍 相关视频教程mall-swarm在Linux环境下的部署(基于Docker容器)open in new window
#环境搭建#基础环境部署
mall-swarm运行需要的系统组件如下,使用Docker Compose 批量安装更方便,Docker Compose使用请参考:使用Docker Compose部署SpringBoot应用 。
组件
版本号
Mysql
5.7
Redis
7.0
MongoDb
4.x
RabbitMq
3.9
Nginx
1.22
Elasticsearch
7.17.3
Logstash
7.17.3
Kibana
7.17.3
Nacos
2.1.0
本项目已经提供好了Docker Compose脚本,直接执行即可,脚本地址:https://github.com/macrozh ...
mall-swarm微服务项目在K8S下的最佳实践
由于 K8S 目前实在是太火了,之前一直说要给 mall 项目出个 K8S 部署方案,这次它来啦!在更新完 K8S 系列教程后,是时候来波实践了,拿 mall-swarm 项目来实践真的是刚刚好。如果你有在 Docker 下部署该项目的经历,而且已经学习了我的 K8S 系列教程的话,相信你能够轻松上手!
#服务器规划
我们先来说下服务器规划吧,之前一直使用的是单机部署所有服务,这次我们使用两台服务器来部署。
基础服务器(192.168.3.101):用于部署mall-swarm的依赖服务,包括MySql、Redis、Elasticsearch等与应用无关的服务,采用Docker方式来部署。
应用服务器(192.168.3.102):用于部署mall-swarm的应用服务,包括mall-admin、mall-portal、mall-search等应用服务,采用K8S方式来部署。
#镜像打包及推送
为了方便部署,我们把mall-swarm的所有应用镜像都上传到Docker Hub上去。
首先修改项目根目录下的pom.xml文件;
1234<properties&g ...
mall-swarm使用Jenkins实现自动化部署
之前对 mall-swarm 项目做了升级,注册中心和配置中心都改为使用 Nacos,但是 Jenkins 的自动化部署文档一直都没更新。有些朋友参考原来的文档部署有点小问题,这次对 mall-swarm 的自动化部署文档做个升级,希望对大家有所帮助!
#Jenkins的基本使用使用该部署方案需要对Jenkins有所了解,关于Jenkins的基本使用可以参考:《使用Jenkins一键打包部署SpringBoot应用,就是这么6!》
#部署准备
部署之前需要先安装mall-swarm需要的依赖服务,并打包好所有应用的Docker镜像。由于之前已经写过相关教程,这里只提示下关键的步骤,具体可以参考《mall-swarm在Linux环境下的部署(基于Docker容器)》,文档地址:http://www.macrozheng.com/#/deploy/mall_swarm_deploy_docker 。
需要安装好项目所需的依赖服务,直接使用Docker Compose安装即可,具体服务和版本信息如下;
组件
版本号
Mysql
5.7
Redis
5.0
Mon ...
SpringBoot应用整合ELK实现日志收集
ELK 即 Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统,本文主要讲解使用 ELK 来收集 SpringBoot 应用产生的日志。
#学习前需要了解的内容
开发者必备Docker命令
使用Docker Compose部署SpringBoot应用
SpringBoot应用中使用AOP记录接口访问日志
#ELK中各个服务的作用
Elasticsearch:用于存储收集到的日志信息;
Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发给Elasticsearch;
Kibana:通过Web端的可视化界面来查看日志。
#使用Docker Compose 搭建ELK环境#需要下载的Docker镜像123docker pull elasticsearch:6.4.0docker pull logstash:6.4.0docker pull kibana:6.4.0
#搭建前准备
elasticsearch 启动成功需要特殊配置,具体参考mall在Linu ...
Spring Data Redis 最佳实践!
Spring Data Redis 是 Spring 框架提供的用于操作 Redis 的方式,最近整理了下它的用法,解决了使用过程中遇到的一些难点与坑点,希望对大家有所帮助。本文涵盖了 Redis 的安装、Spring Cache 结合 Redis 的使用、Redis 连接池的使用和 RedisTemplate 的使用等内容。
#Redis安装
这里提供Linux和Windows两种安装方式,由于Windows下的版本最高只有3.2版本,所以推荐使用Linux下的版本,目前最新稳定版本为5.0,也是本文中使用的版本。
#Linux
这里我们使用Docker环境下的安装方式。
下载Redis5.0的Docker镜像;
1docker pull redis:5.0
使用Docker命令启动Redis容器;
123docker run -p 6379:6379 --name redis \-v /mydata/redis/data:/data \-d redis:5.0 redis-server --appendonly yes
#Windows
想使用Windows版本 ...
Nginx如何支持HTTPS?手把手教贼简单!
随着我们网站用户的增多,我们会逐渐意识到 HTTPS 加密的重要性。在不修改现有代码的情况下,要从 HTTP 升级到 HTTPS,让 Nginx 支持 HTTPS 是个很好的选择。今天我们来讲下如何从 Nginx 入手,从 HTTP 升级到 HTTPS,同时支持静态网站和 SpringBoot 应用,希望对大家有所帮助!
#生成SSL自签名证书
虽然自签名证书浏览器认为并不是安全的,但是学习下SSL证书的生成还是很有必要的!
首先创建SSL证书私钥,期间需要输入两次用户名和密码,生成文件为blog.key;
1openssl genrsa -des3 -out blog.key 2048
利用私钥生成一个不需要输入密码的密钥文件,生成文件为blog_nopass.key;
1openssl rsa -in blog.key -out blog_nopass.key
创建SSL证书签名请求文件,生成SSL证书时需要使用到,生成文件为blog.csr;
1openssl req -new -key blog.key -out blog.csr
在生成过程中,我们需 ...
Nginx的这些妙用,你肯定有不知道的!
Docker 环境下的安装#下载nginx的docker镜像1docker pull nginx:1.10
#从容器中拷贝nginx配置
先运行一次容器(为了拷贝配置文件):
1234docker run -p 80:80 --name nginx \-v /mydata/nginx/html:/usr/share/nginx/html \-v /mydata/nginx/logs:/var/log/nginx \-d nginx:1.10
将容器内的配置文件拷贝到指定目录:
1docker container cp nginx:/etc/nginx /mydata/nginx/
修改文件名称:
1mv nginx conf
终止并删除容器:
12docker stop nginxdocker rm nginx
#使用docker命令启动12345docker run -p 80:80 --name nginx \-v /mydata/nginx/html:/usr/share/nginx/html \-v /mydata/nginx/logs:/var/lo ...
MyBatis这样用,同事直呼哇塞,堪称最佳实践!
MyBatis 是一款非常流行的 ORM 框架,相信很多小伙伴都在使用。我们经常会把它和 MyBatis-Plus 或者 MBG 一起使用,用多了之后对于其一些常规操作就不太熟悉了。最近总结了下 MyBatis 的实用用法和技巧,希望对大家有所帮助!
#MyBatis简介MyBatis是一款优秀的开源持久层框架,支持自定义SQL查询、存储过程和高级映射,目前在Github上已有17k+Star。在MyBatis中,我们可以在XML中编写SQL语句,然后绑定到Java方法中,通过参数和结果集的自动映射来实现复杂的查询逻辑。MyBatis消除了几乎所有JDBC操作和手动绑定参数操作,使用起来非常方便!
#在SpringBoot中集成
下面我们来聊聊MyBatis在SpringBoot中的使用,首先我们需要集成它。
在pom.xml中添加MyBatis提供的Spring Boot Starter;
12345<dependency> <groupId>org.mybatis.spring.boot</groupId> <arti ...
MongoDB快速入门,掌握这些刚刚好!
虽说现在关系型数据库还是主流,但是面对某些需求的时候,需要非关系型数据库来补充它,学习一个主流的 NoSQL 数据库还是很有必要的。MongoDB 是一个功能丰富的 NoSQL 数据库,本文整理了它最常用的部分形成了这篇入门教程,希望对大家有所帮助。
#简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。
#安装
以前写的MongoDB安装教程是基于3.2版本的,发现有的朋友使用新版本安装有问题,这次我们使用最新版本再来安装一次,本文所使用的MongoDB版本为4.2.5,总的来说,新版本的安装更简单了。
#Windows下的安装
下载MongoDB安装包,选择Windows x64版本安装,下载地址:https://www.mongodb.com/download-center/community
运行MongoDB安装包并选择自定义安装,设置好安装路径;
配置MongoDB,让Mo ...
Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它!
最近 IDEA 2020最后一个版本发布了open in new window ,已经内置了 Lombok 插件,SpringBoot 2.1.x 之后的版本也在 Starter 中内置了 Lombok 依赖。为什么他们都要支持 Lombok 呢?今天我来讲讲 Lombok 的使用,看看它有何神奇之处!
#Lombok简介Lombok是一款Java代码功能增强库,在Github上已有9.8k+Star。它会自动集成到你的编辑器和构建工具中,从而使你的Java代码更加生动有趣。通过Lombok的注解,你可以不用再写getter、setter、equals等方法,Lombok将在编译时为你自动生成。
#Lombok集成首先我们需要在IDEA中安装好Lombok插件,如果你使用的是最新版IDEA 2020.3,则Lombok插件已经内置,无需安装。
之后在项目的pom.xml文件中添加Lombok依赖,SpringBoot 2.1.x版本后无需指定Lombok版本,SpringBoot在spring-boot-dependencies中已经内置。
123456<!--lombok ...
