Ubuntu配置基本环境以及docker安装基本中间件

提示:ip地址请改为自己的本地ip

为了安全性,建议都给一些中间件设置密码(本文也会教大家如何设置密码)

安装vim

shell 复制代码
sudo apt install vim

此处如果安装失败,apt要换源。

安装docker

docker版本为24.0.2

首先,更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源:

text 复制代码
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

使用下面的 curl 导入源仓库的 GPG key:

text 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

将 Docker APT 软件源添加到你的系统:

text 复制代码
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

现在,Docker 软件源被启用了,你可以安装软件源中任何可用的 Docker 版本。

想要安装 Docker 最新版本,运行下面的命令。如果你想安装指定版本,跳过这个步骤,并且跳到下一步。

text 复制代码
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

一旦安装完成,Docker 服务将会自动启动。你可以输入下面的命令,验证它:

text 复制代码
sudo systemctl status docker

输出将会类似下面这样:

text 复制代码
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2020-05-21 14:47:34 UTC; 42s ago
...

当一个新的 Docker 发布时,你可以使用标准的sudo apt update && sudo apt upgrade流程来升级 Docker 软件包。

如果你想阻止 Docker 自动更新,锁住它的版本:

text 复制代码
sudo apt-mark hold docker-ce

默认情况下,只有 root 或者 有 sudo 权限的用户可以执行 Docker 命令。

想要以非 root 用户执行 Docker 命令,你需要将你的用户添加到 Docker 用户组,该用户组在 Docker CE 软件包安装过程中被创建。想要这么做,输入:

text 复制代码
sudo usermod -aG docker $USER

$USER是一个环境变量,代表当前用户名。

登出,并且重新登录,以便用户组会员信息刷新。

想要验证 Docker 是否已经成功被安装,你可以执行docker命令,前面不需要加`sudo, 我们将会运行一个测试容器:

text 复制代码
docker container run hello-world

如果本地没有该镜像,这个命令将会下载测试镜像,在容器中运行它,打印出 "Hello from Docker",并且退出。

安装mysql

mysql版本为8.0.35

shell 复制代码
docker search mysql
docker pull mysql:8.0 #拉取指定版本容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql:8.0

为了暴露端口以便连接数据库,需要开放端口权限:

shell 复制代码
sudo iptables-save 
sudo apt-get install iptables
sudo apt-get install iptables-persistent
sudo ufw status  #查看防火墙状态,如果是inactive即可

安装Redis

redis版本为7.2.3

创建文件夹存放redis配置文件以及以后的容器的配置文件,路径:/opt/app/

shell 复制代码
docker search redis
docker pull redis 

docker run --name redis -p 6379:6379 \
-v /opt/app/redis/redis.conf:/etc/redis/redis.conf \
-v /opt/app/redis/data:/data \
-d --restart=always redis redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass "password123"
复制代码
说明:
--name redis 【容器名】
-p 6379:6379 【映射端口】
-v /usr/local/app/redis/redis.conf:/etc/redis/redis.conf 【conf文件挂载目录】
-v /usr/local/app/redis/data:/data 【data挂载目录】
-d redis:5.0 【后台运行镜像】
--restart=always 【docker重启后自动启动镜像】
redis-server /etc/redis/redis.conf 【在容器执行redis-server启动命令,执行conf文件】
--appendonly yes 【持久化】
--requirepass "root" 【设置密码】

安装nginx

nginx配置文件路径:/opt/app/nginx/conf/nginx.conf

配置好nginx.conf

shell 复制代码
user  root;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {

    include  /etc/nginx/mime.types;

    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    #sendfile  on;

    #tcp_nopush  on;
 
    keepalive_timeout  65;
 
    autoindex  on;
    
    gzip  on;
 
    client_max_body_size 100M;
 
    client_header_buffer_size  128k;

    large_client_header_buffers  4  128k;

    include  /etc/nginx/conf.d/*.conf;
}

ps:为了以后方便,将app文件夹放开权限。sudo chmod 777 * -R

将 default.conf 配置文件放在 /nginx/conf/conf.d 下

复制代码
server {

    listen  80;

    server_name  localhost;

    charset koi8-r;

    access_log  /var/log/nginx/access.log  main;

    location / {
        root  /usr/share/nginx/html;
        index  index.html;
    }

    error_page  500 502 503 504  /50x.html;

    location = /50x.html {
        root  /usr/share/nginx/html;
    }

}

在nginx目录创建html文件夹,vim index.html

html 复制代码
<html>
<h1>Nginx!!!</h1>
</html>

注意:需要指定nginx编码格式为utf-8,否则可能中文会乱码,配置文件案例:

conf 复制代码
    server {
        listen 80;
        set $root F:/Develop/nginx-1.14.0/html;
        root $root; 
	server_name  localhost;
        access_log  logs/host.access.log  main;
        index index.html index.php;
        #设置字符集
        charset utf-8;
 
        location / {
            root html;
            index index.html index.htm;
            charset utf-8;
        }
    }   

通过命令启动容器

shell 复制代码
docker pull nginx

docker run \
    --name nginx \
    -d -p 80:80 \
    -v /opt/app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /opt/app/nginx/conf/conf.d:/etc/nginx/conf.d \
    -v /opt/app/nginx/html:/usr/share/nginx/html \
    -v /opt/app/nginx/log:/var/log/nginx \
    nginx

安装nacos

nacos版本为2.3.0

在/opt/app/nacos新建logs和conf文件夹。

shell 复制代码
docker pull nacos/nacos-server
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server

#复制文件
docker cp nacos:/home/nacos/logs/ /opt/app/nacos/
docker cp nacos:/home/nacos/conf/ /opt/app/nacos/

#然后先删除容器
docker rm -f nacos
#这一步启动nacos是为了将nacos里面的文件拷贝出到挂载目录中,这样我们就可以直接修改挂载目录中文件来映射到容器里面去了

新建nacos数据库(字符集:utf8mb4),导入nacos所需的表:

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,
  `encrypted_data_key` text NOT NULL COMMENT '秘钥',
  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 '租户字段',
  `encrypted_data_key` text NOT NULL 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 '租户字段',
  `encrypted_data_key` text NOT NULL 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');

修改application.properties配置文件:

properties 复制代码
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:ip}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST:ip}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user=${MYSQL_SERVICE_USER:root}
db.password=${MYSQL_SERVICE_PASSWORD:password}
## DB connection pool settings
db.pool.config.connectionTimeout=${DB_POOL_CONNECTION_TIMEOUT:30000}
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:需要配置token 这样nacos需要登录密码
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:example}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:example}
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.console.ui.enabled=true
nacos.core.param.check.enabled=true
##新增两行
nacos.core.auth.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false

重新运行容器

复制代码
docker run -d \
-e MODE=standalone \
-p 8848:8848 \
-v /opt/app/nacos/conf:/home/nacos/conf \
-v /opt/app/nacos/logs:/home/nacos/logs \
-v /opt/app/nacos/data:/home/nacos/data \
--name nacos \
--restart=always \
nacos/nacos-server

访问8848端口,登录(nacos/nacos)后记得修改密码。

安装RabbitMQ

rabbitmq版本:

挂载目录:/opt/app/rabbitmq

复制代码
docker pull rabbitmq
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v /opt/app/rabbitmq:/var/lib/rabbitmq rabbitmq

执行此命令,开启web端界面

复制代码
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management

现在可以通过访问http://linuxip:15672,访问web界面,这里的用户名和密码默认都是guest

我们需要修改默认用户guest的密码

shell 复制代码
docker exec -it  82a6493c6c77 bash
# 查看所有用户
rabbitmqctl list_users
# 改guest用户的密码
rabbitmqctl change_password guest 'password'

安装elasticsearch

Elasticsearch 版本为8.6.0

因为需要部署kibana容器,因此需要让es和kibana容器互联。

sql 复制代码
docker network create es-net

安装:

cobol 复制代码
docker pull elasticsearch:8.6.0

创建挂载点目录:

复制代码
mkdir -p /opt/app/elasticsearch/data /opt/app/elasticsearch/config /opt/app/elasticsearch/plugins

部署单点es,创建es容器

复制代码
docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /opt/app/elasticsearch/data:/usr/share/elasticsearch/data \
-v /opt/app/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.6.0

编写elasticsearch.yml

shell 复制代码
docker exec -it es /bin/bash
cd config
echo 'xpack.security.enabled: false' >> elasticsearch.yml
#查看一下是否已经添加成功
cat elasticsearch.yml

docker restart es

注意:文中echo 'xpack.security.enabled: false' >> elasticsearch.yml的指令,执行这条指令后,会在elasticsearch.yml下面增加xpack.security.enabled: false,而不是修改文件内的xpack.security.enabled的值;建议把容器内的elasticsearch.yml复制出来修改后再放入容器内。但是我没有安装编辑器所以只能这样。

访问ip:9200

安装kibana

kibana版本为8.6.0

shell 复制代码
docker pull kibana:8.6.0

创建挂载点目录:

复制代码
mkdir -p /opt/app/kibana/config /opt/app/kibana/data

部署kibana,创建kibana容器

复制代码
docker run -d \
--restart=always \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
kibana:8.6.0

-v /opt/app/kibana/config:/usr/share/kibana/config \

测试kibana是否安装成功:http://ip:5601

给kibana设置密码。进入容器config目录下找到kibana.yml

shell 复制代码
docker cp kibana:/usr/share/kibana/config  /opt/app/kibana

echo '' >> kibana.yml
echo 'elasticsearch.username: "elastic"' >> kibana.yml
echo 'elasticsearch.password: "password"' >> kibana.yml
# 添加以下内容
elasticsearch.username: "elastic"
elasticsearch.password: "密码"

安装IK分词器

链接安装
复制代码
docker exec -it es /bin/bash

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.6.0/elasticsearch-analysis-ik-8.6.0.zip

注意:安装IK分词器的版本,必须和Elasticsearch的版本一致, 上文安装的是Elasticsearch 8.6.0的,所以接下来安装的IK分词器版本是8.6.0。如果需要安装其他版本的IK分词器,需要把版本号修改即可!

离线安装

将下载好的ik分词器的压缩包在本地解压,然后将文件夹拖到/opt/app/elasticsearch/plugins

复制代码
# 重启容器
docker restart es
# 查看es日志
docker logs -f es

扩展词词典&停用词词典

打开IK分词器config目录,在IKAnalyzer.cfg.xml配置文件内容添加:

xml 复制代码
<?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">ext.dic</entry>
        <!--用户可以在这里配置自己的扩展停止词字典  *** 添加停用词词典-->
        <entry key="ext_stopwords">stopword.dic</entry>
</properties>

在config目录下新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改

properties 复制代码
奥利给

在 stopword.dic 添加停用词。

然后重启容器

复制代码
docker restart es
# 查看 日志
docker logs -f elasticsearch

查看日志中是否已经加载了相关配置文件。或者打开可视化界面执行:

复制代码
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "奥力给大叔"
}

观察返回结果"奥利给"没有被拆分即为成功!

安装Java8环境

更新软件包列表:

bash 复制代码
sudo apt-get update

安装openjdk-8-jdk:

bash 复制代码
sudo apt-get install openjdk-8-jdk

查看java版本,看看是否安装成功:

bash 复制代码
java -version

跑java项目:

java 复制代码
java -jar demo-java-0.0.1-SNAPSHOT.jar

如果我们想在后台跑java项目,我们可以使用如下命令:

复制代码
nohup java \
-Djava.rmi.server.hostname=ip \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Xms500m -Xmx500m \
-jar demo-java-0.0.1-SNAPSHOT.jar >myDemo.log 2>&1 &

注:-jar demo-java-0.0.1-SNAPSHOT.jar >myDemo.log 2>&1 & 是将日志输出到myDemo.log文件中(自动创建),前面几个命令是允许jmxremote远程访问java项目,我们可以在本地通过jconsole(打开命令控制台直接输入jconsole即可)连接到java项目(端口号是命令里写的port,此处是1099)。

输入jps,可以查看所有java项目运行的pid,我们可以通过kill -9 [项目的pid]来关闭项目

可以在linux系统中执行top来显示占用资源的进程排行。

通过top -p [进程pid] -H 来打印出进程中的线程占用资源的排行。

相关推荐
计算机小手27 分钟前
Docker 部署 weserv-images:打造非侵入式图片处理中间件
图像处理·经验分享·docker·中间件
敬往事一杯酒哈40 分钟前
Ubuntu 20.04 安装Anacada
linux·运维·ubuntu
oMcLin44 分钟前
如何在Ubuntu 22.04 LTS上优化PostgreSQL 14集群,提升大数据查询的响应速度与稳定性?
大数据·ubuntu·postgresql
陈让然1 小时前
VS Code新版本无法连接WSL ubuntu18.04
linux·运维·ubuntu
知识分享小能手1 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04中的人工智能—— 知识点详解 (25)
人工智能·学习·ubuntu
可爱又迷人的反派角色“yang”1 小时前
k8s(五)
linux·运维·docker·云原生·容器·kubernetes
oMcLin1 小时前
如何在Ubuntu 22.10上通过配置K3s轻量级Kubernetes集群,提升边缘计算环境的资源管理能力?
ubuntu·kubernetes·边缘计算
Bin Watson2 小时前
Ubuntu安装Docker记录(基于阿里云)
ubuntu·阿里云·docker
洛克大航海2 小时前
Python 在系统 Windows 和 Ubuntu 中创建虚拟环境
windows·python·ubuntu·虚拟环境
__雨夜星辰__2 小时前
VScode免密远程连接到Ubuntu(VMware17环境)虚拟机
ide·vscode·ubuntu