본문 바로가기

백엔드

(19)
[Linux] Crontab으로 작업 스케쥴링 - Certbot 자동 갱신 Crontab Crontab은 Linux에서 특정 작업을 특정 시간에 수행할 수 있도록 하는 작업 스케쥴러이다. 예를들어, Certbot과 같은 SSL 인증서는 3개월마다 갱신이 필요한데 이를 OS가 자동으로 처리할 수 있게 하는 것이 가능하다. Crontab 편집 $ crontab -e Crontab 리스팅 $ crontab -l Crontab 수행 주기 설정 분-시간-일-월-요일 순으로 설정이 가능하다. 요일에서 0과 7은 일요일이고, 1~6이 월에서 토요일이다. 실제 사용 예시 - Certbot 자동 갱신 1. bin 디렉토리에 실행 스크립트 파일을 만든다. $ cd /bin $ vi letsencrypt.sh 2. 다음과 같이 내용을 설정 !/bin/sh /etc/init.d/nginx stop ..
[Node.js] Child Process를 통해 Node.js에서 파이썬 스크립트 파일 구동하기 개요 PyTorch로 훈련시킨 EfficientNet 딥러닝 모델을 Express.js 프레임워크에서 구동시키기 위해 Node.js 상에서 파이썬 파일을 구동할 필요가 생겼다. 코드 아래 Express.js로 작성된 서버에서 POST 요청을 통해 사진 하나가 서버의 upload 디렉토리로 업로드 된다. 이후 'child_process'의 spawn을 통해 python 파일을 수행하게 된다. Node.js 파일 const express = require('express'); const app = express(); const multer = require('multer'); const path = require('path'); const uploader = multer({ storage: multer.di..
[백엔드] Query Parameter와 Path Variable의 사용 개요 백엔드 API 개발 시 GET 메서드를 통해 데이터를 어떻게 전송해야 하는지 늘 고민이다. GET 메서드에서 전송 방법은 크게 Query Parameter와 Path Variable 방법이 있다. Query Parameter의 예는 다음과 같다. /user?id=1234 Path Variable의 예는 다음과 같다. /user/1234 두 주소 모두 ID가 1234인 유저를 가져오는 방법이라 했을 때 어느게 적합한가? 보통 정석은 어떤 자원(Resource)를 식별할 때는 path variable을 사용하고, 정렬이나 필터링이 필요로 할 때는 query parameter를 사용한다. 이런 코딩 컨벤션(convention)을 정립하는게 최근 새로이 중요하다고 생각된다.
[백엔드] HTTPS 설정(AWS EC2, Routes 53+Nginx+Node.js) 내가 나중에 다시 보기 위해 작성하는 글 [백엔드] Nginx 개념 및 설정 방법 Nginx Nginx는 로드 밸런스 처리에 특화된 웹 서버 프로그램이다. Nginx를 서버 앞 단에 두어 Express가 사용하는 실제 포트를 숨기고 Nginx의 80번 포트를 통해 Reverse proxing 함으로써 보안 이슈를 방지하 bb-library.tistory.com 1. 가비아에서 구입한 도메인을 AWS Routes 53에 등록 호스팅 영역 생성 NS(Nameserver)의 주소 4개를 구입한 가비아의 네임서버에 등록 레코드 생성: A타입, 도메인, Elastic IP 입력 EC2 보안규칙 인바운드에서 80(http), 443(https) 열기 2. Nginx 설정 [백엔드] Nginx 개념 및 설정 방법 N..
[백엔드] SSL 인증서 없이 https 설정하기 - CloudFlare CloudFlare Cloudflare는 무료로 HTTPS를 설정할 수 있는 선택지이다. 다만, 약간의 페이크가 도입된 기술이라고 볼 수 있다. 방문자의 요청이 Cloudflare를 거치는 과정에서는 암호화가 되어 전송되지만 Cloudflare에서 서버로 전송될 때는 평문이 전송된다. 결론은 데이터는 실제로 보호되지 않지만 보호된다고 표시만 한 것과 유사하다. 만약, 모든 과정에서 보호가 필요하다면 CloudFlare의 Full SSL을 도입하여 SSL 설정을 해주어야 한다. 하지만, Cloudfloare는 공유 SSL을 사용한다. 같은 SSL 인증서가 여러 사이트에서 공유되어 사용되어 안전하지 않다. 결론은 보안이 크게 중요하지 않지만 https라는 껍데기를 사용해야 하는 상황에서 좋은 선택지이다. 정..
[백엔드] 가비아를 통한 도메인 구매 및 등록 방법 1. 가비아에 접속하여 원하는 도메인 이름 입력 2. 적절한 도메인 선정 및 구매 여기서 .com .kr .me 등등 사실 어떤 도메인을 구매해도 무리없이 사용 가능하다. 단순히 이름별로 사이트의 특징만 부여되는 것 뿐이다. 3. 구매 후 도메인 관리로 이동 4. DNS 관리툴로 이동 5. 도메인 클릭 후 DNS 설정 버튼 클릭 6. 레코드 추가 클릭 타입:A, 호스트:*, IP주소:[IP주소], TTL(Time-to-live):600(이후에 변경) 타입 A의 의미는 IPv4주소와 도메인 주소를 1:1로 매칭하는 것을 의미. 이외에도 CNAME 등이 존재한다. 이는 도메인 이름의 별칭을 사용하는 것. 여기서 TTL은 DNS 서버에 캐시되는 시간을 의미한다. 예를들어, 600이면 600초마다 DNS 서버에..
[백엔드] Nginx 개념 및 설정 방법 Nginx Nginx는 로드 밸런스 처리에 특화된 웹 서버 프로그램이다. Nginx를 서버 앞 단에 두어 Express가 사용하는 실제 포트를 숨기고 Nginx의 80번 포트를 통해 Reverse proxing 함으로써 보안 이슈를 방지하고, Nginx의 여러 기능도 사용할 수 있다. Reverse proxy란 사용자가 실제 서버의 정보를 알지 못하게 함을 의미한다. 사용자들이 서버에 요청한 내용을 리버스 프록시가 배후의 서버에서 응답 데이터를 받아와 다시 사용자에게 전송한다.. 노드 서버가 3000번 포트에서 실행 중이며, 도메인을 발급받은 경우 Nginx를 설정하는 방법 1. 설치 $ sudo apt-get update $ sudo apt-get install nginx 2. 브라우저를 통해 서버의 ..
[리눅스, MySQL] 리눅스에서 MySQL DB에 csv 파일 import 방법 CSV 파일 딜리미터(구분자)가 쉼표(,)로 구성된 파일로 아래와 같이 메모장으로 볼 수 있거나 엑셀로 볼 수 있다. 1. MySQL 환경 설정 - DB 생성 - 데이터에 적합한 필드를 가진 테이블 생성 2. CSV 파일 옮기기 MySQL에서 파일을 import 할 경우 안전한 디렉토리 내에 파일을 위치시켜야한다. mysql>show variables like "secure_file_priv"; /var/lib/mysql-files/에 csv 파일을 위치 시킨다. 3. 파일 import - DB 지정 - 데이터 삽입 mysql>LOAD DATA LOCAL INFILE '/var/lib/mysql-files/center_location_lat_lon.csv' INTO TABLE centers CHARACT..