Server Infra

  • awk 명령어: 필드 출력과 -F 구분자, 조건 패턴 사용법

    awk 명령어는 텍스트 파일을 한 줄씩 읽어 공백이나 지정한 구분자로 필드를 나누고, 조건에 맞는 줄의 필드만 골라 출력하거나 계산하는 리눅스 도구입니다. AlmaLinux 9 서버에서 웹 서버 접속 로그 예시 파일의 접속 IP별 요청 수와 상태 코드별 건수를 sort와 파이프로 이은 한 줄 명령으로 집계해 보니, 열두 줄 가운데 404 응답 3건이 모두 한…

  • dnf 명령어: 패키지 설치, 업데이트, 삭제와 yum 차이

    dnf 명령어는 RHEL 계열 리눅스에서 패키지를 검색, 설치, 업데이트, 삭제하는 패키지 관리 명령어입니다. AlmaLinux 9에서는 yum을 입력해도 같은 프로그램이 실행됩니다. AlmaLinux 9 서버에서 search, info, provides, history를 실제로 실행해, 패키지를 찾는 search, info, provides가 각각 어디를 보는지와 history에 남는 작업 기록을 출력으로 확인했습니다. 설치, 삭제, 업데이트처럼 시스템을 바꾸는 명령은 실행하지 않았습니다. 그 동작은…

  • wc 명령어: 줄 수, 단어 수 세기와 wc -l 파이프 사용법

    wc 명령어는 파일의 줄 수와 단어 수, 바이트 수를 세어 출력하는 리눅스 명령어입니다. 웹 서버 접속 로그 예시 파일의 줄 수를 wc -l로 세면 10이고, grep으로 404 응답만 걸러 wc -l에 넘기면 실패한 요청 수 3을 숫자 하나로 확인할 수 있습니다. 아래 로그와 파일 내용, 작업 폴더 /root/work는 예시 값입니다. 로그는 문서 예시용…

  • curl 명령어: 옵션 사용법과 POST 요청, 파일 다운로드

    curl 명령어는 터미널에서 웹 주소로 요청을 보내고 응답을 그대로 출력하는 도구입니다. 명령 한 줄로 페이지 본문과 헤더, 상태 코드를 확인할 수 있습니다. AlmaLinux 9 서버에서 워드프레스 사이트로 curl 요청을 보낸 결과, http 주소는 301 응답으로 https 주소를 안내했고 인증 없는 REST API 요청은 401로 거절되었습니다. curl 뒤에 주소 하나를 붙이면 그 주소로 GET…

  • traceroute 명령어: 설치와 사용법 & -n, -I, -T 옵션

    목적지까지 패킷이 거쳐 가는 라우터를 한 홉씩 확인할 때는 traceroute 명령어를 사용합니다. AlmaLinux 9.8 서버에는 traceroute가 설치되어 있지 않아 dnf로 설치했고, traceroute 2.1.2가 들어 있는 Debian 12 서버에서 example.com까지 경로를 추적한 결과 일곱째 홉에서 목적지에 닿았습니다. 아래 출력은 Debian 12 서버의 일반 계정으로 실행한 결과이고, 설치 장의 rpm·dnf 출력만 AlmaLinux 9.8 서버(root 계정)에서…

  • Node.js 설치: 브라우저 없이 서버에서 버튼 작동 체크

    서버에서 자바스크립트를 실행하려면 먼저 Node.js 설치가 필요합니다. Nginx와 Apache 구성의 워드프레스 서버에 Node.js 24.21.0을 설치하고, jsdom 30.1.3으로 브라우저 없이 웹 페이지의 버튼 스크립트를 검사했습니다. 기본 저장소의 nodejs는 16.20.2이며, 스크립트 검사에 사용할 jsdom 30.1.3은 Node.js 22.22.2 이상을 요구합니다. 그래서 dnf 모듈 스트림 24로 설치를 진행했습니다. 서버에서 버튼 스크립트를 검사하려면 Node.js와 jsdom 두 가지가 필요합니다….

  • nginx njs: 모듈 설치와 js_set 설정, reload 적용으로 자바스크립트 변수 만들기

    nginx njs는 nginx 설정 안에서 자바스크립트 함수로 요청을 처리하거나 변수 값을 만드는 nginx 공식 모듈입니다. Nginx + Apache 구성 서버에서 nginx 설정만으로는 바꿀 수 없는 요청 주소의 대소문자를 맞추기 위해 njs 모듈을 설치된 nginx와 같은 버전으로 설치하고, js_set으로 만든 변수를 캐시 파일 경로에 넣어 재시작 없이 reload로 적용했습니다. 예로 든 함수는 한글 주소의…

  • gclid 캐시: 광고 클릭 쿼리와 페이지 캐시 키, 첫 바이트 실측

    gclid 캐시 처리는 광고 클릭 주소 끝에 붙는 gclid 쿼리를 무시하고 쿼리 없는 주소의 캐시 파일로 응답하는 동작입니다. Nginx + Apache 구성의 워드프레스 서버에서 쿼리와 캐시 유무별 첫 바이트를 측정한 결과, gclid가 더한 시간은 0.014~0.015초였고 몇 초 단위의 지연은 캐시를 사용하지 못한 경우에만 발생했습니다. 같은 서버 안에서 잰 첫 바이트는 쿼리가 없을 때…

  • 리눅스 nice 명령어: 우선순위 지정과 renice 변경, CPU를 다툴 때의 몫 실측

    리눅스 nice 명령어는 프로그램을 실행할 때 CPU를 얼마나 양보할지 정하는 nice 값(-20~19)을 지정하는 명령어입니다. AlmaLinux 9 서버에서 CPU 코어 하나에 작업 둘을 묶어 nice 값을 바꿔 가며 잰 결과, 몫은 CPU를 다툴 때만 나뉘었고 nice 19 작업은 1.4%만 사용했습니다. 이미 실행 중인 프로세스는 renice로 바꾸며, 디스크 쪽 양보는 ionice가 담당합니다. 세 명령 모두…

  • php-fpm max_children 경고: 워커 증설 전에 로그로 원인 판별

    php-fpm max_children 경고는 PHP 워커 프로세스가 전부 요청을 처리하는 중이라 새 요청이 대기열에 들어갔다는 신호입니다. 이 경고가 몇 주째 누적된 Nginx와 Apache, php-fpm 구성의 워드프레스 서버에서 로그로 워커를 채운 요청을 가려낸 결과, 설정값을 올리는 대신 nginx 속도 제한으로 해결하게 되었습니다. 주간 점검에서 경고는 하루 27~187건씩 기록되었지만 같은 기간 방문자가 받은 502·504 오류는 나흘…

End of content

End of content