1.linux环境安装
1.安装tomcat,jdk,maven等环境
2.nexus安装
nexus安装:
#下载nexus
wget https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.5-02-bundle.tar.gz
#解压到指定目录
tar -zxvf nexus-2.14.5-02-bundle.tar.gz -C /usr/local/
#在环境变量中设置启动用户
vim /etc/profile
#编辑
export RUN_AS_USER=root
#编辑完成ESC退出编辑模式输入指令,保存文件并退出vi
:wq
#让修改类容生效
source /etc/profile
#启动nexus
./bin/nexus start
3.修改maven的setting文件
<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 这个值是构建系统的本地仓库的路径。默认的值是${user.home}/.m2/repository.如果一个系统想让所有登陆的用户都用同一个本地仓库的话,这个值是极其有用的 -->
<localRepository>F:\apache-maven-3.3.9\repository</localRepository>
<servers>
<server>
<id>nexus</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!-- 仓库镜像 -->
<mirrors>
<mirror>
<id>nexus</id>
<name>本地nuxus私服镜像</name>
<!-- 服务器镜像的URL地址 -->
<url>http://ip:port/nexus/content/groups/public</url>
<!-- *号表示是所有的Maven仓库镜像 -->
<!-- 还可以有以下几种取值:【central】、【repo1,repo2】、【*,!inhouse】、【external:*】 等 -->
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<!-- 代理服务器配置 -->
<proxies />
<!-- 通过Profile机制,将 POM 中的一些配置放到settings.xml中的Profile中 -->
<profiles>
<profile>
<id>nexus</id>
<!-- 远程仓库配置,下载与上传通过此配置的仓库。该配置覆盖了pom.xml中的 repositories -->
<repositories>
<repository>
<id>nexus</id>
<name>Repository for Local Nexus Server</name>
<url>http://ip:port/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<!-- 从远程仓库检查更新的频率:dailly——每天检查一次,默认值;never——从不更新;always——每次构建都检查更新;interval:x——间隔x分钟检查一次; -->
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Plugin Repository for Local Nexus Server</name>
<url>http://ip:port/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
4.安装git
Linux安装git
yum -y install git
5.consul安装配置(这里没有采用集群模式,单机server启动)
consul安装启动
# cd /opt/
#创建目录
mkdir consul
#目录给权限
chmod 777 consul
#cd consul
#下载
wget https://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zip
#解压
unzip consul_1.3.0_linux_amd64.zip
#可以直接使用访问consul命令
cp consul /usr/local/bin/
2. 检查是否安装成功
consul
consul version
#开发者模式启动命令
nohup consul agent -dev -ui -node=consul-dev -client=“consul所在服务器内网ip”
#生产环境
nohup consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=ip(服务器外网) -bind=0.0.0.0(内网) -client=0.0.0.0
持久化启动:nohup consul agent -server -ui -bootstrap-expect=1 -data-dir=/tmp/consul -node=agent-one -advertise=0.0.0.0 -bind=0.0.0.0 -client=“consul所在服务器内网ip”
#删除无效service
http://ip:port/v1/agent/service/deregister/adleading-teacher-service-id-port
6.kafka安装(非集群模式)
kafka安装启动(一般购买kafka服务器,配置文件直接配置kafka服务器地址即可)
#解压kafka
tar -xzf kafka_2.12-2.3.1.tgz
#进入目录
cd /usr/local/kafka_2.12-2.3.1/bin
#先启动zookeeper
#然后启动kafka
nohup ./kafka-server-start.sh ../config/server.properties &
#kafka单独存在一个服务器需要修改service.properties
listeners=PLAINTEXT://ip:port(内网ip)
#kafka 测试
bin/kafka-topics.sh --create --zookeeper centos2:2181 --replication-factor 1 --partitions 1 --topic test
7.zookeeper安装启动
zookeeper安装启动
cd /usr/local
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
#解压
tar -zxvf zookeeper-3.4.14.tar.gz
#进入conf目录:
cd zookeeper-3.4.14/conf
#将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名)
cp zoo_sample.cfg zoo.cfg
#启动zk
cd /usr/local/zookeeper-3.4.14/bin
nohup ./zkServer.sh start
#查看状态
./zkServer.sh status
8.记一些常用自己比较容易忘记的linux命令
linux 基本命令
#查看进程
ps -ef|grep kafka
#杀掉进程
kill -9 进程id
#vim操作指令
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
maven命令
#打包命令
mvn clean package --settings F:\maven\maven_setting\settings_adleading.xml -Dmaven.test.skip=true
#linux tomcat发包命令
java -jar template-service-0.0.1.jar
2.服务搭建
1.config配置中心搭建
pom文件依赖
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
#配置中心核心依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
#配置中心访问安全密钥配置依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
#consul服务注册健康检查依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
#maven项目打包插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
启动类核心注解代码:
@EnableDiscoveryClient //consul
@SpringBootApplication //spring cloud项目核心注解
@EnableConfigServer //表示该服务为配置中心
配置文件:
#配置文件 application.properties
spring.application.name=adleading-config
server.port=8080
#config加载配置文件配置
spring.cloud.config.server.git.uri=git地址
spring.cloud.config.server.git.search-paths=config
spring.cloud.config.label=master
spring.cloud.config.server.git.username=用户名
spring.cloud.config.server.git.password=密码
spring.cloud.config.discovery.enabled=true
spring.cloud.config.fail-fast=true
#config访问密钥
security.user.name=自己维护
security.user.password=自己维护
#consul配置
#spring.cloud.consul.enabled=true
spring.cloud.consul.host=localhost
#spring.cloud.consul.host=ip
spring.cloud.consul.port=port
#spring.cloud.consul.discovery.enabled=true
spring.cloud.consul.discovery.hostname=${spring.cloud.client.ipAddress}
spring.cloud.consul.discovery.port=${server.port}
#spring.cloud.consul.discovery.register=false
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.consul.discovery.hostname}:${spring.cloud.consul.discovery.port}
spring.cloud.consul.discovery.service-name=${spring.application.name}
spring.cloud.consul.discovery.healthCheckUrl=http://${spring.cloud.consul.discovery.hostname}:${server.port}/health
spring.cloud.consul.discovery.healthCheckInterval=5s
spring.cloud.consul.discovery.prefer-ip-address=true
# Consul ACL 可配置acl
#spring.cloud.consul.discovery.acl-token=ab45ef9a-4f2b-0a8a-f88b-75f68a656fa7
2.网关服务搭建
pom依赖:
spring cloud zuul(zuul网关服务搭建)
#jar包依赖 pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR2</spring-cloud.version>
</properties>
<dependencies>
<!-- 依赖配置中心加载配置文件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- consul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
<!-- 健康监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
<!-- zuul核心包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
启动类:
#启动类注解
@EnableDiscoveryClient //consul
@SpringBootApplication //spring cloud项目核心注解
@EnableZuulProxy //网关服务
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class, args);
}
//过滤器配置
@Bean
public MyGatewayFilter myGatewayFilter(){
return new MyGatewayFilter();
}
//回退操作
@Bean
public ConsumerDeptFeignFallbackProvider consumerDeptFeignFallbackProvider(){
return new ConsumerDeptFeignFallbackProvider();
}
//装载配置文件
@Bean
@RefreshScope
@ConfigurationProperties("zuul")
public ZuulProperties zuulProperties(){
return new ZuulProperties();
}
}
配置文件:
#配置文件 bootstrap.properties
spring.application.name=adleading-zuul
server.port=8081
#配置中心服务配置
spring.cloud.config.name=${spring.application.name}
spring.cloud.config.profile=master
spring.cloud.config.discovery.enabled=true
#spring.cloud.config.uri=http://127.0.0.1:8080
spring.cloud.config.discovery.service-id=adleading-config //配置中心注册在consul中的服务名
spring.cloud.config.fail-fast=true
spring.cloud.config.label=master
spring.cloud.config.username=自己定义
spring.cloud.config.password=自己定义
#spring.cloud.consul.enabled=true
spring.cloud.consul.host=localhost
#spring.cloud.consul.host=ip
spring.cloud.consul.port=port
#spring.cloud.consul.discovery.enabled=true
spring.cloud.consul.discovery.hostname=${spring.cloud.client.ipAddress}
spring.cloud.consul.discovery.port=${server.port}
#spring.cloud.consul.discovery.register=false
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.consul.discovery.hostname}:${spring.cloud.consul.discovery.port}
spring.cloud.consul.discovery.service-name=${spring.application.name}
spring.cloud.consul.discovery.healthCheckUrl=http://${spring.cloud.consul.discovery.hostname}:${server.port}/health
spring.cloud.consul.discovery.healthCheckInterval=5s
spring.cloud.consul.discovery.prefer-ip-address=true
# Consul ACL
#spring.cloud.consul.discovery.acl-token=ab45ef9a-4f2b-0a8a-f88b-75f68a656fa7
management.security.enabled=false
3.spring cloud应用服务模板
pom 依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.adleading</groupId>
<artifactId>template-service</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>template-service</name>
<description>模板项目</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
<!-- spring -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<!-- kafka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- consul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-consul-core</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- common -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>jsch</groupId>
<artifactId>jsch</artifactId>
<version>0.1.48</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<!--logback --> <!-- logback日志配置开始 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<!-- 用于自动生成 API 文档 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--MYSQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--pageHelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<!-- 系统监控相关依赖 -->
<!-- 断路器 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<!-- sleuth 服务跟踪 -->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-stream</artifactId>
</dependency>-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- 监控与管理 -->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-hystrix-stream</artifactId>
</dependency>-->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.10.26</version>
</dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>1.9.1</version>
<type>jar</type>
</dependency>
<!-- base64jar -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.60</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<!-- Excel操作 -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.0.3</version>
</dependency>
<!-- AWS客户端协议 -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</dependency>
<!-- 本项目FeignClient -->
<dependency>
<groupId>com.adleading.api</groupId>
<artifactId>template-service-client</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mybatis 插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
<!--使用下边的插件可以跳过测试test中的测试-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
启动类注解:
@EnableFeignClients(basePackages = {"com.adleading.api"})
@EnableCircuitBreaker // 启用断路器支持
@EnableDiscoveryClient
@EnableCaching
@MapperScan("com.adleading.template.dao")
//@ComponentScan(value="com.adleading.template")
@SpringBootApplication
@ServletComponentScan
配置文件:
配置文件 bootstrap.properties
spring.application.name=adleading-template
server.port = 9500
# \u914D\u7F6E\u4E2D\u5FC3
spring.cloud.config.name=${spring.application.name}
spring.cloud.config.profile=dev
spring.cloud.config.discovery.enabled=true
#spring.cloud.config.uri=http://127.0.0.1:8080
spring.cloud.config.discovery.service-id=adleading-config
spring.cloud.config.fail-fast=true
spring.cloud.config.label=master
spring.cloud.config.username=自己定义
spring.cloud.config.password=自己定义
#spring.cloud.consul.enabled=true
spring.cloud.consul.host=localhost
#spring.cloud.consul.host=ip
spring.cloud.consul.port=port
#spring.cloud.consul.discovery.enabled=true
spring.cloud.consul.discovery.hostname=${spring.cloud.client.ipAddress}
spring.cloud.consul.discovery.port=${server.port}
#spring.cloud.consul.discovery.register=false
spring.cloud.consul.discovery.instance-id=${spring.application.name}:${spring.cloud.consul.discovery.hostname}:${spring.cloud.consul.discovery.port}
spring.cloud.consul.discovery.service-name=${spring.application.name}
spring.cloud.consul.discovery.healthCheckUrl=http://${spring.cloud.consul.discovery.hostname}:${server.port}/health
spring.cloud.consul.discovery.healthCheckInterval=5s
spring.cloud.consul.discovery.prefer-ip-address=true
# Consul ACL
#spring.cloud.consul.discovery.acl-token=ab45ef9a-4f2b-0a8a-f88b-75f68a656fa7
# \u8C03\u7528\u94FE\u76D1\u63A7\u7528
spring.sleuth.integration.enabled = false
spring.sleuth.scheduled.enabled=false
spring.sleuth.sampler.percentage = 1.0
spring.sleuth.integration.patterns = ^(?!.*Hystrix).*$
spring.sleuth.scheduled.skipPattern=org.springframework.cloud.netflix.hystrix.stream.HystrixStreamTask
endpoints.health.sensitive = false
management.security.enabled=false
swagger.host = 127.0.0.1:9500
到此1.5.9版本的cloud服务搭建完毕