ElasticSearch5.4.3 环境搭建 2017 (1-单节点模式/开发模式)

本文介绍如何在CentOS 6.8上安装并配置Elasticsearch 5.4.3,包括依赖环境搭建、常见启动错误处理及配置优化。

官网说:ElasticSearch-是分布式高可用全文搜索-分析引擎。

官网入门教程:打我

居然还有中文版:再打我

软件环境:

ElasticSearch5.4.3

Centos 6.8

JavaJDK 1.8.0_131

1. 安装

依赖环境JDK1.8以上,官网推荐。

java -version查看版本,版本低的话升级一下,yum升级方式请看这里

升级完成别忘了配置的JAVA_HOME修改一下,/etc/profile里面

cd定位到你要安装的文件夹,我是安装在mnt下的。

下载:

curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.3.tar.gz
等待下载完成,解压

tar -xzvf elasticsearch-5.4.3.tar.gz

cd到elasticsearch-5.4.3/bin下,运行:

./elasticsearch

默认该模式就是单个节点的模式,一般开发用改模式,可以稍微修改一下配置文件在安装目录/conf下。

正常启动后应该是这样的:


上面执行是直接在bin下执行./elasticsearch,默认该方式ctrl+c就退出了是控制台执行方式。可以加好多中参数比如:

/elasticsearch -d -Ecluster.name=test_es -Enode.name=node_115
-d 是代表后台运行不是在控制台跑着,后面-Exxx=xxx是指定的参数,就是conf/elasticsearch.yml中的参数。可直接修改配置文件。另外还可以制定jvm参数

-Xms1g -Xmx1g等,jvm参数配置在conf/jvm.properties里面默认是xms2g xmx2g这个如果你系统内存小的话要改小一点,不然启动报错。


上面的启动完成后,新启动一个命令行,curl localhost:9200看到如下内容:


红色的是节点名字和集群名称,同一个集群内集群名称是一样的,节点名称不同。

接下来就可以ctrl+c退出看一下conf底下的配置文件了,里面的配置单节点时候不需要修改的,但是生产环境就需要修改了,官网说使用该技术至少需要两个节点集群,一个服务器上可以有多个的。但是一般一个服务器一个节点。下一节集群环境在具体说。

2. 启动错误汇总

        1. don't run elasticsearch as root.

elasticsearch 不能使用root用户直接运行bin的可执行脚本,说是出于安全考虑。所以要建立一个用户。

分别执行下面每行命令:

useradd es

passwd es 回车后会提示输入新密码和确认密码,输入完毕回车提示All Authori..Succes..就修改密码成功了。

此时 su es切换到es用户下。执行./elasticsearch即可。

2. WARN:

a> eccomp unavailable ... Elasticsearch warn unable to install syscall filter

bootstrap checks : 启动检查,这个错误其实是个warn警告,不过吧异常信息打出来了。不管他也可以。官网给出的解决方式有两种:

一种: 是这个东西是依靠操作系统,就是给系统安装这个system call filter,就能修复这个问题,反正我不知道咋安装大笑

二种:关闭elasticsearch对这个东西的依赖,官网说这个会有风险不安全吧。关闭方式是在/conf/elasticsearch.yml里面加上bootstrap.system_call_filter: false。

b> file descriptors 数太小

bootstrap checks : 启动检查,linux默认是65535个,但是elasticsearch要求要大于该值,修改/etc/security/limits.conf

soft nofile 65535 改为 65536 (值自己定,可以再大一些)

hard nofile 65535 改为 65536(值自己定,可以再大一些)

c> threads 数太小

linux默认是1024线程,同样修改/etc/security/limits.conf,如果没有下面两行就加上

* soft nporc 2048

* hard nproc 4096

* 是代表任何的,如果只改elasticsearch的,可以把*换成elasticsearch修改完成wq保存退出即可


5. Out of Memory Error (os_linux.cpp:2627), pid=7934, tid=0x00007ff5ad5f5700

这个错误是内存不足引起的,吧jvm启动参数改小一点就可以了,默认的jvm.properties里面是2g.


(以上内容个人摸索,如有不对请打脸


PS D:\ESP_IDF\project-name> idf.py menuconfig Executing action: menuconfig Running cmake in directory D:\ESP_IDF\project-name\build Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=D:\ESP_IDF\espressif\python_env\idf5.4_py3.11_env\Scripts\python.exe -DESP_PLATFORM=1 -DCCACHE_ENABLE=1 D:\ESP_IDF\project-name"... -- ccache will be used for faster recompilation -- git rev-parse returned 'fatal: not a git repository (or any of the parent directories): .git' -- Could not use 'git describe' to determine PROJECT_VER. -- Building ESP-IDF components for target esp32s3 -- Project sdkconfig file D:/ESP_IDF/project-name/sdkconfig -- Compiler supported targets: xtensa-esp-elf -- USING O3 -- App "project-name" version: 1 -- Adding linker script D:/ESP_IDF/project-name/build/esp-idf/esp_system/ld/memory.ld -- Adding linker script D:/ESP_IDF/project-name/build/esp-idf/esp_system/ld/sections.ld.in -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.bt_funcs.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld-- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_master.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_50.ld-- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_smp.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_dtm.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_test.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_scan.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld-- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/soc/esp32s3/ld/esp32s3.peripherals.ld -- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_cam esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_isp esp_driver_jpeg esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_ppa esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_touch_sens esp_driver_tsens esp_driver_uart esp_driver_usb_serial_jtag esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_security esp_system esp_timer esp_vfs_console esp_wifi espcoredump esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash nvs_sec_provider openthread partition_table perfmon protobuf-c protocomm pthread rt sdmmc soc spi_flash spiffs tcp_transport touch_element ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa -- Component paths: D:/ESP_IDF/v5.4.3/esp-idf/components/app_trace D:/ESP_IDF/v5.4.3/esp-idf/components/app_update D:/ESP_IDF/v5.4.3/esp-idf/components/bootloader D:/ESP_IDF/v5.4.3/esp-idf/components/bootloader_support D:/ESP_IDF/v5.4.3/esp-idf/components/bt D:/ESP_IDF/v5.4.3/esp-idf/components/cmock D:/ESP_IDF/v5.4.3/esp-idf/components/console D:/ESP_IDF/v5.4.3/esp-idf/components/cxx D:/ESP_IDF/v5.4.3/esp-idf/components/driver D:/ESP_IDF/v5.4.3/esp-idf/components/efuse D:/ESP_IDF/v5.4.3/esp-idf/components/esp-tls D:/ESP_IDF/v5.4.3/esp-idf/components/esp_adc D:/ESP_IDF/v5.4.3/esp-idf/components/esp_app_format D:/ESP_IDF/v5.4.3/esp-idf/components/esp_bootloader_format D:/ESP_IDF/v5.4.3/esp-idf/components/esp_coex D:/ESP_IDF/v5.4.3/esp-idf/components/esp_common D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_ana_cmpr D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_cam D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_dac D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_gpio D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_gptimer D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_i2c D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_i2s D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_isp D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_jpeg D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_ledc D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_mcpwm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_parlio D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_pcnt D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_ppa D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_rmt D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdio D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdmmc D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdspi D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_spi D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_touch_sens D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_tsens D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_uart D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_usb_serial_jtag D:/ESP_IDF/v5.4.3/esp-idf/components/esp_eth D:/ESP_IDF/v5.4.3/esp-idf/components/esp_event D:/ESP_IDF/v5.4.3/esp-idf/components/esp_gdbstub D:/ESP_IDF/v5.4.3/esp-idf/components/esp_hid D:/ESP_IDF/v5.4.3/esp-idf/components/esp_http_client D:/ESP_IDF/v5.4.3/esp-idf/components/esp_http_server D:/ESP_IDF/v5.4.3/esp-idf/components/esp_https_ota D:/ESP_IDF/v5.4.3/esp-idf/components/esp_https_server D:/ESP_IDF/v5.4.3/esp-idf/components/esp_hw_support D:/ESP_IDF/v5.4.3/esp-idf/components/esp_lcd D:/ESP_IDF/v5.4.3/esp-idf/components/esp_local_ctrl D:/ESP_IDF/v5.4.3/esp-idf/components/esp_mm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_netif D:/ESP_IDF/v5.4.3/esp-idf/components/esp_netif_stack D:/ESP_IDF/v5.4.3/esp-idf/components/esp_partition D:/ESP_IDF/v5.4.3/esp-idf/components/esp_phy D:/ESP_IDF/v5.4.3/esp-idf/components/esp_pm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_psram D:/ESP_IDF/v5.4.3/esp-idf/components/esp_ringbuf D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom D:/ESP_IDF/v5.4.3/esp-idf/components/esp_security D:/ESP_IDF/v5.4.3/esp-idf/components/esp_system D:/ESP_IDF/v5.4.3/esp-idf/components/esp_timer D:/ESP_IDF/v5.4.3/esp-idf/components/esp_vfs_console D:/ESP_IDF/v5.4.3/esp-idf/components/esp_wifi D:/ESP_IDF/v5.4.3/esp-idf/components/espcoredump D:/ESP_IDF/v5.4.3/esp-idf/components/esptool_py D:/ESP_IDF/v5.4.3/esp-idf/components/fatfs D:/ESP_IDF/v5.4.3/esp-idf/components/freertos D:/ESP_IDF/v5.4.3/esp-idf/components/hal D:/ESP_IDF/v5.4.3/esp-idf/components/heap D:/ESP_IDF/v5.4.3/esp-idf/components/http_parser D:/ESP_IDF/v5.4.3/esp-idf/components/idf_test D:/ESP_IDF/v5.4.3/esp-idf/components/ieee802154 D:/ESP_IDF/v5.4.3/esp-idf/components/json D:/ES(Top) Espressif IoT Development Framework Configuration Build type ---> Bootloader config ---> Security features ---> Application manager ---> Boot ROM Behavior ---> Serial flasher config ---> Partition Table ---> Compiler options ---> Component config ---> [ ] Make experimental features visible [Space/Enter] Toggle/enter [ESC] Leave menu [S] Save [O] Load [?] Symbol info [/] Jump to symbol [F] Toggle show-help mode [C] Toggle show-name mode [A] Toggle show-all mode [Q] Quit (prompts for save) [D] Save minimal config (advanced)
最新发布
11-28
<think> 我们正在解决两个问题: 1. 执行 `idf.py menuconfig` 时出现 &#39;git rev-parse returned &#39;fatal: not a git repository (or any of the parent directories): .git&#39;&#39; 错误。 2. 理解 ESP-IDF 配置菜单的使用。 首先,第一个错误是因为 ESP-IDF 在构建过程中尝试获取 Git 仓库的版本信息(例如用于生成版本号),但当前项目目录不是一个 Git 仓库(或者没有初始化 Git 仓库)。 解决方案有两种思路: a) 将当前项目初始化为 Git 仓库(如果项目还没有使用版本控制,这是一个好习惯)。 b) 告诉 ESP-IDF 不要尝试获取 Git 版本信息(通过设置环境变量)。 其次,关于 ESP-IDF 配置菜单(menuconfig)的使用,我们将简要介绍其功能和基本操作方法。 下面分步骤说明: ### 步骤 1: 解决 Git 仓库错误 #### 方法 A: 初始化 Git 仓库(推荐) - 进入项目根目录(包含 `CMakeLists.txt` 的目录)。 - 执行以下命令: git init git add . git commit -m "Initial commit" - 这样,项目就成为一个 Git 仓库,`idf.py menuconfig` 就不会再报错。 #### 方法 B: 设置环境变量(如果不想使用 Git) - 在运行 `idf.py` 命令之前,设置环境变量 `IDF_GIT_REV` 为任意值(例如当前日期),以覆盖 Git 版本信息。 - 在 Linux/macOS 中: export IDF_GIT_REV=$(date +%s) idf.py menuconfig - 在 Windows 中(命令提示符): set IDF_GIT_REV=%date% idf.py menuconfig - 或者,在 Windows PowerShell 中: $env:IDF_GIT_REV = Get-Date -Format "yyyyMMdd" idf.py menuconfig 注意:方法 B 只是临时解决方案,每次新打开终端都需要重新设置。如果要永久设置,可以将环境变量添加到系统或用户的环境变量中。 或者,你可以在项目的根目录下创建一个 `version.txt` 文件,内容为自定义版本字符串(例如 `1.0.0`),这样 ESP-IDF 会使用这个文件中的版本而不是 Git 版本。但这种方法需要你手动维护版本号。 ### 步骤 2: 理解 ESP-IDF 配置菜单(menuconfig) `idf.py menuconfig` 是一个基于文本的配置界面(使用 ncurses 库),用于配置 ESP-IDF 项目的各种选项,包括: - 串口设置(如烧录串口、监视器串口) - 分区表配置 - 功能选项(如启用蓝牙、Wi-Fi 等) - 组件配置(如 FreeRTOS 设置、日志级别等) - 内核设置(如 CPU 频率、优化等级等) #### 基本操作: - 上下箭头:移动光标 - 左右箭头:切换底部菜单(Select, Exit, Help, Save, Load) - Enter 键:进入子菜单或选中选项 - 空格键:切换选项状态(如 [*] 表示启用,[ ] 表示禁用) - ? 键:显示当前选项的帮助信息 - / 键:搜索配置项(输入关键字查找配置) - 按两次 Esc 键:返回上一级菜单 配置完成后,选择 "Save" 保存,然后退出。配置信息会保存在项目根目录下的 `sdkconfig` 文件中(该文件不要手动编辑)。 #### 重要配置项: - **Serial flasher config**:设置烧录相关的参数,如串口端口、烧录波特率、Flash 模式、大小和频率等。 - **Partition Table**:选择分区表(内置或自定义),分区表定义了 Flash 的分区布局。 - **Component config**:对各个组件(如 Wi-Fi、蓝牙、文件系统等)进行详细配置。 ### 注意事项: - 如果你在项目中没有看到某些配置项,可能是因为该项目没有包含对应的组件。确保在 `CMakeLists.txt` 中已经添加了相关组件。 - 修改配置后,需要重新编译项目(`idf.py build`)以使更改生效。 ### 示例:设置串口端口和波特率 1. 运行 `idf.py menuconfig` 2. 进入 "Serial flasher config" 3. 设置 "Default serial port"(如 `/dev/ttyUSB0` 或 `COM3`) 4. 设置 "Default baud rate"(如 921600) 5. 保存并退出。 ### 总结 - Git 仓库错误可以通过初始化仓库或设置环境变量解决。 - menuconfig 是配置 ESP-IDF 项目的重要工具,掌握其使用对开发至关重要。 如果按照上述步骤操作后问题仍然存在,请检查 ESP-IDF 环境变量(如 `IDF_PATH`)是否正确设置,并确保使用最新稳定版的 ESP-IDF。 §§相关问题§§ 1. 如何正确设置 ESP-IDF 项目的分区表? 2. 如何在 ESP-IDF 项目中添加自定义组件? 3. ESP-IDF 的 sdkconfig 文件有什么作用? 4. 如何解决 ESP-IDF 编译时的其他常见错误? </think> ### 解决 `idf.py menuconfig` 的 Git 仓库错误及配置菜单使用指南 #### 问题 1: 解决 `git rev-parse` 错误 当执行 `idf.py menuconfig` 时出现 `fatal: not a git repository` 错误,表明 ESP-IDF 在尝试获取 Git 版本信息时失败。以下是解决方案: 1. **初始化 Git 仓库**(推荐) 在项目根目录执行: ```bash git init git add . git commit -m "Initial commit" ``` 这将创建本地 Git 仓库,解决版本查询问题[^1]。 2. **设置版本覆盖变量**(临时方案) 在运行命令前设置环境变量: ```bash # Linux/macOS export IDF_GIT_REV="custom_version" # Windows set IDF_GIT_REV=custom_version idf.py menuconfig ``` 3. **创建伪版本文件** 在项目根目录创建 `version.txt` 文件: ```bash echo "v1.0.0" > version.txt ``` ESP-IDF 会优先使用此文件而非 Git 版本[^1]。 --- #### 问题 2: ESP-IDF 配置菜单使用详解 `menuconfig` 是 ESP-IDF 的交互式配置工具,基于 Kconfig 系统。核心功能区域如下: | 配置区域 | 功能说明 | 关键参数示例 | |----------|----------|--------------| | **Serial Flasher Config** | 烧录设置 | `Default Serial Port`, `Flash Size`, `Flash Mode` | | **Partition Table** | 分区表设置 | `Partition Table` (选择内置或自定义分区表) | | **Component Config** | 组件配置 | Wi-Fi/BT 开关、日志级别、FreeRTOS 设置 | | **Compiler Options** | 编译选项 | 优化等级(-O2)、调试符号、警告级别 | ##### 操作指南: 1. **导航** - 方向键 ↑↓ 移动光标 - →← 切换菜单层级 - `Enter` 进入子菜单 2. **修改参数** - 空格键 切换布尔选项(`[*]` 表示启用- 字符串/数值选项直接编辑后按 `Enter` 3. **保存与退出** - `S` 保存到 `sdkconfig` 文件 - `Q` 退出(自动提示保存) 4. **搜索功能** 按 `/` 输入关键字,如搜索 `Wi-Fi` 配置 ##### 示例:设置串口烧录参数 ```text → Serial Flasher Config → Default Serial Port: /dev/ttyUSB0 → Flash Baud Rate: 921600 → Flash SPI Mode: DIO ``` > 提示:修改分区表需在 `Partition Table` 中选择 `Custom partition table CSV` 并指定文件路径[^1]。 --- #### 注意事项 1. **环境一致性** 确保已激活 ESP-IDF 环境: ```bash source $IDF_PATH/export.sh # Linux/macOS .\$IDF_PATH\export.bat # Windows ``` 2. **权限问题** 在 Linux 下出现设备访问错误时: ```bash sudo usermod -aG dialout $USER # 添加用户组 sudo chmod a+rw /dev/ttyUSB0 # 临时授权 ``` 3. **配置继承** `sdkconfig` 文件优先级: ```mermaid graph TD A[项目根目录/sdkconfig] -->|最高优先级| B[构建] C[IDF全局默认] -->|最低优先级| B ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值