環(huán)境
????系統(tǒng): CentOS 7
????IP: 192.168.244.144
????關(guān)閉 selinux 和防火墻
? ??# CentOS 7
????????$ setenforce 0? # 可以設(shè)置配置文件永久關(guān)閉
????????$ systemctl stop iptables.service
????????$ systemctl stop firewalld.service
????????# 修改字符集霞怀,否則可能報(bào) input/output error的問(wèn)題役耕,因?yàn)槿罩纠锎蛴×酥形?/p>
????????$ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
????????$ export LC_ALL=zh_CN.UTF-8
????????$ echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
????# CentOS6
????????$ setenforce 0
????????$ service iptables stop????
????????# 修改字符集,否則可能報(bào) input/output error的問(wèn)題,因?yàn)槿罩纠锎蛴×酥形?/p>
????????$ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
????????$ export LC_ALL=zh_CN.UTF-8
????????$ echo 'LANG=zh_CN.UTF-8' > /etc/sysconfig/i18n
一. 準(zhǔn)備 Python3 和 Python 虛擬環(huán)境
1.1 安裝依賴包
? ??$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
????Yum 加速設(shè)置請(qǐng)參考 <http://mirrors.163.com/.help/centos.html>
1.2 編譯安裝
????$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
????$ tar xvf Python-3.6.1.tar.xz? && cd Python-3.6.1
????$ ./configure && make && make install
????# 這里必須執(zhí)行編譯安裝圆恤,否則在安裝 Python 庫(kù)依賴時(shí)會(huì)有麻煩...
1.3 建立 Python 虛擬環(huán)境
? ??因?yàn)?CentOS 6/7 自帶的是 Python2溶其,而 Yum 等工具依賴原來(lái)的 Python,為了不擾亂原來(lái)的環(huán)境我們來(lái)使用 Python 虛擬環(huán)境
? ??$ cd /opt
????$ python3 -m venv py3
????$ source /opt/py3/bin/activate
????# 看到下面的提示符代表成功逝慧,以后運(yùn)行 Jumpserver 都要先運(yùn)行以上 source 命令衬浑,以下所有命令均在該虛擬環(huán)境中運(yùn)行
????(py3) [root@localhost py3]
1.4 自動(dòng)載入 Python 虛擬環(huán)境配置
此項(xiàng)僅為懶癌晚期的人員使用捌浩,防止運(yùn)行 Jumpserver 時(shí)忘記載入 Python 虛擬環(huán)境導(dǎo)致程序無(wú)法運(yùn)行放刨。使用autoenv
????$ cd /opt
????$ git clone git://github.com/kennethreitz/autoenv.git
????$ echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc
????$ source ~/.bashrc
二. 安裝 Jumpserver
2.1 下載或 Clone 項(xiàng)目
????項(xiàng)目提交較多 git clone 時(shí)較大工秩,你可以選擇去 Github 項(xiàng)目頁(yè)面直接下載zip包。
????$ cd /opt/
????$ git clone https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master
????$ echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env? # 進(jìn)入 jumpserver 目錄時(shí)將自動(dòng)載入 python 虛擬環(huán)境
????# 首次進(jìn)入 jumpserver 文件夾會(huì)有提示进统,按 y 即可
????# Are you sure you want to allow this? (y/N) y
2.2 安裝依賴 RPM 包
????$ cd /opt/jumpserver/requirements
????$ yum -y install $(cat rpm_requirements.txt)? # 如果沒(méi)有任何報(bào)錯(cuò)請(qǐng)繼續(xù)
2.3 安裝 Python 庫(kù)依賴
????$ pip install -r requirements.txt? # 不要指定-i參數(shù)助币,因?yàn)殓R像上可能沒(méi)有最新的包,如果沒(méi)有任何報(bào)錯(cuò)請(qǐng)繼續(xù)
????Pip 加速設(shè)置請(qǐng)參考 <https://segmentfault.com/a/1190000011875306>
2.4 安裝 Redis, Jumpserver 使用 Redis 做 cache 和 celery broke
????????$ yum -y install redis
????????$ systemctl start redis
????# centos6
????????$ service redis start
2.5 安裝 MySQL
本教程使用 Mysql 作為數(shù)據(jù)庫(kù)螟碎,如果不使用 Mysql 可以跳過(guò)相關(guān) Mysql 安裝和配置
# centos7
$ yum -y install mariadb mariadb-devel mariadb-server # centos7下安裝的是mariadb
$ systemctl enable mariadb
$ systemctl start mariadb
# centos6$ yum -y install mysql mysql-devel mysql-server
$ chkconfig mysqld on
$ service mysqld start
2.6 創(chuàng)建數(shù)據(jù)庫(kù) Jumpserver 并授權(quán)
$ mysql
> create database jumpserver default charset 'utf8';
> grant all on jumpserver.* to 'jumpserver'@'127.0.0.1' identified by 'somepassword';
> flush privileges;
2.7 修改 Jumpserver 配置文件
$ cd /opt/jumpserver
$ cp config_example.py config.py
$ vi config.py
# 注意對(duì)齊眉菱,不要直接復(fù)制本文檔的內(nèi)容
注意: 配置文件是 Python 格式,不要用 TAB掉分,而要用空格
2.8 生成數(shù)據(jù)庫(kù)表結(jié)構(gòu)和初始化數(shù)據(jù)
????$ cd /opt/jumpserver/utils
????$ bash make_migrations.sh
2.9 運(yùn)行 Jumpserver
????$ cd /opt/jumpserver
????$ ./jms start all? # 后臺(tái)運(yùn)行使用 -d 參數(shù)./jms start all -d
????# 新版本更新了運(yùn)行腳本俭缓,使用方式./jms start|stop|status|restart all? 后臺(tái)運(yùn)行請(qǐng)?zhí)砑?-d 參數(shù)
????運(yùn)行不報(bào)錯(cuò)克伊,請(qǐng)瀏覽器訪問(wèn)?http://192.168.244.144:8080/?
????默認(rèn)賬號(hào): admin 密碼: admin 頁(yè)面顯示不正常先不用處理,跟著教程繼續(xù)操作就行华坦,后面搭建 nginx 代理就可以正常訪問(wèn)了(此處頁(yè)面和服務(wù)還未完全搭建完成愿吹,暫時(shí)頁(yè)面無(wú)法訪問(wèn))
三. 安裝 SSH Server 和 WebSocket Server: Coco
3.1 下載或 Clone 項(xiàng)目
????新開(kāi)一個(gè)終端,連接測(cè)試機(jī)惜姐,別忘了 source /opt/py3/bin/activate
$ cd /opt
$ source /opt/py3/bin/activate
$ git clone https://github.com/jumpserver/coco.git && cd coco && git checkout master
$ echo "source /opt/py3/bin/activate" > /opt/coco/.env? # 進(jìn)入 coco 目錄時(shí)將自動(dòng)載入 python 虛擬環(huán)境
# 首次進(jìn)入 coco 文件夾會(huì)有提示犁跪,按 y 即可
# Are you sure you want to allow this? (y/N) y
3.2 安裝依賴
$ cd /opt/coco/requirements
$ yum -y? install $(cat rpm_requirements.txt)
$ pip install -r requirements.txt -i https://pypi.org/simple
3.3 修改配置文件并運(yùn)行
$ cd /opt/coco
$ cp conf_example.py conf.py? # 如果 coco 與 jumpserver 分開(kāi)部署,請(qǐng)手動(dòng)修改 conf.py
$ vi conf.py # 注意對(duì)齊歹袁,不要直接復(fù)制本文檔的內(nèi)容
注意: 配置文件是 Python 格式坷衍,不要用 TAB,而要用空格
????$ ./cocod start? # 后臺(tái)運(yùn)行使用 -d 參數(shù) ./cocod start -d
????# 新版本更新了運(yùn)行腳本条舔,使用方式./cocod start|stop|status|restart? 后臺(tái)運(yùn)行請(qǐng)?zhí)砑?-d 參數(shù)
????啟動(dòng)成功后去Jumpserver 會(huì)話管理-終端管理(http://192.168.244.144:8080/terminal/terminal/)接受coco的注冊(cè)枫耳,如果頁(yè)面不正常可以等部署完成后再處理(此處頁(yè)面和服務(wù)還未完全搭建完成孟抗,暫時(shí)頁(yè)面無(wú)法訪問(wèn))
四. 安裝 Web Terminal 前端: Luna
Luna 已改為純前端嘉涌,需要 Nginx 來(lái)運(yùn)行訪問(wèn)
訪問(wèn)(https://github.com/jumpserver/luna/releases)下載對(duì)應(yīng)版本的 release 包,直接解壓夸浅,不需要編譯
4.1 解壓 Luna
$ cd /opt
$ wget https://github.com/jumpserver/luna/releases/download/1.3.2/luna.tar.gz
$ tar xvf luna.tar.gz
$ chown -R root:root luna
五. 安裝 Windows 支持組件(如果不需要管理 windows 資產(chǎn)仑最,可以直接跳過(guò)這一步)
????因?yàn)槭謩?dòng)安裝 guacamole 組件比較復(fù)雜,這里提供打包好的 docker 使用, 啟動(dòng) guacamole
????5.1 Docker安裝 (僅針對(duì)CentOS7帆喇,CentOS6安裝Docker相對(duì)比較復(fù)雜)
????$ yum remove docker-latest-logrotate? docker-logrotate? docker-selinux dockdocker-engine$ yum install -y yum-utils? device-mapper-persistent-data? lvm2?
# 添加docker官方源
????$ yum-config-manager? ? --add-repo? ? https://download.docker.com/linux/centos/docker-ce.repo
????$ yum makecache fast
? ? $ yum install docker-ce????
# 國(guó)內(nèi)部分用戶可能無(wú)法連接docker官網(wǎng)提供的源警医,這里提供阿里云的鏡像節(jié)點(diǎn)供測(cè)試使用
????$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
????$ rpm --import http://mirrors.aliyun.com/docker-ce/linux/centos/gpg
????$ yum makecache fast
????$ yum -y install docker-ce
????$ systemctl start docker
????$ systemctl status docker
5.2 啟動(dòng) Guacamole
這里所需要注意的是 guacamole 暴露出來(lái)的端口是 8081,若與主機(jī)上其他端口沖突請(qǐng)自定義
修改下面 docker run 里的 JUMPSERVER_SERVER 參數(shù)坯钦,填上 Jumpserver 的 url 地址, 啟動(dòng)成功后去 Jumpserver 會(huì)話管理-終端管理(http://192.168.244.144:8080/terminal/terminal/)接受[Gua]開(kāi)頭的一個(gè)注冊(cè)预皇,如果頁(yè)面顯示不正常可以等部署完成后再處理
# 注意:這里需要修改下 http://<填寫jumpserver的url地址> 例: http://192.168.244.144, 否則會(huì)出錯(cuò), 帶寬有限, 下載時(shí)間可能有點(diǎn)長(zhǎng)婉刀,可以喝杯咖啡吟温,撩撩對(duì)面的妹子
$ docker run --name jms_guacamole -d \
? -p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key \
? -e JUMPSERVER_KEY_DIR=/config/guacamole/key \
? -e JUMPSERVER_SERVER=http://<填寫jumpserver的url地址>:8080 \
? registry.jumpserver.org/public/guacamole:latest
六. 配置 Nginx 整合各組件
????6.1 安裝 Nginx 根據(jù)喜好選擇安裝方式和版本
????$ yum -y install nginx
????6.2 準(zhǔn)備配置文件 修改 /etc/nginx/nginx.conf
????內(nèi)容如下:
? ??$ vim /etc/nginx/nginx.conf
... 省略
# 把默認(rèn)server配置塊改成這樣
server {
? ? listen 80;? # 代理端口,以后將通過(guò)此端口進(jìn)行訪問(wèn)突颊,不再通過(guò)8080端口
? ? proxy_set_header X-Real-IP $remote_addr;
? ? proxy_set_header Host $host;
? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? location /luna/ {
? ? ? ? try_files $uri / /index.html;
? ? ? ? alias /opt/luna/;
? ? }
? ? location /media/ {
? ? ? ? add_header Content-Encoding gzip;
? ? ? ? root /opt/jumpserver/data/;
? ? }
? ? location /static/ {
? ? ? ? root /opt/jumpserver/data/;
? ? }
? ? location /socket.io/ {
? ? ? ? proxy_pass? ? ? http://localhost:5000/socket.io/;? # 如果coco安裝在別的服務(wù)器鲁豪,請(qǐng)?zhí)顚懰膇p
? ? ? ? proxy_buffering off;
? ? ? ? proxy_http_version 1.1;
? ? ? ? proxy_set_header Upgrade $http_upgrade;
? ? ? ? proxy_set_header Connection "upgrade";
? ? }
? ? location /guacamole/ {
? ? ? ? proxy_pass? ? ? http://localhost:8081/;? # 如果guacamole安裝在別的服務(wù)器,請(qǐng)?zhí)顚懰膇p
? ? ? ? proxy_buffering off;
? ? ? ? proxy_http_version 1.1;
? ? ? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ? proxy_set_header Upgrade $http_upgrade;
? ? ? ? proxy_set_header Connection $http_connection;
? ? ? ? access_log off;
? ? ? ? client_max_body_size 100m;? # Windows 文件上傳大小限制
? ? }
? ? location / {
? ? ? ? proxy_pass http://localhost:8080;? # 如果jumpserver安裝在別的服務(wù)器律秃,請(qǐng)?zhí)顚懰膇p
? ? }
}
... 省略
6.3 運(yùn)行 Nginx
nginx -t? # 確保配置沒(méi)有問(wèn)題, 有問(wèn)題請(qǐng)先解決
# CentOS 7
????$ systemctl start nginx
????$ systemctl enable nginx ????
# CentOS 6
????$ service nginx start
????$ chkconfig nginx on
????6.4 開(kāi)始使用 Jumpserver ????檢查應(yīng)用是否已經(jīng)正常運(yùn)行
????$ cd /opt/jumpserver
????$ ./jms status? # 確定jumpserver已經(jīng)運(yùn)行爬橡,如果沒(méi)有運(yùn)行請(qǐng)重新啟動(dòng)jumpserver
????$ cd /opt/coco????
????$ ./cocod status? # 確定jumpserver已經(jīng)運(yùn)行,如果沒(méi)有運(yùn)行請(qǐng)重新啟動(dòng)coco
????# 如果安裝了 Guacamole
????$ docker ps? # 檢查容器是否已經(jīng)正常運(yùn)行棒动,如果沒(méi)有運(yùn)行請(qǐng)重新啟動(dòng)Guacamole
????服務(wù)全部啟動(dòng)后糙申,訪問(wèn)?http://192.168.244.144,訪問(wèn)nginx代理的端口船惨,不要再通過(guò)8080端口訪問(wèn)
????默認(rèn)賬號(hào): admin 密碼: admin
????如果部署過(guò)程中沒(méi)有接受應(yīng)用的注冊(cè)柜裸,需要到Jumpserver 會(huì)話管理-終端管理 接受 Coco Guacamole 等應(yīng)用的注冊(cè)缕陕。
** 測(cè)試連接**