본문 바로가기

Linux

24/365 무인 가동: 리눅스 크론탭(Crontab)으로 자동화 완성하기 1. 도입 및 배경 (Why?) 💡우리는 지금까지 데이터를 뽑고(MSSQL), 수집하고(Selenium), 보고하는(Slack) 법을 배웠습니다. 하지만 이 모든 과정을 매일 아침 우리가 직접 실행 버튼을 눌러야 한다면? 그것은 진정한 자동화가 아닙니다.진정한 시니어 개발자는 "내가 잠든 사이에도 서버는 일하게" 만듭니다.오늘은 리눅스의 시간 기반 잡 스케줄러인 **크론탭(Crontab)**을 활용해, 우리가 만든 에이전트들이 정해진 시간마다 한 치의 오차 없이 움직이도록 설정해 보겠습니다.2. 스케줄링 작동 원리 (What?) 🏗️사용자가 미리 정의한 시간 규칙(Cron Expression)에 따라 리눅스 커널이 해당 명령어를 대신 실행해 주는 구조입니다.Plaintext [ Cron Daemo.. 더보기
도커(Docker)로 파이썬 에이전트 24시간 무중단 가동하기 1. 도입 및 배경 (Why?) 💡우리가 만든 파이썬 에이전트가 훌륭하게 작동하더라도, 터미널 창을 닫으면 종료되거나 서버 재부팅 시 수동으로 다시 켜야 한다면 '자동화'라고 부르기 민망합니다. 😅진정한 시니어 개발자는 **도커(Docker)**를 사용합니다.도커는 내 프로그램을 하나의 **'독립된 방(Container)'**에 가두어, 어떤 환경에서도 동일하게 작동하고 서버가 켜질 때마다 자동으로 실행되게 만듭니다. 오늘 이 과정을 통해 에이전트에 불사(不死)의 생명력을 불어넣어 보겠습니다.2. 시스템 구성도 (What?) 🏗️에이전트가 컨테이너라는 보호막 안에서 외부(MSSQL, Slack)와 통신하며 주기적으로 임무를 수행하는 구조입니다.Plaintext [ Host OS (Linux) ].. 더보기
서버 가동률 99.9% 도전: Slack 실시간 장애 알림 시스템 구축 1. 도입 및 배경 (Why?) 💡서버 운영자에게 가장 공포스러운 순간은 언제일까요? 😱 바로 내가 잠든 사이, 혹은 즐거운 외출 중에 서버가 조용히 죽어버리는 상황입니다.뒤늦게 접속했을 때 이미 몇 시간 전부터 서비스가 중단되어 있었다면, 그동안의 방문자 유입 손실과 수익 하락은 뼈아픈 결과로 돌아옵니다.수익형 블로그나 자동화 에이전트를 운영한다면 더욱 그렇습니다. "에이전트가 글을 쓰다 멈췄는지?", "DB 연결이 끊겼는지?" 실시간으로 아는 것이 곧 돈입니다. 💸오늘은 전 세계 개발자들이 가장 선호하는 협업 툴인 **슬랙(Slack)**을 활용해, 내 서버의 상태를 스마트폰으로 즉시 받아보는 시스템을 구축해 보겠습니다.2. 알림 시스템 구조 (What?) 🏗️전체적인 흐름은 매우 직관적입니다.. 더보기
리눅스 서버 용량 확장: NFS 연결과 /etc/fstab 자동 마운트 완벽 가이드 1. 도입 및 배경 (Why?)서버를 운영하다 보면 로컬 디스크 용량의 한계에 부딪히거나, 여러 서버가 동일한 데이터를 공유해야 하는 상황이 발생함. 이때 가장 대중적으로 사용되는 방식이 **NFS(Network File System)**임.하지만 단순히 mount 명령어로 연결하면 서버 재부팅 시 연결이 끊어짐. 매번 수동으로 연결할 수 없기에, 부팅 시 자동으로 원격 저장소를 내 집처럼 드나들게 해주는 /etc/fstab 설정이 필수적임.2. 시스템 아키텍처 (What?)원격지의 스토리지 서버를 로컬 디스크의 특정 디렉토리(Mount Point)에 논리적으로 결합하는 구조임. [Storage Server (NFS)] [My Linux Server] /data/shared .. 더보기
리눅스 서버의 숨은 해결사: Logrotate로 디스크 풀(Full) 완벽 방지하기 1. 도입 및 배경 (Why?)서버를 운영하다 보면 분명 어제까진 멀쩡하던 서비스가 갑자기 죽는 경우가 있음. 원인을 파악하려 로그를 보려 해도 No space left on device 에러만 출력되며 터미널조차 제대로 작동하지 않음.범인은 대개 **'로그 파일'**임. 서비스가 내뿜는 로그가 무한정 쌓여 디스크 전체를 점령해버린 것임. 이때 필요한 것이 바로 Logrotate임. 오래된 로그는 압축하고, 더 오래된 로그는 삭제하여 서버의 '숨통'을 틔워주는 필수 관리 도구임.2. 시스템 작동 구조 (What?)Logrotate는 백그라운드에서 주기적으로 실행되며 아래와 같은 워크플로우를 가짐.Plaintext [Active Log: app.log] --(기준 충족: 크기/날짜)--> [Rotate: .. 더보기
리눅스 모니터링 심화: Prometheus & Grafana 컨테이너 구축 1. 도입 및 배경서버 운영의 기본은 안정성이며, 특히 CPU, Memory, Disk 등의 리소스 사용량을 실시간으로 모니터링하는 것이 중요함.Prometheus는 시계열 데이터베이스로 메트릭을 수집하고 저장하며, Grafana는 이를 멋진 대시보드로 시각화하는 강력한 모니터링 도구임.2. Prometheus & Grafana 작동 구조도 (인포그래픽)3. 실전 구축 로그 (Implementation Log)이전에 정리한 [Docker 필수 명령어 및 컨테이너 관리] 포스팅을 참고하여 컨테이너를 운용함.**■ Step 1: Nginx 컨테이너 사전 준비 (HTTP 80) ** 최초 인증서 발급을 위해서는 Let's Encrypt 서버가 내 Nginx 서버의 80포트에 접속할 수 있어야 함.YAML # .. 더보기
리눅스 보안 심화: Fail2Ban으로 무차별 대입 공격(Brute Force) 차단하기 1. 도입 및 배경서버 운영의 기본은 보안이며, 특히 SSH(22포트)는 해커들의 주 공격 대상임.Fail2Ban은 실시간 로그 분석을 통해 무차별 대입 공격을 시도하는 IP를 자동으로 방화벽(UFW)에 등록하여 차단하는 강력한 보안 도구임.2. Fail2Ban 작동 구조도 (인포그래픽)3. 실전 구축 로그 (Implementation Log)이전에 정리한 [Docker 필수 명령어 및 컨테이너 관리] 포스팅을 참고하여 컨테이너를 운용함.**■ Step 1: Nginx 컨테이너 사전 준비 (HTTP 80) ** 최초 인증서 발급을 위해서는 Let's Encrypt 서버가 내 Nginx 서버의 80포트에 접속할 수 있어야 함.YAML # Fail2Ban 컨테이너 예시 (또는 docker run)versio.. 더보기
Ubuntu Server - Nginx 컨테이너 HTTPS(SSL) 적용 및 Let's Encrypt 자동 갱신 1. 도입 및 배경서버 운영의 기본은 보안이며, 모든 웹 서비스는 HTTP(80)가 아닌 **HTTPS(443)**로 서비스되어야 함.Docker 환경에서 Nginx를 리버스 프록시로 사용할 때, 무료 SSL 인증서 기관인 Let's Encrypt를 활용하여 인증서를 발급받고 자동 갱신하는 과정을 기록함.윈도우 서버 IIS의 SSL 인증서 등록 방식과 비교해 볼 때, 리눅스 Docker 환경은 스크립트 기반으로 훨씬 유연한 자동화가 가능함.2. Nginx 컨테이너 HTTPS 구조도 (인포그래픽)[가상 인포그래픽] Nginx 컨테이너 HTTPS 구축 및 Let's Encrypt 인증서 발급 흐름도 3. 실전 구축 로그 (Implementation Log)이전에 정리한 [Docker 필수 명령어 및 컨테이너.. 더보기
Ubuntu Server - Docker 설치 및 컨테이너 기초 환경 구축 1. 도입 및 목적애플리케이션(웹 서버, DB, 에이전트 등)을 OS와 격리된 환경에서 쉽고 빠르게 실행하기 위함.venv가 파이썬 환경만 격리한다면, Docker는 OS 커널 레벨에서 애플리케이션 실행에 필요한 모든 파일(라이브러리, 의존성 등)을 이미지로 만들어 격리함.서버 이전이나 확장 시 환경 설정의 번거로움을 원천 차단하는 것이 핵심 목표.2. 아키텍처 비교 (Hypervisor vs Container)나중에 헷갈리지 않게 가상화 방식의 차이점을 텍스트 아트로 정리해 둠. Docker가 왜 가벼운지 직관적으로 파악 가능.Plaintext [Virtual Machine (VM)] [Container (Docker)] │ .. 더보기
Ubuntu 24.04 파이썬 가상환경(venv) 완벽 세팅 및 백그라운드 서비스 구축 기록 1. 도입 및 배경 (왜 굳이 가상환경을 쓰는가?)윈도우에서 개발할 때는 그냥 글로벌 환경에 pip install을 때려 박아도 큰 문제가 없었음. 하지만 리눅스(특히 Ubuntu 24.04 LTS 이상)에서는 상황이 완전히 다름.최신 우분투는 OS 구동에 필수적인 시스템 파이썬 패키지들을 보호하기 위해, 글로벌 환경에서 pip로 패키지를 설치하는 것을 원천 차단함 (PEP 668 정책). 억지로 설치하려고 하면 externally-managed-environment 에러를 뱉어냄.따라서 리눅스 서버에서 파이썬 스크립트(특히 이전에 만든 서버 상태 모니터링 같은 것들)를 돌리려면, 시스템과 완벽히 격리된 가상환경(Virtual Environment, venv) 구축이 선택이 아닌 필수임.2. 아키텍처 개.. 더보기

반응형