linux系统部署微服务项目

**:如果使用阿里云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界面

1651138879769

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 

1651140121768

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.发布运行