哈士奇发布VM安装CentOS、Docker、Portainer、Nacos以及关联MySQL、Redis、MQ、Minio、Nginx、ES、Kibana以及IK分词【总:VM安装Linux虚拟机】

1、事前安装准备

  • 本机安装的是VMware Workstation Pro 16

网上有可以自行寻找

  • 要安装的是CentOS7虚拟机

CentOS7 镜像文件下载地址

2、配置操作系统虚拟机

1.打开VM16,点击创建新的虚拟机

 2.点击自定义安装完成后点击下一步

 3.默认虚拟机硬件兼容性,继续下一步

  4.安装客户机操作系统,点击稍后安装操作系统,继续下一步

5.选择Linux和CnetOS7 64位,继续下一步

 6.自定义命名虚拟机,这里我命名为CentOS7HASHIQI,位置可以自己选定,这里我选定E:\Users\Asus\Documents\Virtual Machines\CentOS7HASHIQI,点击下一步

7.设定虚拟机的处理器和内存配置,可以按照自己的要求所需进行设定,这里我的选择是处理器数量+1,继续下一步

8.设置虚拟机的内存,我这里设置为2048,继续下一步【当然你可以参照下推荐】

 9.网络类型,我选择NAT类型,继续下一步

 10.选择I/O控制器类型和磁盘类型,我这里选择推荐,继续下一步【两次下一步】

 11.选择磁盘、指定磁盘的容量,创建新的虚拟磁盘,将新的虚拟磁盘进行按需分配,继续下一步

 12.这里我选择最大磁盘大小为30,但是它建议是20,选择将虚拟磁盘拆分成多个文件,继续下一步

 13.指定将磁盘存储在那个物理机磁盘上,可以自己指定,但最好别放在固定磁盘上,虽然会有一定的加速效果,继续下一步

 14.点击完成【如果你有需要,可以自己自定义硬件】

3、安装CentOS7虚拟机

1.点击编辑虚拟机

 2.选择CD/DVD,选择刚刚所下载的CentOS7文件,如果本来以前就有安装过,可以选择下拉选取,如果没有可以选择浏览,去磁盘中寻找所下载的文件

 3.点击开启虚拟机,开始安装了,注意

 4.选择第一个,按下回车键

 5.选择安装语言,我选中文,你随意【英语学不好哈】

 6.软件选择,看你自己要不要选择桌面的,我是直接选择最小安装【如果你要选择桌面的话,请按照图6.1来】,如果你是想要桌面版的就请往下翻翻,翻到第15点的时候

 图6.1

 7.选择【安装位置】,点击安装位置之后,选择【我要配置分区】,点击【完成】

 8.点击【完成】之后,会进入到手动分区界面,点击【点这里自动创建他们】,按需分配大小,点击【完成】之后,会显示第二张图的样子,点击【接收更改】后,回到安装信息摘要

 

 9.其他先不用动,后面会进行相关配置,点击开始安装

 10.安装过程中,需要进行Root账号密码的设置,这里我设置的是123---(懂得都懂)

 11.设置完成之后等待安装,安装成功后如下图,点击【重启】

 12.选择第一个,按回车键

 13.因为我是最小安装的界面,所以只要输入root账户和密码就可以了,最小安装到这就结束了第三步的【安装CentOS7虚拟机】的操作了,等下还要进行第四步的【网络设置】

14.如果是选择桌面版,那么应该还会出现一个初始设置,点击接收许可证,然后点击完成配置,如果在安装过程中没有创建任何用户,那么到了后面在启动系统的时候就会有一个引导创建过程,创建完用户就可以登录,桌面版打开终端是在桌面上用鼠标右键,最后一行有写着打开终端

15.如果你要选择桌面版,那就如下所示,然后点击开始安装,安装完成后,同样点击重启

 16.点击LICENSING,接收许可证

如果这里没有创建用户,后面会有一个引导创建用户过程,同样点击完成配置 

17.完成配置后,会进入到桌面,随后弹出引导界面,选择汉语,点击前进

 点击前进后,默认继续前进

 18.我选择关闭隐私后继续前进

 19.选择时区,在搜索框中输入【shanghai或者shang】即可出现选项【上海,上海,中国】,选择完毕后,继续前进

 20.我直接跳过,或者你也可以选择连接自己的在线账号

 21.设置自己的用户名,这里我设置我的用户名为【bomei】,点击前进后是设置该用户的密码

 这里我不会告诉你我设置的密码是【hashiqi20】,点击前进

 22.点击前进后,会出现一个界面,直接叉掉,然后就进入到了桌面

 23.这里鼠标右键桌面即可出现如下,这就是打开终端了,到这里桌面版安装CentOS7也就结束了,但也是要通过第四步【网络设置】,不然此时虚拟机是无法访问到网页的,网页会显示图23.1所示

 图23.1

 所以接下来就是网络的配置了,其实也不是很需要选择桌面安装,因为后面可以选择向FinalShell、XShell、SecureCRT进行连接VMware中的虚拟机~

4、网络配置

1.点击【编辑】,接下来点击【虚拟网络编辑器】

 2.弹出此界面

 3.这里要更改设置,所以要使用管理员身份才能进行访问网络配置,所以点击带有盾牌图形的更改设置

 4.选择第三个VMnet8{名称},NAT模式{类型},NAT模式{外部连接}

 5.记录下来红框的东西,后面要通过这些进行配置

 6.点击确定,点击确定,进入到终端,我是切换回root用户,以免碰上权限问题

cd /etc/sysconfig/network-scripts/

vim ifcfg-ens33

7.进入到这个文件后,进行修改内容,自己进行比对下,xxx.xxx.xxx为刚才让你保存下来的内容

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPADDR=xxx.xxx.xxx.130
NETMASK=255.255.255.0
GATEWAY=xxx.xxx.xxx.2
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8e4fb96a-0298-45fa-a5f1-b368e4c6deff
DEVICE=ens33
ONBOOT=yes

修改完之后

先按ESC键退出编辑,然后输入:wq!,回车键进行退出【这里有!是因为我用的是root进行操作】
service network restart

如果不行,那么请你再手动添加一个

 这样子就配置完了

5、接下来是为了微服务准备的

直接看第六步

6、在CentOS7基础上安装Docker容器

1.已经安装CentOS7后,打开终端,我这里是切换到了root用户,不然每一个命令都要在前面加上【sudo】

 2.通过前面就知道我是CentOS7,然后官方建议Linux内核在3.10以上【可能】,所以检查当前的内核版本

我这里的版本是3.10,正好满足要求

3.使用root权限对yum包进行更新,注意这里如果是生产环境还是要慎用~,这里我就不用了哈哈哈

yum -y update
注释:以下两个的区分
yum -y update:升级所有包同时也升级软件和系统内核
yum -y upgrade:只升级所有包,不升级软件和系统内核

 4.如果之前已经安装过的话,可以在此卸载以前的版本,我这里是没有的,所以我就不操作这条命令了

yum remove docker  docker-common docker-selinux docker-engine

 5.注意了,开始安装Docker了,安装需要的软件包,分别为yum-util 提供yum-config-manager功能,另外两个则是devicemapper驱动依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

 出现如下图所示,则代表成功安装了需要的软件包

 6.设置yum源,我一般使用阿里仓库的,以下有两种推荐

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

 7.先查看一下有哪些Docker版本,如果你比较熟练的话,可能就不用事先查看了

 yum list docker-ce --showduplicates | sort -r

 8.选择一个版本进行安装,我这里选择docker-ce-18.03.1.ce,当然你可以选择其他版本

 yum -y install docker-ce-18.03.1.ce

显示如上图则代表安装成功

9.启动Docker并设置开启自动启动

 systemctl start docker 启动Docker
systemctl enable docker 开启开机自启模式

 10.显示版本号

结束Docker的安装了

7、在Docker中进行安装Portainer

1.拉取portainer镜像,当然你可以事先搜索一下有哪些Portainer镜像

搜索镜像:docker search portainer
拉取镜像:docker pull portainer/portainer

 搜索镜像

 拉取镜像

 2.查看镜像是否被拉取成功

docker images 

 3.运行portainer

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name prtainer portainer/portainer

注释:
-d:容器在后台运行;
-p 9000:9000 :宿主机9000端口映射容器中的9000端口(前面的是宿主机端口,后面的是容器端口);
–restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认不会重启;
–restart=always:自动重启该容器;
-v /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
-v portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;
–name prtainer-test : 给容器起名为portainer;

 4.查看portainer是否在运行

docker ps

 5.发现portainer确实已经正在运行,所以我们现在就可以去使用Portainer了,访问地址为:http://ip:9000,ip是指你当前虚拟机的ip,首次访问要创建管理员账号和密码,如下图所示

 创建之后,进入页面,就可以自由发挥了

 这就结束了Docker安装Portainer了

8、在Docker中进行安装MySQL5.7

注意:这里不只是为了单单去安装MySQL5.7,而是为了和后面的nacos进行关联,所以需要搭建好MySQL容器和Nacos容器之间的通信

// 创建自定义网络(用于容器之间的通信 common-network 是网络名称 可改)
docker network create common-network
 
// 查看网络是否存在
docker network ls 

 1.通过docker创建自定义网络

 2.查看网络是否存在,发现已经存在,如下图所示

 3.通过docker去拉取MySQL容器并启动容器【提示:这里的路径有的需要去手动创建 特别是-v后面的一些参数是需要手动去创建和更改的,其中demoPath你可以自己换换,后面可以指定MySQL的版本号,如果不指定就是默认最新版】

docker run -d -p 3306:3306 --name=mysql --restart=always --network common-network  -e TZ=Asia/Shanghai -v /home/demoPath/conf/mysql_conf/my.cnf:/etc/mysql/my.cnf -v /home/demoPath/mysql/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="123456" mysql:版本号


注释:
#设置容器名称  --name=mysql
#设置开机自启  --restart=always
#设置网络(主要保证nacos和Mysql在同一个网络下)  --network common-network
#设置时区  -e TZ=Asia/Shanghai
#数据库配置文件映射(需要手动创建目录)  /home/demoPath/conf/mysql_conf/my.cnf
#数据库数据映射到本机(需要手动创建目录)  -v /home/demoPath/mysql/data/mysql:/var/lib/mysql
#设置数据库密码  -e MYSQL_ROOT_PASSWORD="123456"
#设置拉取的MySQL版本号  mysql:版本号

 这里我要操作的命令行如下

docker run -d -p 3306:3306 --name=mysql --restart=always --network common-network  -e TZ=Asia/Shanghai -v /home/dockerdata/conf/mysql_conf/my.cnf:/etc/mysql/my.cnf -v /home/dockerdata/mysql/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="123456" mysql:5.7

 4.拉取MySQL成功并启动成功后,我们可以通过容器网络去查看一下是否已经注册到了我们定义的网络里面

查看网络: docker network ls
查看网络容器: docker network inspect common-network

 查看网络

 查看网络容器名为common-network,注意注意!!!【记住这里mysql对应的IP,后面会使用到这个IP】

 到此处名为mysql的容器的网络就已经注册到该自定义名为common-network的网络中了,然后此时,我们也可以通过前面安装的portainer进行查看如下图4.1所示,或者直接通过docker的命令行进行查看【docker ps】如下图4.2所示

图4.1

 图4.2

 接下来就是拉取Nacos了,看第九部分

9、在Docker中进行安装Nacos2.0.3

1.因为创建Nacos后,和MySQL进行关联的时候,做测试需要用到数据库的,你们可以在网上搜搜nacos-mysql.sql,这里直接对下面进行粘贴,然后引入到要创建到的数据库上即可

/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info   */
/******************************************/
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

2.这里拉取的意思和上面的MySQL是差不多的【提示:这里的路径有的需要去手动创建 特别是-v后面的一些参数是需要手动去创建和更改的,其中demoPath你可以自己换换,后面可以指定Nacos的版本号,如果不指定就是默认最新版,这里的demoPath你可以换成和MySQL一样的路径名,当然这只是个提议~】

docker  run --name nacos -d -p 8848:8848 --privileged=true --restart=always --network common-network  -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /home/demoPath/mydata/nacos/logs:/home/nacos/logs -v /home/demoPath/mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties nacos/nacos-server:版本号
 
#容器名称  --name nacos
#映射端口  -p 8848:8848 
#容器网络  --network common-network
#nacos模式是单机模式  -e MODE=standalone
#nacos日志打印路径  -v /home/demoPath/mydata/nacos/logs 
#配置文件映射路径  -v /home/demoPath/mydata/nacos/init.d/custom.properties
#设置nacos版本号  nacos/nacos-server:版本号
#有一些命令是和之前MysSQL一样的这里就不多介绍了,减少点量好看不同

 这里我要操作的命令行如下

docker  run --name nacos -d -p 8848:8848 --privileged=true --restart=always --network common-network  -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /home/dockerdata/mydata/nacos/logs:/home/nacos/logs -v /home/dockerdata/mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties nacos/nacos-server:2.0.3

 

等了好久,终于好了

 3.查看nacos和mysql是否产生了关联【是否被注册在了同一个自定义的网络中】

docker network inspect common-network

 4.进入到nacos容器中,对application做一下配置修改

进入nacos容器: docker exec -it nacos bash【或者docker exec -it nacos /bin/bash】
修改配置文件: vim conf/application.properties

注解:其中nacos是容器的名字,当然你可以使用容器的前四位ID,其实进入某容器就是
docker exec -it 容器名/容器ID bash

 进入容器

 修改配置文件前的内容如下

 修改配置文件后的内容如下【有的是要看自己是什么】

 5.修改完成之后按键盘上的【Esc】代表退出编辑,在操作行输入【:wq!】即可退出文件

 6.退出文件后,再次按键盘的【Ctrl+D】或者输入【exit】退出nacos容器,通过docker对nacos容器进行重启

重启nacos容器:docker restart nacos

 7.重启完之后,你要看看你本地之前有没有安装数据库,比如SQLyog或者Navicat,这里我是用本地的Navicat进行远程连接虚拟机中的nacos,下面这个nacos_config就是由最上面nacos刚开始的那个sql脚本

 

 8.接下来就是打开本地浏览器访问【http://ip:8848/nacos/index.html】,里面的ip就是你虚拟机的ip,然后进入页面之后会有一个登录界面,账号和密码都是nacos

 登录成功后如下图所示,我只是点击了菜单栏里的用户列表,能进来代表就成功了

10、以下是本周的一个命令行经历吧,还有一些命令没写上【本周的前几天对虚拟机的了解非常少】

命令行说明
systemctl start docker启动docker服务
docker ps -a查看所有容
docker start 容器ID启动docker里的容器
docker restart 容器ID重启启动容器
使用exit或快捷键(ctrl+D)退出容器
docker exec -it 容器ID或名称 /bin/bash进入容器
systemctl status firewalld虚拟机查看防火墙状态
systemctl stop firewalld虚拟机关闭防火墙
redis-cli -h 127.0.0.1 -p 6379 -a redis密码redis连接测试
docker rmi 镜像ID删除镜像
先进入到nacos中,ping mysql测试nacos与mysql是否接通
alter user 'root'@'localhost' identified by '123456'本机上修改mysql密码
tar -zxvf 要解压的文件解压文件
yum list docker-ce --showduplicates | sort -r查看docker可用版本
yum -y install docker-ce-18.03.1.ce选择版本号安装
docker search 要下载的容器搜索容器
docker pull 容器拉取容器
docker network ls显示docker配置的网络
docker network inspect 网络名查看docker下名为网络名的内容
firewall-cmd --permanent --zone=public --add-port=xxxx/tcp防火墙开放xxxx端口
firewall-cmd --permanent --zone=public --list-ports查看防火墙开放了哪些端口
firewall-cmd --reload重新加载防火墙配置
systemctl status firewalld检查防火墙的状态
find / -name 文件名通过文件名查看文件位置

到这里就先告一段落了

11、在Docker进行安装Redis

拉取redis

docker pull redis:5.0.12

查看是否成功导入依赖

docker images

成功则启动容器

docker run \
-p 6379:6379 \
--name redis \
--restart=always \
-v /xxx/redis/redis.conf:/etc/redis/redis.conf \
-v /xxx/redis/data:/data \
--restart=always \
-d redis:5.0.12 redis-server /etc/redis/redis.conf

12、在Docker中进行安装RabbitMQ

首先,搜索rabbitmq:management镜像

docker search rabbitmq:management

接着,拉取rabbitmq:management镜像

docker pull rabbitmq:management

然后,通过docker查看镜像

docker images

简单启动,rabbitMQ的默认账号密码都是guest

docker run -d -p 5672:6572 -p 15672:15672 --name rabbitmq rabbitmq:management
​
解释:
-d 后台运行
-p 映射窗口
--name 指定rabbitMQ名称

最后,查看mq容器

docker ps

13、在Docker中进行安装Minio

minio是一个免费的对象存储OSS,就比如说阿里云、腾讯、七牛云的OSS。

首先,拉取最新版的minio

docker pull minio/minio

接着,检查镜像是否拉取成功

docker images

然后创建目录进行存放【可以自定义创建】

mkdir -p /home/minio/config
mkdir -p /home/minio/data

再者,创建minio容器

docker run -p 9001:9001 -p 9090:9090 \
     --name minio \
     -d --restart=always \
     -e "MINIO_ACCESS_KEY=minioadmin" \
     -e "MINIO_SECRET_KEY=minioadmin" \
     -v /home/minio/data:/data \
     -v /home/minio/config:/root/.minio \
     minio/minio server \
     /data --console-address ":9090" -address ":9001"
​
解释:
9090端口 :指的是minio的客户端端口
MINIO_ACCESS_KEY :账号
MINIO_SECRET_KEY :密码(账号长度必须大于等于5,密码长度必须大于等于8位)

通过http://自己的服务器ip:9090/login即可访问。

14、Docker安装Nginx

首先随便启动一个nginx实例,只是为了复制出配置,这里不用拉取镜像是因为它会自动拉取镜像。

docker run -p 80:80 --name nginx -d nginx:1.10

将容器中的配置文件中拷贝到当前目录,后面还有个小点

docker container cp nginx:/etc/nginx .

查看是否拷贝成功

在mydata文件的nginx中进行查看,如果成功,那么就继续执行以下

移除nginx容器

docker stop 容器名
docker rm 容器名

修改文件夹名

 mv nginx conf

再次重新创建nginx文件夹并将conf移入其中

mkdir nginx
mv conf nginx/

最后执行以下命令

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10

这样操作通过网页测试即可。

15、在Docker中安装ES

elasticsearch

拉取ES镜像

docker pull elasticsearch:7.4.2

拉取ES的kibana镜像

docker pull kibana:7.4.2

运行容器

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

但是运行之后会报错,因为没有设置访问权限

"Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes",

检查原因

到elasticsearch目录下检查各个文件的访问权限,发现访问权限受限。

解决方法

chmod -R 777 /mydata/elasticsearch/

再次查看权限

elasticsearch目录下使用 ll

再次运行容器

运行后,通过网页进行访问ip:9200,这里的ip是指自己的虚拟机IP,如果出现以下,则代表运行成功。

{
    "name": "c1036f7ef58c",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "CaPEdgP8S_m1sQj7dPnvLg",
    "version": {
        "number": "7.4.2",
        "build_flavor": "default",
        "build_type": "docker",
        "build_hash": "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
        "build_date": "2019-10-28T20:40:44.881551Z",
        "build_snapshot": false,
        "lucene_version": "8.2.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

到这里也就结束了,但是如果要修改es的运行内存,就如下操作。

修改es运行内存

首先移除原先的es容器,原先里面的数据不会丢失。修改上面的-Xmx为512m

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

16、在Docker中安装Kibana

拉取ES的kibana镜像,注意这里的版本要和ES对应

docker pull kibana:7.4.2

运行kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://自己虚拟机的ip:9200 -p 5601:5601 -d kibana:7.4.2

发现启动容器后无法正常运行

网页显示如下

Kibana server is not ready yet

检查问题所在

可以通过日志查看,当然也可以稍等一会,可能是因为启动太慢。

如果还是没有好,则如下

查看防火墙状态,如果防火墙状态为运行中,则关闭防火墙

systemctl stop firewalld.service // 关闭防火墙
systemctl status firewalld.service // 查看防火墙状态

当然如果嫌弃每次启动虚拟机都要关闭防火墙操作,那么可以开放该端口或永久关闭防火墙

systemctl disable firewalld.service

17、在ES中安装IK分词器

先将压缩文件放入es的plugins文件中

wget https://gitee.com/jowell-jiawei/elasticsearch-analysis-ik-7.4.2/blob/master/elasticsearch-analysis-ik-7.4.2.zip

进行解压缩

tar -zxvf elasticsearch-analysis-ik-7.4.2.zip

如果不行,那么就要先在本机中解压到一个文件夹里再放入到第一步的文件夹中。

进入到es容器中

docker exec -it 容器名 /bin/bash

进入到plugins中

cd plugins/

查看这个文件下是否存在该解压后的文件,有那就重启容器,最后进行测试。

如果对ik自带的分词器不满意,可以自定义分词器,分词器里面有个匹配网页路径,这个时候就可以通过nginx【请看14部分】来设置

找到ik文件夹

ik文件夹在之前创建的elasticsearch中。

查看ik里的config文件里的配置

ls

修改IKAnalyzer.cfg.xml文件

vi IKAnalyzer.cfg.xml

这步之前在nginx中进入html文件夹,在html文件夹里面创建一个es文件,在文件中创建一个fenci.txt。在这里面输入一些自己的分词。

这一步完成后,将网页中的分词路径进行复制并粘贴在指定位置。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
        <entry key="ext_dict"></entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <entry key="remote_ext_dict">http://虚拟机地址【80省略】/es/fenci.txt</entry>
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

设置完之后退出编辑即可wq【普通用户】或wq!【管理员】

重启es容器

docker restart 容器名

18、一些命令的补充

systemctl stop NetworkManager临时关闭网络
systemctl disable NetworkManager永久关闭网络管理命令
systemctl start network.service开启网络服务
docker load -i nacos.tar将nacos.tar包进行解压输入流
docker logs -f 容器名查看容器的日志
free -m查看虚拟机内存
wget https://xx.zip外网上传压缩包
systemctl disable firewalld.service永久关闭防火墙
docker stats监控docker各个容器运行状态

19、ifconfig命令找不到

yum search ifconfig
​
yum install net-tools.x86_64

20、配置阿里云镜像加速器

镜像加速器需要登录阿里云进行获取

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

21、如果ifconfig查看没有ens33【但存在】,解决方法

systemctl stop NetworkManager
​
systemctl disable NetworkManager
​
systemctl start network.service

22、将容器加入到某个网络中

docker network connect 命令是用于将一个容器连接到指定的网络的。容器网络是 Docker 提供的一种机制,用于在容器之间建立通信通道。

通过 docker network connect 命令将容器连接到网络后,该容器就能够与同一网络中的其他容器进行通信,彼此之间可以相互发现和交互。这在分布式应用和微服务架构中非常有用,因为容器可以通过使用容器网络来建立内部服务之间的通信通道。

docker network connect <network> <container>

注:nacos和mysql虽然是在同一个网络下,但网络ip会互换有时。

好了,现在先加入这些,后面的集群和主从、分库分表还会继续持续更新。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值