전체 글
[node.js] 환경 설정 파일 분리를 위한 dotenv, env-cmd
* 개요- 개발환경과 운영환경을 분리 하여 .env 파일을 정의 할 수 있다.* 패키지 설치npm install dotenv env-cmd --save* 파일 정의 예시개발환경 -> .env.developmentPORT = "4000"NODE_ENV = "development"APP_URL = "http://localhost:4000"ORIGIN = "http://localhost:3000"JWT_SECRET = "super_secret"운영환경 -> .env.productionPORT = "4000"NODE_ENV = "production"APP_URL = "http://localhost:4000"ORIGIN = "http://localhost:3000"JWT_SECRET = "super_secret"..
[SSL] SSL 만료일 체커 (feat. Github)
* 개요 - 서비스를 운영하다보면 나도 모르는 사이 SSL 인증서가 만료되어 낭패를 겪은 적 있을것이다. 간단하게 SHELL 스크립트를 통해서 스마트하게 SSL 만료 알람을 사전에 받아서 대참사를 막아보자 * 코드 - 아래 코드를 응용해서 얼마든시 다양한 Notificator를 만들 수 있을것이다. - 핵심 커맨드 curl --insecure -v $URL 2>&1 | awk 'BEGIN { cert=0 } /^\* SSL connection/ { cert=1 } /^\*/ { if (cert) print }' | awk '/^* expire date: /{print $4,$5,$7}' #!/bin/bash ################Files to be created before starting ex..
[git] git diff 내역을 html 파일로 만들기
* 개요 : git과 jenkins를 연동하여 배포 실행 시 mail로 관리자에게 승인을 받는 절차를 만들어 두었다. 이 과정에서 관리자가 어디가 변경되었는지 확인을 하기 위해 git diff를 html 파일로 만들어서 메일에 첨부하면 어떨까 생각해 보며, 아래와 같이 해결 하였다. * DEMO https://diff2html.xyz/demo.html?matching=none&matchWordsThreshold=0.25&maxLineLengthHighlight=10000&diffStyle=word&renderNothingWhenEmpty=0&matchingMaxComparisons=2500&maxLineSizeInBlockForComparison=200&outputFormat=line-by-line&dr..
[NGINX] Nginx 버전 숨기기
* 개요 : Nginx 의 버전을 알 수 있다면, 공격 포인트가 될 수 있다. 해당 버전에서 어떤 보안 취약점이 있었는지 확인하고 그 부분을 통해 해킹에 노출되기 때문에 버전을 숨겨주면 더 안전한 운영을 할 수 있다. * nginx의 버전 노출 여부 확인 : nginx 서버 응답 헤더값을 보면 알 수 있다. # shell에서 손쉽게 확인 가능 (windows의 경우 wsl 활용) curl -IsL [확인하고자 하는 사이트 URL] --insecure : 위 명령어 실행 시 아래와 같이 노출되는 것을 알 수 있다. : 브라우저 개발자 도구에서도 확인 가능하다. * 숨기는 방법 # 서버의 default.conf 파일에서 server_tokens 값 off로 수정 vi /etc/nginx/nginx.conf ..
[Docker] docker desktop 유료화에 따른 WSL로 무료 사용 하기
* 개요 : docker desktop이 기업사용자에게 유료로 전환되어 다른 대안이 필요한 상황이다. 물론 회사에서 사주면 가장 BEST이긴 하나 유료화를 한다고 하면 꼼수를 열심히 찾게 만드는것은 인간의 본능!! * 구조 : WSL 이란? Windows Subsystem for Linux의 약자로 윈도우 위에서 Virtual Machine처럼 가상의 OS를 띄울수 있도록 해주는 도구 이다. : 윈도우 -> WSL -> Ubuntu 같은 구조로 구성한다. * 구성 방법 : 설정을 위해 Powershell 사용이 필요한데, 해당 사항은 모두 관리자 모드로 사용 할 것을 권장 한다. # 파워쉘 실행 (관리자 모드) # WSL 설치& 재부팅 (필수) wsl --install # 설치된 버전 확인 wsl -l ..
[MariaDB] Event Scheduler
* 개요 : MariaDB도 다른 DB 제품들과 마찬가지로 정해진 시간에 정해진 규칙에 따라 쿼리 루틴을 실행 할 수 있는 스케줄러가 있다. 매일 정기적으로 데이터를 클렌징 한다거나 조각모음을 한다거나 하는 경우에 활용 할 수 있다. * 현재 configuration 확인 및 셋팅 SHOW GLOBAL VARIABLES WHERE Variable_name = 'event_scheduler'; : 기능 셋팅 # vi my.cnf 수정 후 재시작 필요 event_scheduler = 1 * 이벤트 생성 # 이벤트 예제 -- Event 생성 CREATE EVENT IF NOT EXISTS EV_BACKUP_TABLE ON SCHEDULE EVERY 1 MINUTE -- Event 실행 주기 STARTS ' 2..
[Docker] Docker 로그 관리
* Docker 컨테이너, 이미지, 캐시 사이즈 확인 ## 도커 용량 확인 docker system df --verbose ## 도커 미사용 컨테이너 삭제 docker container prune ## 도커 미사용 이미지 삭제 docker image prune ## 도커 미사용 볼륨 삭제 docker volume prune ## 도커 미사용 오브젝트 전체 삭제 (로그 제외) docker system prune * Docker 로그 ## 도커 로그 용량 확인 sudo du -h $(docker inspect --format='{{.LogPath}}' $(docker ps -qa)) ## 도커 로그 전체 삭제 sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/..
[MariaDB] MariaDB 레플리케이션 모니터링 쉘프로그램 (on Docker)
* 개요 : 마리아 DB의 레플리케이션 상태를 모니터링 하기 위한 쉘 프로그램으로, 커스터마이징을 통해 필요한 지표를 모니터링 할 수 있다. * 소스코드 : 소스코드 내 개행문자(^M)는 [Ctrl + V --> 엔터키] 로 입력 한다. 이거 몰라서 한참 고생했다. ㅠ_ ㅠ #!/bin/bash LOGFILE='repl_log_'$(date +%Y%m%d%H%M%S)'.log' ## MySOL로 접속하고, 표준 출력 내용을 로그 파일로 저장하도록 파이프로 전달한다. docker exec -it maria_higenie mysql -uroot -pP@ssw0rd -e "show slave status \G" > $LOGFILE ## IO 스레드 상태를 찾아 IO_THREAD 변수로 저장한다. IO_THRE..