목적 : 기상청으로부터 받아온 대용량의 데이터를 연구실 서버에 저장하고 이를 다뤄야 하는데
일일이 개인 컴퓨터로 넘겨와 처리하기에는 비효율적인지라 서버에 실험환경을 구축하게 되었다.
이론 : 대용량의 데이터를 서버에 저장하고 putty를 이용해 서버에 원격 접속한 뒤, jupyter notebook을 실행하고
내 컴퓨터의 웹 브라우저를 이용해 jupyter notebook에 접속하는 방식이다.
목차
- Conda 설치
- Conda 가상환경 만들기
- Jupyter 설치하기
1. Conda 설치
1-1) Conda 파일 다운
자신의 os, cpu 등을 고려해서 conda의 버전을 선택해야 하는데 아래의 사이트에서 알맞은 버전을 확인하자
https://repo.anaconda.com/archive/
Index of /
Anaconda-2.3.0-Linux-x86.sh 309.6M 2015-07-01 13:35:09 73fdbbb3e38207ed18e5059f71676d18d48fdccbc455a1272eb45a60376cd818
repo.anaconda.com
알맞은 버전을 확인하고 아래와 같은 명령어를 입력하자.
명령어 : wget https://repo.continuum.io/archive/(자신의 아나콘다 버전)
예시 : wget https://repo.continuum.io/archive/Anaconda3-2022.10-Linux-x86_64.sh
(개인적인 문제인 지는 잘 모르겠지만 서버 환경 구축을 진행하면서 올바른 명령어를 입력했음에도
명령어 실행이 안되는 경우가 종종 있었는데, 그럴 경우 한 번 더 실행을 하면 잘 되었다.)
1-2) 파일 실행
wget을 통해 받은 아나콘다 파일을 명령어를 통해 실행한다.
bash Anaconda3-2022.10-Linux-x86_64.sh
(혹시 bash가 안된다면, 대신 sh를 입력해보자. (서버 환경에 따라 다르다고 한다.))
1-3) 환경 설정
아래의 명령어들을 입력하지 않는다면 Conda가 설치되었음에도 불구하고
conda 명령어를 실행할 수 없다.
환경변수를 설정해주는 작업인데
어떤 프로그램이 돌아가게 해주는 실행파일의 경로를 잡아주는걸 환경변수 세팅이라고 한다.
즉, 설치가 되어있는 Anaconda 파일의 경로를 설정해주어 실행될 수 있게끔 해주는 작업이다.
export PATH="~/anaconda3/bin:$PATH"
source ~/.bashrc
위의 코드를 사용하여 환경변수 세팅을 해줄 수 있는데
나의 경우 지속적인 "bashrc not found" 오류가 발생하였다.
이 해결을 위해 구글링등의 작업을 통하여 알아본 결과
exec bash
이 명령어를 먼저 입력하고
위의 export ~ 명령어를 입력하면 정상적으로 실행이 되었다.
(참고로 bashrc 폴더가 없을 수도 있고, 비슷하게 bash_profile과 같은 폴더 등이 존재할 수도 있다.)
shell을 껐다 키고 난 후에 명령어를 다시 입력해야 하는데
Linux 설정으로 shell을 키고 난 후 자동으로 명령어가 실행될 수 있게끔 할 수 있다고 한다.
이 문제는 추후에 다시 해결하도록 하겠다.
1-4) 확인
이 과정까지 실수없이 잘했다면 터미널 창에 conda를 입력해보자
아래와 같은 화면이 나오면 성공한 것이다.
2. Conda 가상환경 만들기
Conda 가상환경을 만들기 위하여 먼저 conda에서 사용이 가능한 파이썬 버전을 확인해보자.
conda search python
이 중에서 원하는 버전을 선택해서 가상환경을 만들자.
명령어 : conda create -n 가상환경이름 python=버전
예시 : conda create -n virtual python=3.10.8
그 후,
conda activate 가상환경이름
conda deactivate
activate와 deactivate를 이용해 가상환경을 활성화, 비활성화 할 수 있다.
3. Jupyter notebook 설치하기
3-1) 가상환경 실행하기
위에서 생성한 가상환경을 conda activate 로 실행시키자.
3-2) Jupyter notebook
실행시킨 가상환경 위에 Jupyter를 깔아보자
pip install jupyter notebook
jupyter notebook을 설치하였으니 가상환경에 kernel을 연결해 주어야한다.
명령어 :python -m ipykernel install --user --name 가상환경이름 --display-name 커널명
예시 : python -m ipykernel install --user --name virtual --display-name kern
나의 가상환경 명은 virtual 이고 커널명은 kern으로 설정해주었다.
kernel을 연결하는 과정에서 나는 'no module named ipykernel' 오류가 발생하였는데
일반적으로 jupyter notebook 패키지를 직접 설치하였다면 ipykernel이 같이 설치된다고 하는데
만약 없는 경우
conda install -C anaconda ipykernel
위의 명령어를 이용해 ipykernel을 설치해주도록 하자
(kernel 설치 및 연결 확인)
kernel이 성공적으로 연결 되었는지 확인하고 싶다면
pip list
jupyter kernelspec list
1. pip list 명령어를 이용해 ipykernel의 설치여부를 확인할 수 있고
2. jupyter kernelspec list를 이용해 kernel이 정상적으로 연결 되었는지 확인할 수 있다.
3-3) jupyter notebook 실행
자, 이제 가상환경 상에서
jupyter notebook
위 명령어를 실행하면 jupyter notebook이 실행되고 shell 상에 url 주소가 뜰텐데
이를 복사해서 웹 브라우저 상에 치고 들어가게 되면
이런 화면이 하나 뜬다.
(ctrl+c 를 이용해 복사를 하려고 하면 jupyter notebook이 종료되기 때문에
복사를 하고 싶다면 shift + ctrl + c를 이용해 복사하도록 하자.
만약 shell에 붙여넣기를 하고 싶다면 마우스 오른쪽 클릭을 하면 붙여넣기를 할 수 있다.)
이 화면에서 jupyter notebook에 접근하기 위해서는
jupyter notebook을 shell 상에서 실행할 때 같이 출력되었던 token 혹은 password를 입력해서 들어갈 수 있지만
매번 달라지는 token 값을 넣기에는 귀찮기 때문에 password를 설정해주도록 하자.
3-4) jupyter notebook 기본 설정
ctrl + c를 통해 jupyter notebook을 종료하도록 하자.
그 후,
jupyter-notebook --generate-config
jupyter notebook의 기본 설정파일을 생성하는 명령어를 이용해 기본 설정파일을 생성하자.
설치가 완료 되었다면 터미널에서 'ipython'을 입력하자.
ipython을 입력하고 나서
위의 명령어들을 입력하면 password를 설정할 수 있는 화면이 뜬다.
password를 설정해주고 나면
알 수 없는 문자열들이 출력되는데, 이를 꼭 복사하여 저장해두자.
exit() 명령어를 통해서 탈출할 수 있다.
※ shell 창에서는 password를 입력하여도 화면에 출력되지 않으니 실수하지 않도록 하자.
위에서 설치한 설정파일을 변경하기 위해
vi 에디터를 이용해서 설정파일을 수정할 것이다.
cd ~/.jupyter
vi jupyter_notebook_config.py
jupyter 폴더로 이동한 후 vi 명령어를 사용해서 config.py 파일로 들어가게 되면
이렇게 시퍼런 색으로 되어있는 창을 볼 수가 있다.
이 파일을 편집하기 위해서는 간단한 vi 에디터 사용법을 알아야 한다.
이는 다음과 같다.
1. 파일에 텍스트를 추가하거나 삭제하기 :
키보드에서 i를 누르면 INSERT 상태로 변경된다. 이 상태에서 지우거나 추가가 가능하다. 편집이 완료 되었으면 esc키를 눌러 다시 명령모드로 진입할 수 있다.
2. 파일에서 특정 문자열 검색 :
명령 상태에서 /(슬래시) 누른 후 원하는 문자열 적고 enter
3. 검색한 문자열이 여러 개 일 때 :
n(소문자)을 누르면 다음 문자열로 넘어감 N(대문자)을 누르면 이전 문자열로 넘어감
4. 파일 저장할 때 :
명령모드에서 : (콜론 : shift + ;) 을 입력 후 wq 입력 > (:wq)
그냥 q를 누르면 저장이 안되고 종료되니 주의할 것
vi 에디터에서 /(슬래쉬)로 다음의 값들을 찾아 주석을 제거하고 값을 채워넣는다.
/ 로 값을 찾은 뒤 enter를 치면 i를 이용해 INSERT 모드로 진입할 수 있다.
c.NotebookApp.allow_origin = '*'
c.NotebookApp.notebook_dir = '/root'
c.NotebookApp.ip = '127.0.0.1'
c.NotebookApp.port = 8888
c.NotebookApp.open_browser = False
notebook_dir 의 경우 이 과정은 노트북 실행 경로를 설정하는 것인데 경로는 사람마다 다를 수 있다.
여기까지 과정을 마쳤다면 :wq 로 저장을 하고 나가자.
3-5) putty 설정 후, jupyter notebook 실행하기
자 이제 거의 다 왔다.
putty로 접속을 하면
이 화면에서 Host Name 에 원하는 서버의 ip를 입력하고
Source port 와 Destination에 각각 값을 넣어주고 Add를 하면 되는데
위에서 port Number를 8888로 할당했기 때문에
Destination에는 localhost:8888 으로 설정해주고
Source port에는 적절히 원하는 포트 넘버를 기입하면 된다.
putty를 실행하고 원격 서버에 접속해 가상 환경에서 jupyter notebook을 실행한 뒤
http://localhost:8000
를 웹 브라우저를 통해 접속하면 password를 입력하고 jupyter notebook에 성공적으로 접속할 수 있다.
서버에 있는 디렉토리에도 접근할 수 있다.
내 컴퓨터가 아닌 원격 서버의 컴퓨터에 접속해 jupyter notebook을 이용하는 방법을 알아보았는데
나도 처음 시도하는 것이기에 많이 헤매면서 결국 성공하였다.
만약 다음에도 이런 일을 시도할 일이 생긴다면 덜 고생하기 위해서
또, 나와 비슷한 처지에 있는 사람들이 조금이라도 덜 고생하기를 바라면서
포스팅을 마무리 하도록 한다.
※ 오타나 지적은 항상 환영합니다.