주요 내용
ubunutu에서 jupyterlab background server를 구축하는 내용을 다룹니다. ubuntu는 gcp clound vm instance를 이용하여 설치했습니다. 관련된 내용은 아래 글에서 살펴 보실 수 있습니다.
https://gibles-deepmind.tistory.com/116?category=954919
본 글의 목표는 두 가지 입니다.
1. 어디서든 접속할 수 있는 jupyterlab 서버 구성하기
2. jupyterlab에서 anaconda 가상환경 이용하기
Port개방을 위한 기본 설정
GCP 방화벽
1. 방화벽 규칙 만들기를 클릭해줍니다.
2.대상을 네트워크의 모든 인스턴스로 선택해줍니다.
3.소스 필터 IPv4범위를 0.0.0.0/0으로 지정해줍니다.
4.지정된 프로토콜 및 포트를 입력하고 8888을 입력해줍니다.
8888은 jupyter 서버에서 기본적으로 제공해주는 포트 번호 입니다. 이건 본인 원하시는대로 설정을 하시면 됩니다. 단, 이후 config파일에서 포트 번호를 따로 수정해주셔야 합니다. 저는 귀찮아서 그냥 기본 제공 포트 번호인 8888을 사용했습니다.
이외에 태그명을 지정해라 / 이름을 입력해라 이런 문구가 나올 수 있는데요. 그냥 시키는대로 하시면 됩니다.
VM인스턴스 고정주소예약
진행하는 글도 있고 없는 글도 있어서 저는 그냥 추가했습니다. 어려운 과정은 아닙니다.
1. VPC 네트워크 -> IP 주소로 접속합니다. 여기서 외부 ***IP를 선택***한 후 , 외부 고정 주소 예약을 클릭합니다.
2. VM 인스턴스와 동일 리전을 선택한 후 연결 대상에서 VM인스턴스를 클릭해준다.
반드시, VM인스턴스와 동일한 리전을 선택해주셔야 합니다! 저는 나머지 설정은 그대로 이용했습니다.
여기까지 하시면, 기본적인 세팅은 완료구요. 다음 내용은 shell환경에서 진행하시면 됩니다.
Anaconda설치하기
sudo apt-get update
sudo apt-get upgrade
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
bash Anaconda3-2021.11-Linux-x86_64.sh
sudo apt install python3-pip
위와 같이 anaconda를 ubuntu에 설치해주었습니다. 그리고, 인스턴스를 처음 설치하면 python3는 있으나, pip는 없어서 pip도 설치해줍니다.
conda --version
>> conda command not found
저는 이런 오류가 발생하여 다음과 같이 해결하였습니다.
nano ~/.bashrc
.bashrc 파일 진입 후 path를 추가해줍니다.
export PATH=~/anaconda3/bin:$PATH
그리고, crtl + o -> crtl + x로 나와준다음, 다음 문장을 실행해줍니다.
source ~/.bashrc
그럼 conda --version 명령어가 정상적으로 잘 실행됩니다.
Juptyrer시리즈 설치하기
1. jupyter시리즈를 설치해줍니다.
conda install jupyter notebook
pip install jupyter
conda install -c conda-forge jupyterlab
2.이렇게 설치해 준 후 jupyter notebook config file을 수정합니다.
jupyter notebook --generate-config
nano ~/.jupyter/jupyter_notebook_config.py
3.몇 가지 명령어를 수정해줍니다. 저는 주석 풀기가 귀찮아서 맨 위에 그냥 적었습니다.
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = passwd함수 사용후 나온 hash값을 입력
c.NotebookApp.token = ''
c.IpKernelApp.pylab = 'inline'
password같은 경우, 공홈에서는 두 가지 방법을 설명해주는데요
저는 후자의 방법을 선택했습니다.
그리고, terminal에서 python3를 입력후 아래 명령어를 실행합니다.
from IPython.lib import passwd
passwd()
이후 나온 hash값을 복사해서 c.NotebookApp.password에 복붙해줍니다! 'hash값' 그리고 crtl + o -> crtl + x를 눌러서 나와줍니다.
jupyter lab 서버 환경에서 실행하기
여기까지 하고 아래 명령어를 실행해줍니다.
nohup jupyter lab --ip=0.0.0.0 --port=8888 --no-browser
nohup은 리눅스에서 터미널 세션이 끊기더라도 프로세서가 실행되도록 해주는 명령어 입니다. 조금 더 궁금하신 분들은 아래 명령어를 읽어보시면 좋을 것 같네요.
https://gracefulprograming.tistory.com/128
위 명령어를 실행하면 아래와 같은 화면이 나옵니다.
위 글 내용을 참조하자면, 기본적으로 터미널에서 로그아웃 하면 hub signal이라는 녀석이 터미널에서 실행되던 프로세서들을 종료시키는데 이 hub signal을 무시해라! -> 그래서 터미널에서 로그아웃 해도 실행되도록 해라 라는 내용이 "igonoring"이라는 문구에서 나타나는 것을 알 수 있습니다.
그리고 http://외부IP:8888 을 입력하면 jupyterlab 서버에 접속할 수 있습니다. 접속 후 비밀번호를 입력해줍니다.
그리고, 아래와 같은 화면에서 Notebook아래의 Python3를 클릭해줍니다. 그러면 import pandas as pd가 안되는 기적을 경험하실 수 있는데요....(오잉 아나콘다 설치한거 아니었어?)
당황하지 마시고... condaenv라고 제가 anaconda 가상환경을 추가해두었는데요. 이 아나콘다 환경을 jupyterlab에 또 추가를 해야합니다. 저는, 가상환경을 하나 만들고 그걸 jupyterlab에 추가했습니다.
jupyterlab에서 기본적으로, 우분투 로컬 파이썬 환경을 참조하는 것 같은데 그냥 로컬 파이썬 환경에 패키지 설치해서 사용하실 분들은 뒷 내용은 참고하지 않으셔도 되구요. 만약, 기본 파이썬에서도 가상환경을 세팅해서 사용하실 분들은 아래 내용대로 커널 환경을 추가하셔야 할 것 같습니다.
https://gibles-deepmind.tistory.com/117?category=954919
아나콘다를 사용하지 않으시고 우분투 로컬 파이썬에서 가상환경 세팅후 이용 하실 분들은 위 글을 참고해 보실 수 있을 것 같습니다.
Jupyterlab에 anaconda 가상환경 추가해주기
ipykernel 설치하기
conda install -c conda-forge ipykernel
아나콘다에 기본적으로 ipykernel이 설치되어 있습니다. 위 명령어는 참고만 해주시면 될 것 같습니다.
가상환경 생성해주기
conda create -n 가상환경이름
conda activate 가상환경이름
--------
(오류 발생 시 참고 부탁드립니다.)
아나콘다 버전에 따라서 아래 오류가 발생할 수 있는데요.
너의 셸은 conda activate를 실행할 수 있도록 구성 되어 있지 않아!
뭐 이런 내용인데 아래 링크를 참조해서 해결했습니다.
아래 명령어로 조져놓으니까 다시는 안깝치더라구요. 참고하시길
source ~/anaconda3/etc/profile.d/conda.sh
conda activate 가상환경이름
하하 이러면 가상환경이 실행됩니다.
여기서 이런 명령어를 입력하면
python3 -m ipykernel install --user --name 가상환경이름 --display-name 커널표기이름
python3 -m ipykernel install --user --name dddongminlab --display-name condaenv
인스톨 어쩌고 하는데, 그냥 잘 설치됐다고 생각하시면 될 것 같습니다.
그리고, 다시 nohub어쩌고... 하는 명령어를 실행하고 외부IP:8888을 입력하면
nohup jupyter lab --ip=0.0.0.0 --port=8888 --no-browser
condaenv가 설치되어 있는 것을 확인할 수 있습니다.
그리고 Notebook에서 condaenv를 클릭해봅니다
잘되네요! 이상입니다!
'딥상어동의 딥한 프로그래밍 > 엔지니어링' 카테고리의 다른 글
[Airflow] 데이터 적재 파이프라인 튜토리얼 - 서울시 지하철호선별 역별 승하차 인원 정보 적재하기 (2) | 2022.06.12 |
---|---|
[ubuntu] Mysql 원격 접속 허용후 Python(pd.to_sql)과 연동해보기 (0) | 2022.06.04 |
[Airflow] 리눅스 도커를 이용한 설치 삽질기 (1) | 2022.05.10 |
[Airflow] 설치(pip install) 및 webserver 실행 (0) | 2022.05.08 |
[linux] Python과 crontab을 이용하여 카카오톡 메시지 보내는 배치 실행하기(카카오 API) (2) | 2022.04.10 |
제 블로그에 와주셔서 감사합니다! 다들 오늘 하루도 좋은 일 있으시길~~
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!