linux系统部署微服务项目
2022/4/29 7:14:14
本文主要是介绍linux系统部署微服务项目,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
**:如果使用阿里云linux服务器
1.设置容器镜像服务
-
在阿里云平台搜索 “容器镜像服务”
-
选择“CentOS”
-
安装/升级Docker客户端
-
配置镜像加速器
针对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系统部署微服务项目的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法