目前基於一個ES的應用開發接近完成,需要將App部署到線上進行測試。由於在本地開發是用的Docker,所以切換到線上還需要在Linux(ubuntu16LTS)中在安裝一些必要到應用。為了日後方便,於是便有了這個筆記。
預備工作
因為眾所周知的原因,直接實用原廠資源連結去下載應用程式,速度上面會比較慢,所以預先選擇一個速度較快的國內映象以減輕等待過程的痛苦。
以 ubuntu 16.04LTS 在阿里雲的映象,編輯 /etc/apt/sources.list 檔案,註釋掉原來的內容,更換為以下內容:
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
複製程式碼
儲存後,更新快取 sudo apt update
如果是在已經有的系統中安裝ES,最好現將原系統盤備份。後面安裝過程需要修改一些系統引數,萬一改壞了,還能還原。(備份過程略)
安裝 OpenJDK
java -version
複製程式碼
如果已經有了Java環境,跳過這一步。
sudo apt-get update
sudo apt-get install openjdk-8-jdk
java -version
複製程式碼
下載 ElasticSearch 和 Kibana
以當前最新版本為例:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz
# 解壓
tar -vxsf elasticsearch-6.6.0.tar.gz
tar -vxsf kibana-6.6.0-linux-x86_64.tar.gz
複製程式碼
配置/啟動 ES和KB
在兩個應用在config目錄下,均有同名的yml配置檔案。可以配置諸如:資料庫、日誌路徑,服務繫結地址、埠號等資訊。
如果Es服務的繫結地址是本機內部(127.0.0.1),那麼直接可以啟動了。如果是外部可訪問地址(0.0.0.0),那麼需要修改虛擬記憶體。否則會報告虛擬記憶體過小,並終止程式繼續執行。
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
複製程式碼
處理方法: 修改/etc/sysctl.conf檔案,加入
vm.max_map_count=262144
不需要重啟,執行:
sysctl -w vm.max_map_count=262144
ES不允許以root的身份去執行,這樣一旦因配置問起造成安全漏洞,會導致整個伺服器的安全隱患。所以,如果當前是root賬戶,需要建立一個別的賬戶以啟動
# 建立組
groupadd elsearch
# 建立使用者
useradd elsearch –g elsearch –p elsticsearch
# ES的許可權修改,記得還要修改資料庫和日誌目錄
chown –R elsearch:elsearch ./ElasticSearch
複製程式碼
在bin目錄下的同名可執行檔案,便是應用程式的啟動檔案。直接以後臺方式執行即可。
最後,將es和kb的啟動命令加入 rc.local 每次隨伺服器重啟而自動啟動服務。
安全建議
除了配置防火牆,將兩者預設埠 9200和5601放行之外,還需要留意的是ES的API可以根據專案的執行環境制定一個合適的策略。當前專案的搜尋都是通過程式內的業務邏輯,呼叫ES的搜尋API進行,並不需要直接對外。所以繫結的9200埠不需要暴露在公網上。
而Kb服務並不是一直需要,只有在剛剛開始執行或者遇到問題的時候才需要。這個時候可以將KB配置為繫結外部IP,但是可以不啟動這個服務。或者防火牆配置可訪問的5601埠的請求IP為本公司網路IP。