安装Magento 2.4.6日记之三:elasticsearch 篇

安装Magento 2.4.6日记之三:elasticsearch 篇

yum -y install java-1.8.0-openjdk
java -version # 看看安装结果

Docker 的一些基本指令

docker container ls -a # 当前运行的container
docker ps # 当前运行的container
docker container rm cc3f2ff51cab  # 删除container

docker stop a0c59618bf9e   # 停止container

docker container rm cc3f2ff51cab

docker rm a0c59618bf9e  # 删除container

Magento必装插件

步骤

这个是官方的教程

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

 

拉取镜像

docker pull elasticsearch:8.6.2

配置一些参数,不是必须的

# 将docker里的目录挂载到linux的/mydata目录中
# 修改/mydata就可以改掉docker里的
mkdir -p /www/wwwroot/elasticsearch/config
mkdir -p /www/wwwroot/elasticsearch/data

# es可以被远程任何机器访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml

# 递归更改权限,es需要访问
chmod -R 777 /www/wwwroot/elasticsearch/

启动运行

docker run --name es -d \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-e "discovery.type=single-node" \
-e "xpack.security.enabled=false" \
-p 9200:9200 -p 9300:9300 elasticsearch:8.6.2

参数说明:

–name es :docker的名字

-p 9200:9200 -p 9300:9300:为暴露两个端口。9200是发送http请求时向es发起请求的端口,9300是es在分布式集群状态下节点间的通信端口
-e “discovery.type=single-node” :指定es以单节点运行
-e ES_JAVA_OPTS=“-Xms64m -Xmx128m”:此参数很重要,如果不指定该参数,es启动会将虚拟机内存全部占用
————————————————

更多运行的参数

# 9200是用户交互端口 9300是集群心跳端口
# -e指定占用的内存大小,生产时可以设置32G


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

————————————————

 

到这里,es服务应该是已经启动了
可通过 浏览器打开  localhost:9200/ 进行查看, 结果应该是这样

{
  "name" : "cd0ec4703047",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "uiUq00mISLShJekUlTHIiw",
  "version" : {
    "number" : "8.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "2d58d0f136141f03239816a4e360a8d17b6d8f29",
    "build_date" : "2023-02-13T09:35:20.314882762Z",
    "build_snapshot" : false,
    "lucene_version" : "9.4.2",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

复制配置文件(似乎没必要,该配置文件是当前container的)
docker cp es:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

进行跨越配置
1、进入容器
docker exec -it es /bin/bash
2、进行配置
# 显示文件
ls

结果如下:
LICENSE.txt  README.textile  config  lib   modules
NOTICE.txt   bin             data    logs  plugins

# 进入配置文件夹
cd config

# 显示文件
ls

结果如下:
elasticsearch.keystore  ingest-geoip  log4j2.properties  roles.yml  users_roles
elasticsearch.yml       jvm.options   role_mapping.yml   users

以下步骤未经验证,主要是出现
vi command not found
似乎是vim虽然已经安装,但container重不可用

# 修改配置文件
vi elasticsearch.yml
(可以在宝塔下修改,
  • 配置 Elasticsearch :

宝塔面板文件管理打开  /etc/elasticsearch/elasticsearch.yml

修改以下地方并取消注释

cluster.name: my-application

node.name: node-1

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: localhost

http.port: 9200

discovery.seed_hosts: [“localhost”]

cluster.initial_master_nodes: [“node-1”]

)


# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

ElasticSearch专题(九)-Docker简单部署ElasticSearch (betheme.net)


数据持久化

所谓的持久化就是把容器内需要持久保存的数据同步到宿主机上,我这里映射了三个目录:config、logs、plugins

docker cp es:/usr/share/elasticsearch/config /Users/xxx/Document/docker/es
docker cp es:/usr/share/elasticsearch/logs /Users/xxx/Document/docker/es
docker cp es:/usr/share/elasticsearch/plugins /Users/xxx/Document/docker/es

————————————————

 

分享这篇文章