AWS에서 데스크탑으로 서버를 옮기고 개발을 마무리하기 위해 포스팅을 시작한다.
먼저 Linux 운영 체제에 Docker를 설치하고 Web Server를 깔아
아래와 같이 Localhost에 페이지를 띄우는 것을 마무리했다.
한번 씩 로그인이 되지 않고 docker-compose up 하는 과정에서 Permission error가 뜬다면 아래 링크 참고해서 해결해라.
먼저 MySQL 컨테이너를 만들어서 실행해보자.
https://learn.microsoft.com/ko-kr/visualstudio/docker/tutorials/tutorial-multi-container-app-mysql
네트워크를 생성하고 mysql을 pull하며 컨테이너를 생성해주었다.
그리고 docker run을 이용해서 아래 네가지 환경변수를 지정할 수 있는데,
MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DB
환경변수를 지정해 node앱을 실행하고 있다.
Jupyter Notebook 설치
https://www.youtube.com/watch?v=LoYpXoBJPMc&t=138
설치 과정은 위 영상을 따라했다.
직접 해보니 잘 안 맞는 부분이 많았었는데, 먼저 난 AWS가 아니라 데스크탑 PC 우분투를 사용하고 있으므로
원격 접속에 사용 가능한 IP Address를 찾는 과정이 어려웠다.
결론은 ifconfig를 입력했을 때 마지막에 나오는 <UP, BROADCAST, RUNNING, MULTICAST> 라고 명시된
inet의 ip address를 사용할 것.
HTTPS 설치하기
인증서를 적용해 다른 사람이 우리 서버에 접근해 packet을 가로채지 않도록 한다.
#Trouble_Shooting
1. key size 관련 error 해결
Traceback (most recent call last):
File "/usr/lib/python3.10/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.10/dist-packages/tornado/platform/asyncio.py", line 206, in _handle_events
handler_func(fileobj, events)
File "/usr/local/lib/python3.10/dist-packages/tornado/netutil.py", line 277, in accept_handler
callback(connection, address)
File "/usr/local/lib/python3.10/dist-packages/tornado/tcpserver.py", line 348, in _handle_connection
connection = ssl_wrap_socket(
File "/usr/local/lib/python3.10/dist-packages/tornado/netutil.py", line 664, in ssl_wrap_socket
context = ssl_options_to_context(ssl_options, server_side=server_side)
File "/usr/local/lib/python3.10/dist-packages/tornado/netutil.py", line 622, in ssl_options_to_context
context.load_cert_chain(
ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee key too small (_ssl.c:3874)
주피터 노트북을 실행하니 이런 에러가 떴고, rsa를 이용해 pem 키를 제작하는 과정에서 key size를 1024에서 2048로 수정함으로써 오류를 해결하였다.
2. Permission denied 관련
이렇게 실행하는 과정에서 jupyter-notebook을 실행하면 Permission denied 관련 오류가 떴다.
handle: <Handle BaseAsyncIOLoop._handle_events(7, 1)>
Traceback (most recent call last):
File "/usr/lib/python3.10/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.10/dist-packages/tornado/platform/asyncio.py", line 206, in _handle_events
handler_func(fileobj, events)
File "/usr/local/lib/python3.10/dist-packages/tornado/netutil.py", line 277, in accept_handler
callback(connection, address)
File "/usr/local/lib/python3.10/dist-packages/tornado/tcpserver.py", line 348, in _handle_connection
connection = ssl_wrap_socket(
File "/usr/local/lib/python3.10/dist-packages/tornado/netutil.py", line 664, in ssl_wrap_socket
context = ssl_options_to_context(ssl_options, server_side=server_side)
File "/usr/local/lib/python3.10/dist-packages/tornado/netutil.py", line 622, in ssl_options_to_context
context.load_cert_chain(
PermissionError: [Errno 13] Permission denied
error log는 위와 같았다.
cert.pem 파일의 권한 문제라 생각하여 꽤 오래 서치하다가 아래 stack overflow에서 정답을 보고 해결하였다. https://stackoverflow.com/questions/55871531/permissionerror-errno-13-permission-denied-cannot-open-jupyter-on-browser-de
#Done!
Background에서 실행하도록 하기 위해 아래 과정을 수행한다.
$ bg
[22]+ jupyter notebook --config jupyter_notebook_config.py &
$ disown -h
다음으로는 서버가 재부팅되었을 때도 Jupyter Notebook을 자동 실행하기 위해
시스템 서비스로 등록한다.
$ which jupyter
/usr/local/bin/jupyter
$ sudo vi /etc/systemd/system/jupyter.service
jupyter.service에 수행할 명령어를 아래와 같이 넣어준다.
[Unit]
Description=Jupyter Notebook Server
[Service]
Type=simple
User=choice
ExecStart=/usr/bin/sudo /usr/local/bin/jupyter-notebook --allow-root --config=/home/choice/.jupyter/jupyter_notebook_config.py
[Install]
WantedBy=multi-user.target
저장하고 나와서 아래 명령어를 마저 입력한다.
$ sudo systemctl daemon-reload
$ sudo systemctl enable jupyter
$ sudo systemctl start jupyter
$ sudo systemctl stauts jupyter # active 상태로 뜨면 성공
'Server > Docker' 카테고리의 다른 글
[Trouble Shooting] Ubuntu 환경에서 Docker Image Build 시 Geographic area에서 Building이 멈추는 현상 (0) | 2023.05.07 |
---|---|
[ICE-LIFE] Docker MySQL 및 PHP 컨테이너 설치 및 연동 (0) | 2023.01.03 |
Docker Container 시작하기, Docker Voulme 사용 (0) | 2022.07.14 |
Docker-compose에 Spring Boot, MariaDB 올리기 (0) | 2021.12.28 |
Docker SpringBoot, MariaDB 이미지 빌드하기 (0) | 2021.12.25 |