본문 바로가기

# Development/DevOps

(17)
[Nginx] Header Server 정보 수정하기, 지우기 Header Server 정보 수정하기, 감추기 Nginx를 사용하는 ununtu 서버에서 보안을 위해 Header의 Server 정보를 숨기고 싶을 때, 아래의 3가지 방법을 통해 Server 정보를 단계적으로 숨길 수 있다. 1. nginx 버전 정보 숨기기 2. Server 데이터 대체 하기 3. Server 헤더 삭제하기 nginx.conf 기본 설정 확인 Server Header 정보는 nginx.conf 파일에서를 수정할 수 있다. 보통 ubuntu에서 /etc/nginx/nginx.conf 위치에 있다. nginx.conf 기본 설정 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/ngi..
[Nginx] ubuntu 환경에서 Flask 배포하기 (Github, uWSGI, Socket) ubuntu 환경에서 Flask 배포하기 (Github, uWSGI, Socket) 사전준비 패키지 매니징 툴 apt(Advance Packging Tools) 업데이트 $ sudo apt update Git에서 소스코드 다운로드 1. Git 설치 $ sudo apt install git 2. Git 초기화 프로젝트를 시작하고 소스 코드를 Git으로 관리하고자 한다면 먼저 git init으로 저장소를 초기화 해야 한다. 저장소로 사용하고자 하는 디렉터리로 이동한 다음 git init을 실행한다. $ git init 3. 소스코드 주소 복사 GIhub 홈페이지에서 가져올 프로젝트 주소 복사 (프로젝트 화면 > Code > Code > Clone > HTTPS) 4. git clone $ git clone ..
[Nginx] Nginx란 무엇인가? Nginx란? Nginx는 웹 서버 및 리버스 프록시 서버로 사용되는 경량 웹서버 오픈소스 소프트웨어다. 다중 클라이언트 요청을 비동기적으로 처리하여 높은 처리량과 낮은 지연 시간을 보장 메모리 사용량도 매우 적어서 리소스 효율성이 뛰어남 Nginx 활용 방법 HTTP Web Server로 활용 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답한다. Reverse Proxy Server로 활용 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용한다. ** Revere Proxy 외부 클라이언트에서 서버로 접근 시, 중간에서 중개자 역할을 하여 내부 서버로 접근할 수 있도록 도와주는 서버 Nginx 특징 웹서버로 주로 Apache와 Nginx가 사용되는데 두개는 큰 차이점이 있다. Apa..
[WSGI] WSGI란? WSGI (Web Server Gateway Interface) python으로 작성한 Django, Flask와 같은 웹 프레임워크에서 Apache, Nginx 같은 웹 서버와 통신할 때 사용하는 프로토콜이다. WSGI 특징 1. 파이썬 스크립트가 웹 서버와 통신하도록 도와준다. 2. 웹 서버와 웹 애플리케이션 사이에 위치한다. 🔮 웹 서버 - Apache, Nginx - 웹 서버는 html, image등 정적인 파일, 소스 등을 처리함 🔮 웹 앱 - Django, Flask와 같은 파이썬 프레임 워크 - 동적인 요청을 처리해서 웹 서버에 처리한 결과를 돌려줌 WSGI는 서버와 앱 사이에서 callable object를 통해 웹 서버 요청해 대한 정보를 웹 앱에 전달 CGI 2003년까지 사용하던 파이..
[AWS EC2] 인스턴스 중지 및 시작 인스턴스 중지 및 시작테스트 서버가 먹통이 되어 인스턴스를 중지 후 재시작 했는데 Putty 접속이 되지 않았다.  인스턴스 대시보드에서는 실행중으로 잘 돌아가고 있었고, 인스턴스 스크린샷, 시스템로그를 확인 해봐도 인스턴스는 잘 작동하고 있었다. 인스턴스 중지 공식문서를 확인해보니 탄력적 IP 주소를 적용하지 않아서 생긴 문제였다. 탄력적 IP 주소를 할당해주지 않으면 인스턴스 중지 후 재시작 할 때 새로운 퍼블릭 IPv4 주소가 생성된다. https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/Stop_Start.html Amazon EC2 인스턴스 중지 및 시작 - Amazon Elastic Compute Cloud인스턴스를 중지하면 인스턴스 스토어 ..
[Ubuntu] 리눅스 우분투 Cron(크론), Crontab(크론탭) 설정 리눅스 우분투 Cron(크론), Crontab(크론탭) 설정 매일 특정 시간에 API를 호출해야 하는 작업이 있어서 우분투에서 crontab에 작업을 추가했다. 멀티태스킹이 가능한 운영체제에서 사용자에 의해 제어 및 관리되지 않고, Background Process로 돌며 작업을 수행하는 프로그램을 Daemon(데몬)이라 한다. Daemon의 프로세스들은 보통의 Foreground Process의 프로그램들과 구분되기 위해 이름의 끝에 'd' 를 포함한다. 리눅스에서 지정한 스케쥴에 맞춰 작업을 수행 하는 데몬을 Cron(크론)이라고 하고,이 Cron이 수행할 작업과 스케쥴을 설정해 명령 리스트를 만드는 것을 Crontab(크론탭)이라고 한다. 이 기능을 사용하면 24시간 동작하는 서버에서 특정 시간에 ..
[Nginx] 504 Gateway Time-out 504 Gateway Time-out Nginx의 uwsgi time_out 은 디폴트 설정이 60s이다. 불러올 데이터가 많은 특정 API를 부르는 도중에 60초가 초과되어 사이트에서 에러를 뿜었다. 임시방편으로 Time-out 시간을 별도로 설정해주었다. Time-out 시간은 Client와 Nginx의 통신, uWSGI와 Flask 서버의 통신 두 경우 모두 설정해주었다. Nginx 설정 파일 수정 (nginx.conf) 리눅스 서버에서 sudo 명령어를 사용해서 nginx.conf 파일을 수정 가능한 상태로 열어주고, /etc/nginx$ sudo nano nginx.conf 다음과 같이 타임아웃 관련 명령문을 추가해했다. http{ proxy_connect_timeout 300; proxy_re..
[Ubuntu] 리눅스 우분투 timezone 설정 리눅스 우분투 timezone 설정 AWS EC2 서버를 사용하면 기본 지역이 한국으로 되지 않기 때문에 서버 시간이 한국과 다르다. 우분투 timezone(서버 시간)은 'date' 명령어를 입력하면 확인할 수 있다. ubuntu@SERVER:~/$ date Mon May 16 00:12:41 UTC 2022 crontab과 같은 시간 예약 작업을 할 때 시간이 다르면 번거로우니 변경하도록 하자. 1. 'timedatectl' 명령어를 통해 변경할 수 있다. ubuntu@SERVER:~/$ sudo timedatectl set-timezone 'Asia/Seoul' ubuntu@SERVER:~/$ date Sat May 16 19:52:25 KST 2020 2. 'tzslect' 명령어를 통해 변경하는..