**:如果使用阿里云linux服务器

1.设置容器镜像服务

  • 在阿里云平台搜索 “容器镜像服务”

  • 选择“CentOS”

    1. 安装/升级Docker客户端

    2. 配置镜像加速器

      ​ 针对Docker客户端版本大于 1.10.0 的用户

      您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://03eun7m7.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

OK!

一、安装docker

1. 安装一组工具

sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

2. 设置 yum 仓库地址

sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 更新 yum 缓存

sudo yum makecache fast

4. 安装新版 docker

sudo yum install -y docker-ce docker-ce-cli containerd.io

##如果你的虚拟机设置有问题的话,执行上边这个命令会有error错误
##请执行下边这行代码
yum install --allowerasing docker-ce

##验证docker是否安装成功
docker -v 查看docker版本

5.启动docker系统服务

sudo systemctl start docker

6. 设置 docker 开机启动

sudo systemctl enable docker

7. 运行 hello-world 镜像,验证 docker

sudo docker run hello-world

8.Docker命令大全:

Docker相关:
启动docker: systemctl start docker
查看docker状态:  systemctl status docker
重启docker:systemctl restart docker
关闭docker:systemctl stop docker
开机自启docker: systemctl enable docker 镜像相关:
查看docker镜像:
docker images
构建镜像:
docker build -t 服务名xxx .
启动镜像:
docker run -d -p 8085:8085 --name 服务名xxx 镜像名xxx
删除指定docker镜像:
docker rmi c20987f18b13(镜像id) 容器相关:
查看docker中的容器:docker ps -a
第一次启动容器:
docker run -d -p 8084:8084 --name 服务名xxx 6b3ceba0a4c9(容器id)/容器名
第一次启动容器(设置自启):
docker run -d -p 8084:8084 --restart=always --name 服务名xxx 6b3ceba0a4c9(容器id)/容器名
启动docker容器:docker start 6b3ceba0a4c9(容器id)/容器名
设置容器自启:docker update --restart=always 容器id
删除容器:docker container rm ck10_mariadb(容器id)

OK!

二、安装 jdk 1.8

1.新建目录

mkdir /usr/local/java
cd /usr/local/java/

2.下载rpm文件

​ 下载jdk1.8版本

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

3. 下载完成后添加执行权限

chmod +x jdk-8u131-linux-x64.rpm

4. rpm执行安装

rpm -ivh jdk-8u131-linux-x64.rpm

如下图则安装成功,还需要配置环境变量

5.编辑环境变量

vim /etc/profile

在最下方新增java环境变量,如下代码:

export JAVA_HOME=/usr/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

Ctrl+c后执行命令 :wq 保存

6.执行立即刷新命令

source /etc/profile

执行java、javac、java -version等命令进行验证

OK!

三、使用docker安装mysql5.7

1.获取mysql-5.7镜像

sudo docker pull mysql:5.7

2.查看镜像

sudo docker images

3.启动mysql

docker run --name mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql:/etc/mysql/conf.d -v /usr/local/mysql/log:/var/log/mysql  -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306 -d mysql:5.7

启动成功如图:

命令解析:

-d 后台运行
-p 端口映射 。-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务
-v 卷挂载 。 /usr/local/mysql/conf:/etc/mysql/conf.d :将到本地 /usr/local/mysql/conf挂载到容器的 /etc/mysql/my.cnf。后面修改配置文件,只需要再本地 /usr/local/mysql/conf修改即可,不需要进入容器里面进行修改
-e 环境配置。 -e MYSQL_ROOT_PASSWORD=123456 配置数据库连接密码为123456
–name 容器名字

4.查看容器命令

正在运行的容器
docker ps
所有的容器
docker ps -a

如下图:容器列表中存在刚刚启动的mysql容器。状态为Up 20 minutes代表正在运行中,并且已经运行了20分钟

5.开启防火墙端口

防火墙命令:

查看防火墙状态:firewall-cmd --state
开启防火墙:systemctl start firewalld.service
关闭防火墙:systemctl stop firewalld.service
重启防火墙:systemctl restart firewalld.service
加载防火墙开放端口:firewall-cmd --reload
查看防火墙开放端口列表:firewall-cmd --list-port
开放端口:firewall-cmd --permanent --zone=public --add-port=5672/tcp
关闭端口:firewall-cmd --permanent --zone=public --remove-port=5672/tcp  

先查看3306端口有没有开启

firewall-cmd --list-port

如果没有开启执行以下命令:

#永久开放3306端口号:
firewall-cmd --permanent --zone=public --add-port=3306/tcp
#加载防火墙开放端口
firewall-cmd --reload
#重新启动 防火墙
systemctl restart firewalld.service

6. 进入mysql容器,并登陆mysql

docker exec -it mysqlserver bash
mysql -uroot -p

7. 开启远程访问权限

use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

8.使用本地/其他电脑的Navicat Premium 进行远程连接测试

9. 测试卷挂载

查看数据挂载:

进入该目录:cd /usr/local/mysql/data
查看列表:ll

新建一个数据库:

刷新数据挂载(/usr/local/mysql/data)下数据列表

进入该目录:cd /usr/local/mysql/data
查看列表:ll

如下图,多了一个testdb。说明挂载成功

10. 设置mysql默认编码格式为utf8(可选)

# cd到本地挂载配置文件目录下
cd /usr/local/mysql/conf
# 新建配置文件
vim my.conf

输入一下配置信息

[client]
default-character-set=utf8 [mysql]
default-character-set=utf8 [mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

OK!

四、Docker安装RabbitMQ

1.使用docker查询rabbitmq的镜像

docker search rabbitmq

2. 安装指定版本的rabbitmq镜像

docker pull rabbitmq:3.9-management

management:代表该rabbitmq包含web管理页面

3. 运行+挂载rabbitmq:

docker run -d \
-v /usr/local/rabbitmq/data:/var/lib/rabbitmq \
-p 5672:5672 -p 15672:15672 --name rabbitmq --restart=always \
--hostname rabbitmq rabbitmq:3.9

4.开启防火墙端口 5672、15672

查看端口是否启动:

firewall-cmd --list-port

如果没有则运行以下命令:

#永久开放5672、15672端口号:
firewall-cmd --permanent --zone=public --add-port=5672/tcp
firewall-cmd --permanent --zone=public --add-port=15672/tcp
#加载防火墙开放端口
firewall-cmd --reload
#重新启动 防火墙
systemctl restart firewalld.service

5.在阿里云linux服务器安全组中添加端口 5672、15672

6.如果安装的是(没有web页面)的rabbitmq,需要如下操作:

1.查看部署的mq容器id: docker ps -a
2.进入容器内部:docker exec -it 容器id /bin/bssh
3.安装web插件:rabbitmq-plugins enable rabbitmq_management

7. 访问http://xxxxxx:15672,访问web界面

8.创建root用户(超级管理员)

  • 进入rabbitmq客户端,在admin添加新用户root,tag选择administrator

  • 点进root,设置root用户可以管理虚拟主机/,这里点击默认的set permission即可

  • 确认springboot中application.properties配置正确
 rabbitmq:
host: 8.130.17.94
port: 5672
username: root
password: root
virtual-host: /

OK!

五、使用docker安装nacos

1. 搜索nacos镜像(对版本没有要求的话)

docker search nacos

2. 安装nacos(指定版本1.4.0)

docker pull nacos:1.4.0

3. 安装数据库,版本要求:5.6.5+ (一般用mysql5.7)

  • 在阿里云服务器数据库中创建nacos数据库:
  • 初始化数据库,导入初始化文件nacos-db.sql

4. 运行nacos镜像(单机模式-standalone)

docker run -d -e MODE=standalone -e PREFER_HOST_MODE=hostname -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=服务器ip -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=123456 -e MYSQL_SERVICE_DB_NAME=nacos -p 8848:8848 --name nacos --restart=always nacos/nacos-server:1.4.0

5.开启8848端口

  • 开启linux防火墙8848端口
  • 在阿里云服务器安全组中添加8848端口

6. 访问Nacos

默认用户名密码都为nacos

http://服务器ip:8848/nacos/index.html

OK!

六、spring cloud项目打包

1.配置application.yml

server:
port: 8084
spring:
datasource:
url: jdbc:mysql://服务器ip:3306/jjb?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderService
cloud:
nacos:
discovery:
server-addr: 服务器ip:8848
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: cn.itcast.order.modules.*.entity
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
feign:
httpclient:
enabled: true # 开启feign对HttpClient的支持
max-connections: 200 # 最大的连接数
max-connections-per-route: 50 # 每个路径的最大连接数
#mybatis
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: cn.itcast.order.modules.*.entity
global-config:
#数据库相关配置
db-config:
#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: ID_WORKER
banner: false

2.配置bootstrap.yml

spring:
cloud:
nacos:
config:
server-addr: 服务器ip:8848
application:
name: orderService

3. 配置pom.xml文件(打jar包相关配置)

在pom.xml最下面配置以下代码:

 <build>
<finalName>app</finalName>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources> <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

4. 打jar包

  • 通过idea中的maven进行打包(jar包)
  • 具体打包方式:百度以下(很简单)

5. 创建Dockerfile文件(一会儿构建微服务镜像时使用)

给每一个微服务分别创建一个该文件,在idea里面创建即可。里面的端口号和微服务端口号必须一致

FROM java:8

COPY *.jar /app.jar

CMD ["--server.port=8084"]

EXPOSE 8084

ENTRYPOINT ["java","-jar","/app.jar"]

OK!

七、项目部署

1.创建jar包部署位置

在linux系统上,

cd /home
ll
mkdir xiaoguo(自定义)
ll
cd xiaoguo
mkdir hjzProject(自定义)
ll
cd hjzProject
创建各个微服务的jar包目录
比如:
mkdir all-order-service-8084
mkdir gateway-10010
mkdir login-service-8082
mkdir master-worker-service-8085
mkdir picture-service-8086
mkdir rabbitMQ-service-8087

2. 把打好的微服务jar包+Dockerfile文件放在对应的目录中(使用Xshell连接linux,然后使用xftp将文件上传)

3.给每一个微服务构建一个镜像

举例:
1.进入某个jar包的存放目录:cd all-order-service-8084
2.构建镜像: docker build -t orderservice .
3.运行该镜像:docker run -d -p 8084:8084 --name orderservice orderservice
4.运行成功后,查看对应的容器:docker ps

OK!

八、配置nacos配置中心(最后~~~)

1.构建springboot项目

2.打包应用

3.编写dockerfile

4.构建镜像

5.发布运行

linux系统部署微服务项目的更多相关文章

  1. Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  2. Docker部署微服务项目

    测试包准备工作 1.spring.io或者ide创建demo工程 spring官网 2.本地demo代码,打包成jar包 使用Dockerfile构建微服务镜像 3.将jar包上传到你的vps lin ...

  3. Linux系统部署samba服务记录

    Samba(Server Messages Block)是一种linux系统和windws系统之间依靠网络协议共享文件的服务程序,(Samba has provided secure, stable ...

  4. 毕业设计代做,各种系统微服务项目ssm项目,员工管理系统,微信小程序,购物商城,二手商城系统,销售系统,等等

    毕业设计代做,各种系统,微服务项目,ssm项目 小程序,商城等,期末作业等都可以,价格好说,长期接单, 有项目说明书,软件介绍相关文档,答辩的时候包过,知识点对接好,给你讲解等, 毕业设计代做,各种系 ...

  5. Docker 搭建 ELK 读取微服务项目的日志文件

    思路: 在docker搭建elasticsearch与kibana来展示日志,在微服务部署的机子上部署logstash来收集日志传到elasticsearch中,通过kibana来展示,logstas ...

  6. Linux系统部署JavaWeb项目(超详细tomcat,nginx,mysql)

    转载自:Linux系统部署JavaWeb项目(超详细tomcat,nginx,mysql) 我的系统是阿里云的,香港的系统,本人选择的是系统镜像:CentOS 7.3 64位. 具体步骤: 配置Jav ...

  7. Docker部署golang微服务项目

    这篇博客是为了记录一下部署步骤. 因为实训需要,我要在服务器上用docker部署我们小组的微服务项目.我们的微服务有Gateway,User,Scene,Device四个部分,分别占用不同的端口,其中 ...

  8. docker微服务部署之:三,搭建Zuul微服务项目

    docker微服务部署之:二.搭建文章微服务项目 一.新增demo_eureka模块,并编写代码 右键demo_parent->new->Module->Maven,选择Module ...

  9. docker微服务部署之:二、搭建文章微服务项目

    docker微服务部署之:一,搭建Eureka微服务项目 一.新增demo_article模块,并编写代码 右键demo_parent->new->Module->Maven,选择M ...

  10. docker微服务部署之:一,搭建Eureka微服务项目

    先说明一下docker需要搭建的微服务的基本情况: 项目情况:一个demo_parent项目,下面三个子模块:demo_eureka(eureka服务).demo_article(文章服务).demo ...

随机推荐

  1. 【C++】从零开始的CS:GO逆向分析2——配置GLFW+IMGUI环境并创建透明窗口

    [C++]从零开始的CS:GO逆向分析2--配置GLFW+IMGUI环境并创建透明窗口   使用的环境:Visual Studio 2017,创建一个控制台程序作为工程文件 1.配置glfw 在git ...

  2. Podman容器技术基础

    Podman容器技术基础 目录 Podman容器技术基础 简介 安装 基础命令 简介 Podman 是一个开源的容器运行时项目,可在大多数 Linux 平台上使用.Podman 提供与 Docker ...

  3. 如何用AR Engine环境Mesh能力实现虚实遮挡

    在AR应用中,用户最不希望看到不真实的穿模现象发生,如虚拟形象部分身体陷入墙壁之中,或者未碰到墙壁却已无法移动,这种不真实的交互十分影响用户体验.那如何才能让避免虚拟物体的穿模问题呢?使用AR Eng ...

  4. 小白转行入门STM32----手机蓝牙控制STM32单片机点亮LED

    @ 目录 引言导读 一.通信基础知识 1.1 通信到底传输的是什么? 1.2 比特率和波特率 习题 1.1 双工和单工 习题 1.2 串行和并行 1.3 异同通信和同步通信 习题 二.连接STM32单 ...

  5. python-D2-计算机与编程语言

    计算机五大核心 控制器 计算机的指挥系统,可以控制计算机硬件的整体运行 运算器 实现算术运算和逻辑运算 控制器和运算器结合起来就是cpu,也称为中央处理器,是整个电脑的核心. 存储器 分为两类,非永久 ...

  6. 5.RabbitMQ系列之headers交换器

    headers exchange是根据消息header值而不是routing key将消息路由到队列的交换器. 生产者在消息头中以键值对的形式添加一些值,并将其发送到headers exchange, ...

  7. JUC(3)

    文章目录 1.集合类不安全 2.在高并发情况下arraylist()并不安全 3.高并发下set并不安全 3.测试map(高并发情况下出现问题) 1.集合类不安全 2.在高并发情况下arraylist ...

  8. CF620E New Year Tree(树形+dfs序+线段树+状态压缩)

    题目链接 题目大意 \(~~\)给出一棵 nn 个节点的树,根节点为 11.每个节点上有一种颜色 c\(_{i}\) 和m 次操作.操作有两种: \(~~~~\) 1. 1\(~\)u\(~\)c:将 ...

  9. .NET周报【11月第1期 2022-11-07】

    国内文章 开源·安全·赋能 - .NET Conf China 2022 https://mp.weixin.qq.com/s/_tYpfPeQgyEGsnR4vVLzHg .NET Conf Chi ...

  10. MybatisPlus Lambda表达式 聚合查询 分组查询 COUNT SUM AVG MIN MAX GroupBy

    一.序言 众所周知,MybatisPlus在处理单表DAO操作时非常的方便.在处理多表连接连接查询也有优雅的解决方案.今天分享MybatisPlus基于Lambda表达式优雅实现聚合分组查询. 由于视 ...