[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务

这篇具有很好参考价值的文章主要介绍了[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、环境准备

1、工具准备

2、虚拟机环境

3、Docker 环境

二、项目准备

1、配置各个模块(微服务)的 Dockerfile

2、配置 docker-compose.yml 文件

3、Maven 打包

4、文件整合并传输

三、微服务部署

1、部署至 Docker

2、访问微服务

四、问题汇总

1、加载、启动很慢

2、没有给 CentOS 安装 jdk8


一、环境准备

1、工具准备

  • 虚拟机需要使用:VMware;
  • 操作虚拟机需要使用:Xshell、Xftp;
  • Linux 部署微服务需要使用:Docker;
  • 微服务项目打包需要使用:IDEA、Maven;
  • 编辑 Dockerfile、docker-compose.yml 文件需要使用:随便一个编辑器;

2、虚拟机环境

(1)使用 CentOS7 作为项目部署的服务器操作系统

由于访问微服务需要操作系统有端口开放,因此可以采取两种措施:

  • 第一种:关闭防火墙;
  • 第二种:微服务用到哪些端口,就打开哪些端口;

参考如下内容:https://www.cnblogs.com/ketoli/p/15111625.html

在这里我选择用到端口再进行开放,需要注意的是:每次更新完防火墙配置后,都需要重启防火墙和 Docker

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

如上图所示:开启了 10086、8091、8081、8080、8848 端口。 

(2)安装 JDK8

  • 首先要安装 yum 工具; 
yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
  • 使用下面命令直接安装 jdk8 
yum install java-1.8.0-openjdk* -y

3、Docker 环境

(1)配置阿里云仓库、配置镜像源

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

sed -i 's@download.docker.com@mirrors.tuna.tsinghua.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

(2)安装 docker-ce

yum install -y docker-ce

(3)配置镜像加速器

  • registry-mirrors 可以使用自己的阿里云镜像加速器,百度一下即可。 
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<- 'EOF'
{
  "registry-mirrors": ["https://n0dwemtq.mirror.aliyuncs.com"]
}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

(4)安装 Docker-Compose

curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

(6)设置 Docker 开机自动启动

systemctl enable docker

二、项目准备

下面将要部署一个微服务项目,其中包括 3 个微服务:

  • gateway 网关;
  • order 服务;
  • user 服务;

1、配置各个模块(微服务)的 Dockerfile

(1)编写 Dockerfile

  • 这里举一个 gateway 模块的 Dockerfile 为例子;
  • 其他的模块只需要修改 EXPOSE 暴露的端口即可;
# 指定基础镜像
FROM java:8-alpine
# 将 jar 包复制到容器中
COPY ./app.jar /app.jar
# 暴露端口
EXPOSE 10086
# 入口,java项目的启动命令
ENTRYPOINT java -jar /app.jar

2、配置 docker-compose.yml 文件

Dockerfile 文件构建镜像,那么 docker-compose 文件就是根据镜像构建容器。

需要关注的是:

  • 服务名,比如:nacos、user-service;
  • build:它会寻找当前 docker-compose 所在目录对应的文件夹,并以文件夹中的内容去构建容器;
  • ports:端口号,是服务器端口和docker端口映射;
  • restart=always:在容器已经 stop 或 Docker stoped/restarted 的时候才重启容器;
version: "3.2"

services:
  nacos: # 需要将 java 项目中的 application 配置文件中,需要用到这些中间件的地址 localhost,都改为这个服务名 nacos(数据库则是 mysql)
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports: 
      - "8848:8848"
    restart: always
    logging: 
      driver: "json-file"
      options: 
        max-size: "100m"

  user-service: # 与 nacos 注册中心的 name 一致
    build: ./user-module # 寻找当前 yml 所在目录的文件夹,其中包含 dockerfile
    restart: always
    logging: 
      driver: "json-file"
      options: 
        max-size: "100m"

  order-service:
    build: ./order-module
    restart: always
    logging: 
      driver: "json-file"
      options: 
        max-size: "100m"

  gateway:
    build: ./gateway
    ports: 
      - "10086:10086"
    restart: always
    logging: 
      driver: "json-file"
      options: 
        max-size: "100m"  

3、Maven 打包

(1)项目结构

  • feign-api:整合了 nacos 和 ribbon,但是不需要打包,使用 nacos 的容器代替即可;
  • gateway:网关,做了普通的鉴权认证和跨域拦截;
  • order-module:order-service 服务;
  • user-module:user-service 服务;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

(2)pom 文件

pom 文件的编写需要注意 2 点:

  • 有 application 启动类的 module,才需要加上 <build>;
  • <build> 中统一设置 <finalName> 为 app,使得到的 jar 包名称都是 app,方便书写;
  • 以我的项目为例子:feign-api 是做远程调用和负载均衡的,不需要启动类,因此只有它不用 <build>;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

(3)修改 application 和 bootstrap 配置文件

  • 将数据库 url 中的 ip 都改为 mysql;(或者你用的其他数据库)
  • 将配置 nacos 服务发现的地址和统一配置的地址的 ip 都改为 nacos;
  • 这是因为实际使用时 ip 肯定不能用本机地址;
  • bootstrap:

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

  • application: 

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

  • 因为我没用到数据库,所以就不演示数据库的 ip 的修改了;

(4)打包

  • 完成前面的 2 个步骤,就可以打包了,直接使用 maven 的 clean + package 命令即可;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

  • 打完 jar 包后,可以在 target 目录下找到 app.jar; 

4、文件整合并传输

(1)将 jar 包放入指定文件夹

  • 我们在 docker-compose.yml 中,指定了 user-service 放在 user-module 文件夹;
  • 因此 user 的 jar 包要放入 user-module,其他的也一样;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

  • 下面是整个项目的文件;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

(2)传输至 Linux

  • 使用 Xftp(或者其他文件传输工具)将 Cloud01 文件夹传输至 Linux;
  • 放在哪里可以自己定;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

三、微服务部署

1、部署至 Docker

(1)cd 至项目在 Linux 中的位置

  • 创建目录使用:mkdir -p /usr/myProject/springcloud/;
  • 然后 cd 至含有 docker-compose.yml 的目录下;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

(2)使用 docker-compose 

  • 使用命令:docker compose up -d;(-d 后台运行)
  • 其作用是:创建并启动 Container;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

注意: 

  • 我们在 nacos 服务中配置了 image 属性,会自动 pull 该镜像;
  • 在 Dockerfile 中引入了 java:8-alpine 基础镜像,也会自动 pull;
  • 因此第一次使用会比较久,建议先不加 -d,可以观察创建过程;

(3)可能会遇到的问题

如果我们使用 docker compose up 一次性将所有容器创建并启动,这就会有一个问题:

  • nacos 不是第一个启动的话,那么其他服务就无法进行注册。

因此我们有两种选择:

  • 第一种:先 compose up nacos 启动并创建 nacos 容器,再 compose up 启动所有容器;
  • 第二种:直接 compose up 启动所有容器,再 compose restart [service] [service] 重启除了 nacos 外的服务;

2、访问微服务

(1)访问 nacos

  • 我们可以先试试访问 nacos 服务中心;
  • 可以发现服务都注册进来了;

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

(2)向 http://ip:port/xxx 发送请求

  • 我这里会从网关发起向 order-service 的查询请求;
  • order-service 又会远程服务调用 user-service; 

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务,Spring,CentOS,spring cloud,微服务,spring,linux,后端,docker

四、问题汇总

1、加载、启动很慢

我遇到的问题是:

  • docker compose up 之后,要过好几分钟才能访问 nacos 主页。并且需要等到可以访问 nacos 主页之后,再 restart 其他服务,才能将服务注册到 nacos。

(1)解决方法

考虑到微服务其实会占用很大的内存,所以我将虚拟机的内存增大到 4G 了。

然后部署,服务加载的速度就变得很快了。

2、没有给 CentOS 安装 jdk8

既然要运行 java 项目,那么一个 jdk 也是必不可少的。(我个人就是忘了装 jdk,debug 了数小时没有部署成功)

前文准备虚拟机环境中已有介绍。文章来源地址https://www.toymoban.com/news/detail-737477.html

到了这里,关于[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在CentOS7安装部署GitLab服务

    官方安装教程:https://about.gitlab.com/install/ 参考安装教程:https://developer.aliyun.com/article/74395 Step1:配置yum源 存入以下内容: Step2:更新本地yum缓存 Step3:安装GitLab社区版 Step4:启动Gitlab Step5:登录并配置Gitlab 打开服务器本地浏览器,访问:127.0.0.1 地址,打开 Gitlab 管理后台,

    2024年02月14日
    浏览(30)
  • Linux系统(Centos7)部署JDK环境

    要想在将Java项目上线,则必须在Linux系统中部署Java项目,而要想Java项目在Linux系统中运行,则首先必须在LInux系统中部署JDK环境,具体步骤如下所示: 1.下载JDK8 JDK下载路径 目前官网下载jdk的时候需要登录,这边分享一个可以使用的账号,方便大家下载: 账号:913898356@qq.c

    2024年02月16日
    浏览(40)
  • linux centos7 django uwsgi 部署

    安装这里就不多说,直接配置问题及所遇到问题总结 django 项目 manage.py目录新建uwsgi.ini文件 uwsgi配置 [uwsgi] socket = 127.0.0.1:9000 # uwsgi直接访问用http,nginx访问用socket http= 127.0.0.1:9000 chdir = /usr/local/www/项目目录 wsgi-file = /usr/local/www/项目目录/项目目录/wsgi.py module = 项目目录.wsgi

    2024年01月21日
    浏览(34)
  • Linux系统【centos7】怎么手动部署网站?

    要手动部署网站在CentOS 7系统上,请按照以下步骤操作: 1. 安装Apache服务器 在终端中使用以下命令安装Apache服务器: ``` sudo yum install httpd ``` 2. 配置防火墙 设置防火墙规则以允许HTTP和HTTPS流量: ``` sudo firewall-cmd --permanent --add-service=http  sudo firewall-cmd --permanent --add-service=http

    2024年02月05日
    浏览(33)
  • centos7部署时间同步(ntp)服务器

    这里搭建ntp服务器,服务端和客户端,客户端去拉取服务端的时间,为自己所用。 a.安装ntp b.配置文件 最后加上下面的 c.开启服务 d.确认NTP同步正常 输出是 synchronised to NTP server 那证明已经连上了NTP服务器, 如果输出是 unsynchronised 开头的 那证明还没有连上NTP服务器,过几分钟

    2024年01月19日
    浏览(44)
  • ZLMediaKit在linux上(CentOS7)部署与启动

    1)查看旧版本的cmake 2)删除旧版本的cmake 3)创建安装目录并在目录中下载新版本的cmake 4)编译安装 5)修改环境变量 6)查看cmake版本 1)安装openssl 2)安装 yasm 3)安装ffmpeg 1、下载解压 2、 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录 3、配置变量 4、查

    2024年02月11日
    浏览(37)
  • Linux运维实战:Centos7.6部署wingftpserver

    Wing FTP Server是一款优秀且高速的跨平台FTP服务器软件,对比Windows中自带的 FTP 服务器,它支持可伸缩的处理器架构并采用异步IO,在速度和效率方面遥遥领先于其他同类产品,稳定可靠, 高负载的同时也能持续地正常运行,在网络运维中它契合企业和学校的文件传输,除了基

    2024年01月20日
    浏览(54)
  • 微服务SpringCloud教程——Spring Cloud是什么

    Spring Cloud 是一款基于 Spring Boot 实现的微服务框架。Spring Cloud 源自 Spring 社区,主要由 Pivotal 和 Netflix 两大公司提供技术迭代和维护。 随着微服务的火爆流行,国内外各大互联网公司都相继分享了他们在微服务架构中,针对不同场景出现的各种问题的解决方案和开源框架。

    2024年02月15日
    浏览(37)
  • Jenkins + Docker + Maven + Windows 一键部署 Spring Boot 程序到远程 Linux 服务器

    本地:Windows 10 ; 本地:Jenkins + Publish Over SSH 插件; 本地:Maven ; 远程:Linux ; 远程:Docker ; 准备步骤 使用 Dockerfile 构建镜像; 基本思路 第一步:使用 mvn clean package -DskipTests 打包 Spring Boot 程序为 jar 包; 第二步:使用 Windows 命令将 jar 包复制到 jenkins 项目工作目录;

    2024年02月12日
    浏览(45)
  • linux CentOS7 keepalived+LVS(DR)搭建部署

    1.准备5台虚拟机,2台做LVS主备调度器,2台做web服务器,1台做存储,主机机验证 2.LVS主备调度器 master(192.168.1.127)backup(192.168.1.106) 3.web1(192.168.1.121)web2(192.168.1.118) 4.存储(192.168.1.15) 5.虚拟ip(192.168.1.111) 关闭防火墙 ————————————————   开始 写入

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包