안녕하세요. 오랜만에 개발 관련 글로 돌아왔군요. 그 동안 대학교 졸업과 취업 문제로 블로그 포스팅에 많이 신경을 못 썼던 것 같아요. 취업한 이후에 조금 여유를 가지게 되면서 요즘은 python의 자동화 관련되어서 관심을 많이 가지게 되었어요. 이후 개인용 웹서버를 통해 자동화 기능을 가진 서버 하나가 있었으면 좋겠다는 생각이 들어 시놀로지로 웹서버를 구축하게 되었습니다.
시놀로지 nas 외부접속 설정
공유기 포트 포워딩
먼저 현재 사용하고 있는 공유기에 포트포워딩을 설정합니다. 해당 설정은 공유기에 들어오는 접속을 허용해주는 것으로 공유기에 연결된 시놀로지 nas로 접근해야 하기 때문에 접근할 포트를 허용해주어야 합니다.
내부 ip 같은 경우는 시놀로지 사설 ip를 작성하면 되고 허용할 외부 포트와 내부 포트를 작성하고 추가해주시면 됩니다.
Synology Nas 외부 접속 설정
당므은 시놀로지 외부 엑세스 접속을 설정 해야 합니다. 먼저 외부 주소를 받아야 하고 synology의 좋은점이 서비스 제공업체를 자처하여 저희는 호스트 이름만 설정하고 뒤에 synology.me로 접속만 해주시면 됩니다.
다음은 방화벽 설정입니다. 연결할 포트에 대해 방화벽을 허용해주셔야 합니다. [보안 - 방화벽 - 규칙편집] 에서 설정할 수 있습니다.
SSH로 Synology Nas 접속
Synology Nas SSH 설정
시놀로지 NAS 제어판에서 터미널 및 SNMP에 들어가 SSH 서비스를 활성화 시켜줍니다. 접속할 포트를 지정해주고 적용 시키면 됩니다.
SSH 접속
각종 SSH 접속 프로그램 혹은 터미널로 접속해줍니다. 저 같은 경우 평소에 쓰는 xshell 프로그램을 이용해서 id 및 passowrd (시놀로지 nas 접속시 최초로 만들었던 계정)을 입력해주고 접속하였습니다.
sudo -i
접속하면 바로 sudo -i를 통해 root 모드로 접속해줍니다. root password는 시놀로지 nas 최초 계정 password 입니다.
Docker 연동
Synology Nas Docker 설치
먼저 synology에 Docker를 설치해줍니다. Docker은 shell을 통해 설치해도 되지만 패키지 센터에 Docker를 검색하여 간단히 설치할 수 있습니다. UI 상으로 Docker 실행 현황도 볼 수 있으니 설치하시는 것을 강력 추천드립니다.
Flask 설정 (Dockerfile, app.py 설정)
# app.py
from flask import Flask
import os
app = Flask(__name__)
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT',21234)))
간단히 python 웹서버 코딩을 해줍니다. 저 같은 경우에는 이미 8080 포트를 사용중이라 21234 포트로 기동시켜 주었습니다.
Dockerfile
# 베이스 이미지
FROM ubuntu:20.04
#설치시 질문 안나오게 설정
ARG DEBIAN_FROMTEND=noninteractive
# apt 업데이트
RUN apt update
# 패키지 설치
RUN apt install -y build-essential curl git g++
# 파이썬 설치
RUN apt install -y python3 python3-pip
# 소스코드 복사
COPY . /opt/myproject
#작업 폴더 설정
WORKDIR /opt/myproject
# 파이썬 패키지 설정
RUN pip3 install -r requirements.txt
# 실행 파일 설정
CMD ["python3","app.py"]
다음은 Dockerfile을 작성해 줍니다. Dockerfile에 추가로 옵션 설정할 것이 있다면 작성해주시면 됩니다.
Docker build 및 push
1. requirements. txt 생성
pip freeze > requirements.txt
2. docker build
docker build -t autoweb:1 .
2-1. docker 태그명 변경 (참고)
docker image tag coupang_api:0.0.2 1013cm/coupang_api:0.0.1