딥상어동의 딥한 생각

[ubuntu]에서 jupyterlab background 서버 구축하기

by 딥상어동의 딥한생각

주요 내용

ubunutu에서 jupyterlab background server를 구축하는 내용을 다룹니다. ubuntu는 gcp clound vm instance를 이용하여 설치했습니다. 관련된 내용은 아래 글에서 살펴 보실 수 있습니다.

https://gibles-deepmind.tistory.com/116?category=954919 

 

[GCP] VM Instance 생성하기

1. 무료로 시작하기 무료로 시작하기를 클릭해준다. 적당한 걸 클릭해주고 계좌 유형은 귀찮으니, 개인을 선택해준다. 그리고, 이름 및 주소를 적당히 입력. 참고로 우편번호는 시/군/구에 맞게

gibles-deepmind.tistory.com

본 글의 목표는 두 가지 입니다. 

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같은 경우, 공홈에서는 두 가지 방법을 설명해주는데요

https://jupyter-notebook.readthedocs.io/en/stable/public_server.html

저는 후자의 방법을 선택했습니다.

 

그리고, 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

 

[Linux] nohup 세션이 끊겨도 계속 실행되도록 해보자

개요 nohup 명령어는 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어입니다. 기본적으로 터미널에서 세션 로그아웃(logout)이 발생

gracefulprograming.tistory.com

 

위 명령어를 실행하면 아래와 같은 화면이 나옵니다. 

위 글 내용을 참조하자면, 기본적으로 터미널에서 로그아웃 하면 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 

 

[Linux] Python 가상환경 세팅하기 (bdist_wheel 에러 해결)

0. 들어가며 https://gibles-deepmind.tistory.com/116 [GCP] VM Instance 생성하기 1. 무료로 시작하기 무료로 시작하기를 클릭해준다. 적당한 걸 클릭해주고 계좌 유형은 귀찮으니, 개인을 선택해준다. 그리고,..

gibles-deepmind.tistory.com

아나콘다를 사용하지 않으시고 우분투 로컬 파이썬에서 가상환경 세팅후 이용 하실 분들은 위 글을 참고해 보실 수 있을 것 같습니다.

 

 

Jupyterlab에 anaconda 가상환경 추가해주기

ipykernel 설치하기

conda install -c conda-forge ipykernel

아나콘다에 기본적으로 ipykernel이 설치되어 있습니다. 위 명령어는 참고만 해주시면 될 것 같습니다.

 

가상환경 생성해주기

conda create -n 가상환경이름
conda activate 가상환경이름

--------

(오류 발생 시 참고 부탁드립니다.)

아나콘다 버전에 따라서 아래 오류가 발생할 수 있는데요. 

너의 셸은 conda activate를 실행할 수 있도록 구성 되어 있지 않아!

뭐 이런 내용인데 아래 링크를 참조해서 해결했습니다.

https://somjang.tistory.com/entry/Anaconda-CommandNotFoundError-Your-shell-has-not-been-properly-configured-to-use-conda-activate-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

 

[Anaconda] CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. 해결 방법

평소와 같이 아나콘다로 만든 가상환경을 활성화하기 위하여 $ conda activate tensorflow_1_11_p36 위처럼 가상환경 활성화 명령어를 입력하였으나 CommandNotFoundError: Your shell has not been properly con..

somjang.tistory.com

 

아래 명령어로 조져놓으니까 다시는 안깝치더라구요. 참고하시길

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를 클릭해봅니다

잘되네요! 이상입니다! 

블로그의 정보

딥상어동의 딥한생각

딥상어동의 딥한생각

활동하기