docker搭建es,kibana,nginx 實(shí)現(xiàn)認(rèn)證登錄kibana訪問es

最近搞了一個(gè)阿里云輕量應(yīng)用服務(wù)器,就想搗騰一番。試著用了docker搭建es,kibana,nginx 實(shí)現(xiàn)認(rèn)證登錄kibana,中途遇到一些坑。這里記錄一下,幫助有需要的人。

效果如下:

這里我使用的系統(tǒng)是Centos7!??!

1. 首先要搞定的的是docker

centos 系統(tǒng)中docker必須在內(nèi)核版本高于 3.10的環(huán)境中才能運(yùn)行 ,所以來檢查一下自己的系統(tǒng)是否滿足條件吧。

1.1 執(zhí)行下面的命令(顯示內(nèi)核版本):
uname -r
1.2 安裝docker
yum -y install docker-ce

就是上面一行代碼就可以安裝好docker,使用yum docker的安裝還是比較簡單的,這里的docker-ce其實(shí)是社區(qū)免費(fèi)版,docker也有商業(yè)版,不過要收費(fèi)。

1.3 啟動(dòng)docker
systemctl start docker

docker中的基本命令

2. 然后要搞定的的是es,nginx,kibana鏡像下載

docker安裝elasticsearch也是很方便的,我們可以先用dockersearch命令搜索一下。

docker search elasticsearch


按照名稱下載第一個(gè)就可以了
默認(rèn)是下載最新版的,如果要指定版本,可以直接進(jìn)docker hub
image.png

這里我直接下載最新版的

docker pull elasticsearch

同樣的方式我這里就一起將nginx和kibana一起下載了。

docker pull nginx
docker pull kibana

命令執(zhí)行完。我們就可以通過docker imagesdocker image ls查看下載好的鏡像了。


這里有一點(diǎn)要注意,kibana的版本要和elasticsearch保持一致。

3. 接著要搞定的的是es,nginx,kibana容器運(yùn)行

首先把網(wǎng)絡(luò)創(chuàng)建出來,docker network命令,使用方式如下圖

使用命令創(chuàng)建網(wǎng)絡(luò):
docker network create es-net
然后把容器搞起來,使用如下命令即可:

es:

docker run -d -p 9200:9200  --network es-net --name es docker.id/elasticsearch(或使用鏡像id)

docker run -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -e "discovery.type=single-node" -d -p 9200:9200 -p 9300:9300 --name es elasticsearch

kibana:

docker run -p 5601:5601 --name kibana --network es-net  -e \ 
"elasticsearch.hosts=http://es:9200"  -d docker.id/kibana(獲取鏡像id)

nginx

docker run --name nginx -p 80:80 --network es-net \ 
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ 
-v /home/nginx/conf.d:/etc/nginx/conf.d \ 
-v /home/nginx/www:/usr/share/nginx/html \ 
-d docker.io/nginx

這個(gè)時(shí)候容器就都創(chuàng)建好并且運(yùn)行起來了。
后面只需要進(jìn)入各個(gè)容器中將配置文件改成自己需要的就既可以了。

4. 接著要搞定配置文件

nginx設(shè)置了掛載目錄和配置文件,直接在本地文件系統(tǒng)中/home/nginx/conf/nginx.conf編輯這個(gè)文件就可以。剛開始是沒有這個(gè)文件的,我們需要自己創(chuàng)建。也可以直接復(fù)制nginx容器中的進(jìn)行編輯。


/home/nginx/conf/nginx.conf

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;
    
    gzip on;
    #需要壓縮文件的最小尺寸,單位是B
    gzip_min_length  1000;
    #gzip文件緩存大小
    gzip_buffers     4 8k; # 4和8之間有個(gè)空格的啊
    #gzip壓縮文件格式,以下涵蓋了一般所需的類型
    gzip_types       text/plain application/x-javascript text/css application/xml application/javascript application/json;
    #gzip壓縮等級(jí),數(shù)值越高壓縮得越狠,也越占資源
    gzip_comp_level 3;

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

/home/nginx/conf.d/kibana.conf

server{

listen 80;
server_name  kibana.infomany.cn;

location / {
    # 設(shè)置 auth
    auth_basic "kibana login auth";
    auth_basic_user_file /etc/nginx/conf.d/.htpasswd;

    # 轉(zhuǎn)發(fā)到 kibana
    proxy_pass http://kibana:5601;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

nginx只需要配置上面兩個(gè)就可以了,這樣就可以實(shí)現(xiàn)kibana認(rèn)證登錄才能訪問了。

5. 遇到的坑和要注意的事項(xiàng)

  1. 上面創(chuàng)建容器時(shí)配置了端口映射,但是還是訪問不到的,可能你防火墻限制了


    阿里云防火墻配置圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容