Skip to content

Latest commit

 

History

History
459 lines (235 loc) · 15.8 KB

File metadata and controls

459 lines (235 loc) · 15.8 KB

2021.07.19 AWS로 연결해서 Linux (Red Hat기반) 사용

Jupyter Notebook을 모바일, 웹 어느 환경에서나 사용할 수 있게 연결해본다.

From. 서찬웅 강사님


(※ 이 내용은 필요할 경우 녹화된 영상 보면서 다시 공부할 것...)

(PuTTY로 AWS의 Red Hat 기반으로 생성한 컴포넌트를 연결해서 진행함)

(AWS에 Miniconda를 설치해서 jupyter notebook을 모바일, 태블릿 상에서도 실행할 수 있게 해본다)



image

리눅스 명령어

ls 는 많이 쓴다! 해당 폴더의 파일 목록들을 보는 명령어임


안드로이드는 리눅스 커널이 들어가있고,

iOS는 unix

image

(ssh -i "인증키" ec2-user@3.x.x.x 이 부분은 맥북 사용자 설정을 위한 메모, 신경안써도 됨)


(리눅스에서)안드로이드에서 루팅은 root권한을 획득하는 것

root는 모든 것을 할 수 있는 절대권력을 가진 계정이기 때문에, 기본적으로는 막아놓음


Red Hat 운영체제에서 무언가를 애플리케이션을 설치 받을 때는 yum 명령어를 쓴다.

image

잠시 root권한을 빌려올 떄는 sudo를 쓴다. (y를 눌러서 yes.. 설치진행)

image

사용자 계정과 패스워드를 만들었다.

(사용자가 한명이 아닌 다수이기 때문에 이렇게 계정을 만든다)


image

su encore 하게 되면 (su 계정명을 치면, 현재 이 컴퓨터에 있는 계정에 로그인할 수가 있다)

우리가 만든 encore계정으로 로그인 할 수 있다. 얘기이다.


whoami 하면 현재 로그인한 계정이 무엇인지 나온다.


image

pwd == 현재 타이핑을 하고 있는 폴더를 얘기한다.


cd ~ 하면 현재 로그인한 계정의 홈 디렉토리로 이동한다.

(물결 표시는 현재 계정의 홈 디렉토리로 이동을 시켜달라는 얘기임)

image

(현재 계정인) encore 폴더로 이동을 했다.

이제 여기에 miniconda를 다운 받을 거다. (Miniconda는 Anaconda를 컴팩트하게 만든 것이다)

image

Linux용 64비트 설치 링크 주소를 복사한다.


그리고 wget치고, 복사한 주소를 입력한다.

image

엔터를 쳤더니 다운로드 받았다!

(wget 은 뭔가를 다운로드하고 설치하는 명령어이다.)


image

ls를 치면 현재 폴더의 파일이 나오고

ls -al 치면 현재 폴더의 파일을 상세하게 볼 수 있다. 모두 다 디테일 하게 볼 수 있는데,

image

우리가 알아야 할게 앞에 알파벳과 대시(-)의 내용이다.

앞에 d라고 적혀있는 것은 디렉토리다.

(-)대시 라고 적혀있는 것은 파일이다.

맨 마지막에 Miniconda 파일을 봤더니, 앞이 - (대시)가 있는것을 봐서 파일이다.

그리고 rw-rw- 이렇게 되어있다.

image

이렇게 권한 설정이 된다.

그리고 이것을 3개씩 끊는다.

그리고 . 뒤 순서대로 사용자, 이 파일의 소유주, 이 파일의 소유 그룹

지금 같은 경우에는 encore라는 계정을 만들었고, 자동으로 encore라는 그룹을 만들어주기 때문에

encore계정에서 파일을 다운로드 받았을 때 파일의 소유주는 encore고, 파일의 소유그룹도 encore이다.


근데, 이 파일의 처음 rw- 부분이 사용자 권한이다.

사용자는 read할 수 있고, write할 수 있다.

그룹 또한 read할 수 있고, write할 수 있다.


근데, 그룹 사용자 또는 그룹이 아닌 사람 제 3의 그룹(제3자)은 read만 할 수 있다 이런 뜻임

그리고, 각각의 맨 오른쪽 - (대시)는 x라는게 원래 들어가는 곳이다.

read(r), write(w)... x는 excute 실행하는 것을 의미한다!


하위에 권한을 부여하는데... chmod(change mod)라는 것을 사용한다.

image

이렇게 하면 +를 사용해서 실행권한을 이 Miniconda 한테 주겠다는 뜻임,

이렇게 하고 비교를 해보면

image

Miniconda 파일이 초록색으로 바뀌었다. 이 초록색은 실행 파일임을 의미한다.

(파란색 밑줄 친 부분을 보면)그럼 사용자는 읽을 수 있고, 쓸 수 있고, 실행할 수 있고

그룹은 읽을 수 있고, 쓸 수가 있고, 제3자는 읽을 수만 있다.


그래서, 리눅스에서는 이렇게 세 개씩 끊어서 사용자, 그룹, 제3자의 권한을 이야기 한다.

그리고 권한을 줄 때는 chmod(change mod) 라는 명령어를 친다.

image

마이너스를 치면 권한이 빠진다!, 플러스를 치면 권한을 부여한다!

근데, 보통은 이렇게 안하고 숫자로 (권한이)많이 갈린다.

image

여기서,

r같은 경우 2의 2승, w는 2의 1승, x는 2의 0승을 의미함

(2의2승)4, (2의1승)2, (2의0승)1 = 각각의 합은 7


chmod 770 ./Miniconda....

그럼 이 의미를 유추해보면?

r은 사용자, w는 그룹 x는 제3자를 의미함

770은 사용자와 그룹한테 읽기, 쓰기, 실행의 모든 권한을 주고,

제3자한테는 아무것도 주지 않겠다는 뜻


777은 사용자, 그룹, 제3자 모두한테 읽기, 쓰기, 실행의 모든 권한을 준다는 뜻


chmod 400 ...pem

사용자한테 읽기 권한만 있는 것

사용자만 읽을 수 있고 나머지는 아예 아무 권한이 없다는 뜻


644는 사용자는 read, write(읽기, 쓰기) 권한만 있고

그룹은 read만 되고, 제 3자도 read만 가능

(Mac도 그렇고, Linux 사용자는 이 숫자의 의미를 반드시 알아야한다!)


이런식으로 파일의 권한을 숫자를 이용해서 권한을 준다.

image

이렇게 하면 Miniconda 파일은 사용자(나)만 읽을 수 있고, 쓸 수 있고, 실행할 수 있는 권한이 있다.

이것을 실행을 해본다.

./miniconda3-py39_4.9.2-Linux-x86_64.sh

image

이렇게 입력하면 뭔가 나온다...

확장자가 .sh 확장자는 shell 스크립트이다. 실행파일임...

엔터를 누르면 이렇게 아래와 같이 라이센스가 나온다.

image

동의를 안하면 설치가 안된다. yes

image

그렇게 하니 home/encore/miniconda3 폴더에 이것을 설치할 것을 묻는다.

설치를 하겠다. 엔터!

설치중...

image

그리고 conda init 이라 적혀있는데 yes를 해준다.

image

이 상태에서 conda 라고 명령어 치면 아무것도 안된다.

image


ls -al ~ 

이렇게 쳐본다.

그러면 .bashrc라는 파일이 있는데, 이게 환경파일이다.

image

이 환경 파일 내용을 본다.

vi ~/.bashrc (라고 터미널에 쳤음)

image

그럼 이렇게 환경파일 내용이 나오는데, 자바 홈같은 거 설정했던 것 처럼

그런 환경을 적는 파일이다.

여기 보면 Miniconda라는 파일을 등록을 시켜놨다.

등록한 파일을 사용하려면 갱신을 해야한다. (얘를 갱신해야됨)

이 때 쓰는게, source ~/.bashrc (소스의 .bashrc파일을 갱신하겠다 라는 뜻의 명령어)

image

source ~/.bashrc 라는 명령어로 갱신해주면, (base)라고 이름이 바뀌어 생기면서 이 때부터는, conda명령어를 사용할 수 있다!

image

이제 conda 명령을 사용할 수 있으니까

conda install jupyter 명령어를 쳐서 jupyter notebook을 설치한다.

image

y/n 선택하라고 나오면 y누르고 계속 진행

image

Jupyter Notebook 설치 완료!

jupyter notebook --generate-config

이렇게 하면 주피터 환경파일을 만드는 것이다.

그러면 표시한 바로 아래에 명시된 경로에 jupyter_notebook_config.py 파일이 생긴다.

(참고로, .jupyter 같이 점이 붙어있는 폴더는 숨겨진 폴더이다)

어쨋든, 이 파일을 수정할건데, 이 파일을 수정하기 전에 ipython이라고 적는다.

image

그러면 이렇게 Jupyter Notebook을 작성할 수 있다.

notebook.auth 라는 곳에 passwd 라는 함수가 있다.

이 함수를 실행하면, 암호를 집어넣으라고 한다.

(본인이 알 수 있는 패스워드를 적는다)

그렇게 passwd() 함수를 이용해서 패스워드를 생성하면

길게 뭔가 출력이 된다.

('argon2:$argon2id$v=19$m=10240,t=10,p=8$9oZxCgHoNhKZZCkr2+5/qg$9DWi5x15Y5VvJlCWZw/WKw' 여기 에버노트에 잠시 붙여준다!)

image

그리고 exit을 치고 enter를 눌러서 빠져나온다.


리눅스에서는 vi라는 것을 사용해서 편집해야한다.

vi /home/encore/.jupyter/jupyter_notebook_config.py

이렇게 터미널에 입력해주면 아래 이미지와 같이 화면이 나온다.

image


image

여기서 :(콜론)을 누르면 명령어 모드가 되고, i를 누르면 INSERT모드가 된다.

(콜론(:) 누르고 /allow_origin을 쳐주고, allow_origin 부분을 찾은 후 i를 눌러서 insert모드로 전환했다)

image

insert 모드에서 해당 표시 부분 주석처리 된 것을 지워주고,

모든 부분에서 요청을 받겠다라고 작성해주었다.

image

image

esc누르면 visual mode가 된다. esc눌러서 돌아간다.


image


image

그리고, insert모드로 들어와서 아까 전에 잠깐 복사해서 여기(에버노트에) 붙여놨던 패스워드를 붙여준다 (아래 이미지)

image


image

그리고 명령어 모드로 들어가서 (콜론 입력) wq해주고 저장하고 나감을 명령한다.


image

그리고 jupyter notebook 명령어를 쳐서 jupyter notebook을 실행시켜준다.

(잘 실행된 출력모습)


다시 ec2로 가서 보안 탭에가서 그룹에 보면 이렇게 뜬다.

image

이걸 클릭하게 되면 보안그룹 설정 환경으로 들어갈 수가 있다.

image

여기서 22번 포트말고 규칙을 하나 더 추가할 것이다.

image

규칙 추가 버튼을 누른 다음,

8888로 포트번호를 정해주고, 아무 사용자나 들어올 수 있게 (0.0.0.0/0) 설정해주고,

규칙을 저장한다.

image

그럼 외부에서 8888 ip로 접속할 수가 있다.


현재 내 ip는

image

3.36.56.190 이니까 이 ip에 8888로 접속을 하면

image

이렇게 주소를 치면 jupyter notebook 화면에 접속할 수 있다.

그리고 아까 터미널에서 설정한 jupyter notebook 비밀번호를 친다.

(이걸 똑같이 접속해서 pc가 아니라 내 핸드폰에서도 접속할 수 있다!)

image

(내 아이폰에서 접속한 화면)

KakaoTalk_20210719_212404721

이렇게 하면 휴대폰이나 태블릿에서도 주피터 노트북에 접속해서 사용할 수 있다.


이렇게 ec2에 jupyter 서버를 띄운 다음에 웹에 접속하는 것을 해보았다.

그리고, 우리가 프로젝트 할 때 이런 방식으로 Spring Boot 올리고, Flask 올리면 된다!!!



추가정보

vi, vim 단축키 모음