KSB 프레임워크를 쉽게 사용하기 위한 KSB 툴박스 1.0 버전 설치 방법을 설명합니다.
Host PC에 KSB 툴박스를 설치하기 위해서 아래와 같은 절차로 설치합니다.
Host PC에 기존 Ubuntu 사용자와 설치환경을 분리하기 위해 아래의 명령으로 csle 계정을 추가 생성합니다.
sudo adduser csle Adding user 'csle' ... Adding new group 'csle' (1001) ... Adding new user 'csle' (1001) with group 'csle' ... Creating home directory '/home/csle' ... Copying files from '/etc/skel' ... 새 UNIX 암호 입력: 새 UNIX 암호 재입력: passwd: password updated successfully Changing the user information for csle Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
/etc/sudoers를 열어 csle 계정에 administrator 권한을 추가합니다.
"경고: 읽기 전용 파일을 고치고 있습니다" 경고는 무시하고 저장하고 나옵니다.
sudo vi /etc/sudoers # User privilege specification root ALL=(ALL:ALL) ALL # 맨 아래줄에 내용을 추가합니다. #includedir /etc/sudoers.d csle ALL=(ALL) NOPASSWD: ALL
docker 컨테이너가 호스트 pc의 네트워크를 동일하게 사용하는 host 모드로 동작하기 위해 docker 컨테이너와 호스트 pc의 호스트네임을 동일하게 합니다.
sudo vi /etc/hostname csle1
PC를 재부팅하여 csle 계정으로 로그인합니다.
Host PC에 Ubuntu 16.04를 처음 설치한 경우 java openjdk 8을 설치합니다. 아래의 내용을 터미널에 복사하여 설정 가능합니다.
sudo apt-get update && \ sudo apt-get -y install openjdk-8-jre && \ sudo apt-get -y install openjdk-8-jdk
터미널을 다시 시작한 후, 아래의 명령으로 java 설치 여부를 확인합니다.
csle@csle1:~$ java -version java version "1.8.0_212" Java(TM) SE Runtime Environment (build 1.8.0_212-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Host PC에 아래의 명령으로 KSB 툴박스 관련 프로그램을 설치합니다. 아래의 내용을 터미널에 복사하여 설정가능합니다.
sudo apt-get update && \ sudo apt-get install -y --no-install-recommends apt-utils curl bc jq && \ sudo apt-get install -y ssh locales wget git vim rsync locales \ filezilla python3-pip && \ sudo apt-get install -y net-tools && \ pip3 install kafka-python
아래의 명령을 수행하여 포트 정보를 2243로 수정하고, root 로그인을 허용합니다.
sudo sed -ri 's/^Port 22/Port 2243/g' /etc/ssh/sshd_config sudo sed -ri \ 's/^PermitRootLogin prohibit-password/PermitRootLogin yes/g' \ /etc/ssh/sshd_config
만약 사용자가 openSSH를 사용한다면, 위의 스크립트이 적용되지 않습니다. 따라서, 직접 port 번호와 PermitRootLogin를 수정합니다.
아래의 명령을 수행하여 ssh_config의 기존 내용을 모두 삭제하고 설정을 추가합니다. 아래의 내용을 터미널에 복사하여 설정가능합니다.
sudo truncate -s0 /etc/ssh/ssh_config echo "Host localhost" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "StrictHostKeyChecking no" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "Host 0.0.0.0" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "StrictHostKeyChecking no" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "Host 127.0.0.1" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "StrictHostKeyChecking no" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "Host csle*" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "StrictHostKeyChecking no" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "UserKnownHostsFile=/dev/null" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "Host master" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "StrictHostKeyChecking no" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null echo "UserKnownHostsFile=/dev/null" \ | sudo tee -a /etc/ssh/ssh_config >/dev/null sudo service ssh restart
Host PC에 docker-ce 프로그램을 설치하기 위해 아래 명령어를 순차적으로 입력합니다. 아래의 내용을 터미널에 복사하여 설정가능합니다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo apt-key add - && \ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \ sudo apt-get update && \ apt-cache policy docker-ce && \ sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu && \ sudo systemctl status docker
sudo apt-get purge -y docker docker-engine docker.io
Docker 명령시 root 권한이 필요합니다. root가 아닌 사용자가 sudo 없이 사용하려면 해당 사용자를 docker 그룹에 추가합니다.
sudo usermod -aG docker csle # 사용자가 로그인 중이라면 다시 로그인 후 권한이 적용됩니다. # 단, 현재 터미널에서만 적용됩니다. sudo su csle PC 재부팅
PC 재부팅을 통해서 sudo 명령없이 docker 명령을 사용할 수 있습니다.
KSB 툴박스의 docker 컨테이너 주소에 쉽게 접근하기 위해 아래와 같이 /etc/hosts 내용을 수정합니다. (host pc의 IP는 192.168.0.5로 가정합니다. 자신의 PC IP에 맞게 설정합니다.)
127.0.0.1 localhost # 아래 주석처리. Hdfs 연동시 문제가 생김. #127.0.1.1 csle1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters # 아래의 내용 추가 192.168.0.5 csle1 master
csle 계정의 bashrc 파일을 업데이트 합니다. 아래의 내용을 터미널에 복사하여 설정가능합니다.
cat <<EOT >> ~/.bashrc export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=\$PATH:\$JAVA_HOME/bin export KSB_HOME=/home/csle/ksb-csle export PYTHONPATH=/home/csle/ksb-csle/pyML/:\$PYTHONPATH export PYTHONPATH=./:/home/csle/ksb-csle/ksblib:\$PYTHONPATH EOT source ~/.bashrc
KSB 툴박스의 웹툴킷을 안정적으로 사용하기 위해서 크롬 브라우저를 설치합니다. 아래의 내용을 터미널에 복사하여 설정가능합니다.
cd && \ wget \ https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt-get update && \ sudo apt-get install -y libxss1 libappindicator1 libindicator7 && \ sudo dpkg -i google-chrome-stable_current_amd64.deb
다운로드 페이지로부터 KSB 툴박스(docker image 별도) 파일을 다운로드합니다.
csle 사용자 계정의 home에 ksb_toolbox_v1.tar.gz 압축을 해제합니다. 결과적으로 /home/csle/ksb-csle 폴더가 생성됩니다.
tar zxvf ksb_toolbox_v1.tar.gz -C /home/csle/
/home/csle/ksb-csle 폴더는 다음의 하위 폴더들로 구성됩니다.
Host PC에서 다음 명령으로 KSB 툴박스 docker image를 docker hub로부터 pull 합니다.
docker pull ksbframework/ksb_toolbox:1.0.1-miniconda3
Host PC에서 다음 명령으로 KSB 툴박스 docker image를 확인합니다.
(참고사항: 2019.05.24일 docker image 버전은 1.0.1 버전이며, 추후 TAG 정보 및 SIZE 정보는 배포 버전에 따라 다를 수 있습니다)
csle@csle1:~/ksb-csle$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ksbframework/ksb_toolbox 1.0.1-miniconda3 1b49af6336c7 7 hours ago 7.54GB
KSB 툴박스 docker 컨테이너의 인증키를 공유하기 위해 ksb-csle/tools 폴더에 있는 .ssh 폴더를 csle 홈에 카피합니다.
cp -r ~/ksb-csle/tools/.ssh/ /home/csle/
authorized_keys를 다른 계정이 읽고 쓸 수 없게 600 mode(소유자만 rw 가능)로 변경합니다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
sudo service ssh restart
KSB 툴박스 docker 컨테이너에서 Host PC의 ksb-csle 폴더를 엑세스 할 수 있도록 폴더 권한을 변경합니다.
sudo chmod 777 -R /home/csle/ksb-csle/
이상으로 KSB 툴박스를 구동하기 위해 필요한 프로그램 설치 및 설정 변경을 완료하였습니다.
KSB 인공지능 프레임워크 실행하기 페이지로 이동하여 KSB 프레임워크를 구동하도록 하겠습니다.