虚拟机CentOS系统安装
VmWare安装Linux镜像
CentOS 最小镜像:
虚拟机IP修改
安装开发常用环境(宝塔面板)
宝塔命令(全部yes):yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
选择要安装的基础组件
修改面板基本配置
取消宝塔面板安全地址登录限制
关闭安全入口:rm -f /www/server/panel/data/admin_path.pl
磁盘扩容参考:https://www.cnblogs.com/willamwang/p/12082465.html
常用组件安装
Docker镜像加速地址
地址1:http://hub-mirror.c.163.com
地址2:https://registry.docker-cn.com
宝塔软件商店:Redis,Memcached,MongoDB,Docker,PM2
Jenkins的Docker版本安装:
// 如果目录没有权限就手动去宿主机给一下
docker run -d -p 18080:8080 --name jenkins -v /home/docker/jenkins_home:/var/jenkins_home -v /home/docker/host_home:/home -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone jenkins/jenkins:lts-centos7-jdk8
Jenkins安装:
下载:http://mirror.xmission.com/jenkins/war-stable/2.235.5/jenkins.war
安装与映射
SonarQube安装(执行即可使用)
默认账号密码:admin/admin
MySQL版本:docker run -d --name sonarqube -p 9090:9000 -p 9092:9092 -e "SONARQUBE_JDBC_USERNAME=[数据库用户名]" -e "SONARQUBE_JDBC_PASSWORD=[数据库密码]" -e "SONARQUBE_JDBC_URL=jdbc:mysql://[IP地址]:3306/[数据库名称]?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" -v/home/docker//sonarqube/data:/opt/sonarqube/data -v/home/docker//sonarqube/extensions:/opt/sonarqube/extensions -v/home/docker/sonarqube/logs:/opt/sonarqube/logs sonarqube:7.1
PostgreSQL版本:docker run -d --name sonarqube -p 9090:9000 -p 9092:9092 -e "SONARQUBE_JDBC_USERNAME=[数据库用户名]" -e "SONARQUBE_JDBC_PASSWORD=[数据库密码]" -e "SONARQUBE_JDBC_URL=jdbc:postgresql://[IP地址]:5432/[数据库名称]" -v /home/docker/sonarqube/conf:/opt/sonarqube/conf -v /home/docker/sonarqube/data:/opt/sonarqube/data -v /home/docker/sonarqube/extensions:/opt/sonarqube/extensions -v /home/docker/sonarqube/logs:/opt/sonarqube/logs sonarqube:9.1.0-community
安装过程中如果提示: max_map_count 数量太低
# 修改系统参数
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p
安装成功后可以访问
生成Token:Security -> Users -> Token
安装汉化包和Java分析插件:
从宿主机复制插件到容器
docker cp /[路径]/[文件名] [容器名称]:/[容器内路径]
安装jenkins配置插件(SonarQube Scanner)
配置Sonar:
配置扫描器地址:
SonarScanner默认配置
sonar.projectKey=${JOB_NAME}
sonar.projectName=${JOB_NAME}
sonar.projectVersion=${BUILD_VERSION}
sonar.language=java
sonar.sourceEncoding=UTF-8
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE
配置参考:https://www.jb51.net/article/196239.htm
如果Sonar安装的FindBug插件,使用Scanner会报错,写在FindBug即可
ElasticSearch安装
docker run --name elasticsearch -e JAVA_OPTS='-Xms512m -Xmx512m' -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0
插件:安装中文分词器(需要和ES的版本保持一致)
# 1.进入容器
docker exec -it 容器名 /bin/bash
# 2.在线下载并安装,注意:版本号要一
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip
# 3.进入到 plugins 目录可以看到IK分词器已经安装成功
WebUI工具(Dejavu)
docker run --name dejavu -p 1358:1358 -d appbaseio/dejavu
安装Kibana
Kibana版本要和ElasticSearch一致
docker run --name kibana -p 5601:5601 --link elasticsearch:elasticsearch -d kibana:7.7.0
修改界面语言为中文:
vi /usr/share/kibana/config/kibana.yml
安装Logstach
Logstash版本要和ElasticSearch一致; 如果有该配置的需求,指定挂载目录,可手动先建立挂在的目录
docker run --name logstash -d -p 5044:5044 -p 9600:9600 --link elasticsearch:elasticsearch -v /home/docker/logstash/config/:/usr/share/logstash/config/ logstash:7.7.0
插件安装:logstash-output-elasticsearch
// 【在bin目录中去执行命令】
./logstash-plugin install logstash-output-elasticsearch
执行配置:center_goods_spu.conf
# 必须写上配置的完整路径,避免配置目录中.conf和.yml文件共存造成异常
./bin/logstash -f /usr/share/logstash/config/center_goods_spu.conf
配置完整实例
input {
# 可以配置多个数据源
jdbc {
# jar包目录必须在目录[ logstash-core/lib/jars ]下
jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.22.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://[IP地址]:3306/cloud_center?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
jdbc_user => "数据库账号"
jdbc_password => "数据库密码"
statement => "SELECT * FROM center_goods_spu WHERE update_time >= :sql_last_value"
jdbc_paging_enabled => "true"
jdbc_page_size => "1000"
schedule => "* * * * *"
# 索引类型
type => "center_goods_spu "
}
jdbc {
# jar包目录必须在目录[ logstash-core/lib/jars ]下
jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.22.jar"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://[IP地址]:3306/cloud_center?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
jdbc_user => "数据库账号"
jdbc_password => "数据库密码"
# 执行的sql 文件路径+名称
statement_filepath => "/home/mysqlSQL/center_goods_category.sql"
jdbc_paging_enabled => "true"
jdbc_page_size => "1000"
schedule => "* * * * *"
# 索引类型
type => "center_goods_spu "
}
}
output {
# 可以配置多个数据源
if [type]=="center_goods_spu" {
elasticsearch {
hosts => ["192.168.0.248:9200"]
index => "center_goods_spu"
document_type => "center_goods_spu"
document_id => "%{id}"
}
if [type]=="center_goods_category" {
elasticsearch {
hosts => ["192.168.0.248:9200"]
index => "center_goods_category"
document_type => "center_goods_category"
document_id => "%{id}"
}
}
stdout {
codec => rubydebug
}
}
处理Logstash链接ES问题
问题:LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError
处理方式:
处理Logstash中“path.data”问题
处理方式:删除目录[/usr/share/logstash/data]中的[.lock]文件
安装Kafka
# 安装配套zookeeper
docker run --name=zookeeper -d -p 2181:2181 --privileged=true wurstmeister/zookeeper
# 安装配套kafka
docker run --name kafka -d -p 9092:9092 --privileged=true -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.248:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.248:9092 -e KAFKA_LISTENERS=PLAINTEXT://:9092 wurstmeister/kafka
# 安装Kafka可视化管理工具
docker run --name kafka-manager -d --link zookeeper:zookeeper --link kafka:kafka -p 9001:9000 --env ZK_HOSTS=zookeeper:2181 sheepkiller/kafka-manager
查看kafka运行日志报错
未完待续。。。
安装skywalking
docker run --name skywalking -d -p 1234:1234 -p 11800:11800 -p 12800:12800 --link elasticsearch:elasticsearch -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server:6.6.0-es7
安装skywalking-ui
docker run --name skywalking-ui -d -p 8899:8080 --link skywalking:skywalking -e SW_OAP_ADDRESS=skywalking:12800 --restart always apache/skywalking-ui:6.6.0
服务启动后效果如下
错误日志查看
服务优化信息图表
下载Agent包
连接:https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz
解压缩:tar -zxvf 压缩文件名.tar.gz
启动服务查看监听
#删除进程
kill -9 $(jps | grep [服务Jar包].jar | awk '{print $1}')
nohup java -Xms256m -Xmx512m -javaagent:/[skywalking apm路径]/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=[服务名] -Dskywalking.collector.backend_service=localhost:11800 -jar /[服务路径]/[服务Jar包].jar > /[服务路径]/[服务Jar包].log 2>&1 &
修改nginx配置
新增一个nginx配置 xxx.conf
server
{
listen 2888;
server_name [服务名];
access_log /[路径]/logs/access.log;
error_log /[路径]/logs/error.log;
location / {
root /[路径]/dist;
index index.html index.htm;
proxy_ssl_session_reuse off;
try_files $uri $uri/ /index.html =404;
}
location /api/ {
proxy_pass http://127.0.0.1:2828/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_session_reuse off;
}
}
拷贝文件目录到远程服务器
scp -r /[本地目录] root@192.168.0.xxx:/[远程目录]
拷贝远程文件目录到本地服务器
scp -r root@192.168.0.xxx:/[远程目录] /[本地目录]
压缩和解压命令
压缩:tar zcf /[路径]/[文件名].tar.gz /[路径]
解压:tar -xzvf /[路径]/[文件名].tar.gz /[路径]
登录到远程服务器
ssh [用户名]@[IP地址]
运行Consul
运行:docker run -d -p 8500:8500 -v /home/consul:/consul/data --name=consul consul:latest agent -server -bootstrap -ui -node=1 -client='0.0.0.0'
配置导出:consul kv export --http-addr=http://[ip地址]:8500 >consul_kv.json
配置导入:consul kv import --http-addr=http://[ip地址]:8500 @consul_kv.json
运行Nacos
docker run --name nacos -p 8848:8848 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-d nacos/nacos-server
Nacos2.x以上版本安装命令如下(改版后增加了新的端口拓展)
docker run --name nacos
-p 7848:7848
-p 8848:8848
-p 9848:9848
-p 9849:9849
--privileged=true
-e JVM_XMX=1024m
-e JVM_XMS=512m
-e MODE=standalone
-e PREFER_HOST_MODE=hostname
-d nacos/nacos-server:v2.1.2
安装RabbitMQ
docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
// 多端口放行和容器挂在的命令版本
docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 1883:1883 -p 61613:61613 -v /home/docker/rabbitmq:/var/lib/rabbitmq rabbitmq:management
// 安装插件,请进入docker容器后台
// 1. 查看所有可以安装的插件
rabbitmq-plugins list
// 2. 启用插件,请挨个执行
rabbitmq-plugins enable [xxx插件名称]
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_stomp
rabbitmq-plugins enable rabbitmq_web_mqtt
rabbitmq-plugins enable rabbitmq_web_stomp
查看安装插件对应的接口
插件下载实例
插件下载地址:https://www.rabbitmq.com/community-plugins.html
找到rabbitmq_delayed_message_exchange下载
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/3.12.10
安装xxl-job-admin
docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&useSSL=false --spring.datasource.username=root --spring.datasource.password=root --xxl.admin.login=false" -p 9080:8080 --name xxl-job-admin -d xuxueli/xxl-job-admin:2.2.0
安装ZipKin
docker run --name zipkin -d -p 9411:9411 openzipkin/zipkin
安装Sentinel
docker run --name sentinel -d -p 8858:8858 -p 8719:8719 bladex/sentinel-dashboard
安装Zookeeper
docker run -d --name zookeeper-server -p 2181:2181 -e TZ="Asia/Shanghai" -e ALLOW_ANONYMOUS_LOGIN=yes -v /home/docker/zookeeper/data:/data bitnami/zookeeper:latest
安装Kafka
// 安装kafka必须安装zookeeper;独立网段,不对外开放zookeeper端口
// app-bridge:网络名称 --driver :网络类型为bridge
docker network create app-bridge --driver bridge
// 安装zookeeper; 有时候使用新建的网络有问题,可选择使用
docker run -d --name zookeeper-server -p 2181:2181 [--network app-bridge] -e TZ="Asia/Shanghai" -e ALLOW_ANONYMOUS_LOGIN=yes -v /home/docker/zookeeper/data:/data bitnami/zookeeper:latest
// 安装kafka; 链接zookeeper的时候可以使用容器名称; 监听端口IP配置宿主机内网IP
docker run -d --name kafka-server -p 9092:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ZOOKEEPER_CONNECT=[172.17.0.3/zookeeper-server]:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://[服务器内网IP]:9092 -v /home/docker/kafka:/kafka bitnami/kafka:latest
安装Kafka可视化工具
···
// 默认账号密码:admin/admin
docker run -d --name kafka-map -p 18080:8080 -v /home/docker/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin dushixiang/kafka-map:latest
···
安装MINIO
docker run -p 9000:9000 -p 9001:9001 --name minio -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin123456" -v /home/docker/minio/data:/data -v /home/docker/minio/config:/root/.minio -v /etc/localtime:/etc/localtime minio/minio server /data --console-address ":9001"
安装JumpServer堡垒机
-- 生成服务器秘钥
[root@xxxxx ~]# if [ "$SECRET_KEY" = "" ]; then SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; echo $SECRET_KEY; else echo $SECRET_KEY; fi
[root@xxxxx ~]# if [ "$BOOTSTRAP_TOKEN" = "" ]; then BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; echo $BOOTSTRAP_TOKEN; else echo $BOOTSTRAP_TOKEN; fi
-- Docker安装堡垒机
docker run -d --name=jumpserver
-v /home/docker/jump_server_home/data:/opt/jumpserver/data
-v /home/docker/jump_server_home/koko:/opt/koko/data
-v /home/docker/jump_server_home/lion:/opt/lion/data
-p 8000:80
-p 2222:2222
-e SECRET_KEY=$SECRET_KEY
-e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN
-e DB_HOST=【数据库IP】
-e DB_PORT=3306
-e DB_USER=【数据库用户】
-e DB_PASSWORD="【数据库密码】"
-e DB_NAME=【数据库名称】
-e REDIS_HOST=【Redis IP】
-e REDIS_PORT=6379
-e REDIS_PASSWORD="xckj1234."
jumpserver/jms_all:v2.5.0
安装完成后效果如下
Docker常规操作
容器中目录授权
# Root账号进入container
docker exec -it --user root [容器名称] /bin/bash
chmod 777 /[需授权目录]