**:如果使用阿里云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. win10系统应用商店打开后无法联网 代码: 0x80131500 的解决办法

    官方提供的建议网址: https://answers.microsoft.com/zh-hans/windows/forum/all/代码/cbbe7aaf-8f66-4779-89c8-3c74f5 ...

  2. Lock 锁底层实现

    ★ 1.讲讲 Lock 锁 是一个接口,有三个实现类,分别是常用的 可重入锁,读锁.写锁.常用的是可重入锁. 加锁使用lock() 方法,解锁使用 unlock() 方法.Lock的底层是 AQS+C ...

  3. aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE

    网络上大家分享的 aardio + Python 混合开发的文章很多,不得不说 aardio 与 Python 混合开发是真的简单 !  快速入门 推荐几个快速上手教程:< aardio + P ...

  4. ERP 系统的核心是什么?有什么作用?

    ERP系统的核心就是系统的内部业务逻辑,这也是ERP复杂.专业性的体现!ERP系统需要适配企业的管理思想和业务流程,在技术上面也也要做到快速部署和个性化定制(客户化定制),而这些企业的规模不同.行业不 ...

  5. 为什么 MES 管理系统是智能制造的核心?

    不能说MES 管理系统是智能制造的核心,只能说MES管理系统是智能制造的核心的一部分,并且是一小部分.智能制造的核心的为高端制造装备和工业互联网平台,引用工信部赛迪研究院软件所所长潘文的话" ...

  6. (数据科学学习手札144)使用管道操作符高效书写Python代码

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,一些比较熟悉pandas的读者 ...

  7. Vue学习之--------组件嵌套以及VueComponent的讲解(代码实现)(2022/7/23)

    欢迎加入刚建立的社区:http://t.csdn.cn/Q52km 加入社区的好处: 1.专栏更加明确.便于学习 2.覆盖的知识点更多.便于发散学习 3.大家共同学习进步 3.不定时的发现金红包(不多 ...

  8. 算法设计(动态规划应用实验报告)实现基于贪婪技术思想的Prim算法、Dijkstra算法

    一.名称 动态规划法应用 二.目的 1.贪婪技术的基本思想: 2.学会运用贪婪技术解决实际设计应用中碰到的问题. 三.要求 1.实现基于贪婪技术思想的Prim算法: 2.实现基于贪婪技术思想的Dijk ...

  9. springcloud组件梳理之hystrix

    在微服务架构体系中,各服务中间的相互调用是常态,没有哪个服务能保证自身百分百不会出问题,然后再加上网络的波动以及环境等问题,服务间调用的稳定性无法保证,这时候就需要一个有容错能力的组件来介入,当调用出 ...

  10. 如何把Java代码玩出花?JVM Sandbox入门教程与原理浅谈

    在日常业务代码开发中,我们经常接触到AOP,比如熟知的Spring AOP.我们用它来做业务切面,比如登录校验,日志记录,性能监控,全局过滤器等.但Spring AOP有一个局限性,并不是所有的类都托 ...