개발노트
고즐의 개발 및 서버 개발 노트![]()
록키 리눅스 서버 운영자를 위한 필수 명령어 가이드
록키 리눅스(Rocky Linux)는 센트OS 계열을 이어받은 서버용 리눅스 배포판으로, 웹호스팅·ERP·사내 시스템 등 실무 환경에서 많이 사용됩니다. 이 글은 실무에서 자주 쓰고 꼭 알아야 할 명령어만 골라 정리한 가이드입니다. 개발자이면서 서버도 직접 관리해야 하는 1인 사업자, 프리랜서, 소규모 팀 운영자에게 특히 도움이 되도록 구성했습니다.
1. 시스템 상태 확인: CPU, 메모리, 프로세스
1-1. 기본 리소스 확인 명령어
서버가 느려졌다 싶으면 가장 먼저 확인해야 할 것은 CPU, 메모리, 프로세스 점유율입니다. 다음 명령어로 현재 시스템이 어떤 상태인지 빠르게 파악할 수 있습니다.
top htop # htop은 별도 설치 필요: dnf install htop free -h ps aux
top은 기본 제공되는 프로세스 모니터링 도구이고, htop은 컬러와 인터페이스가 좀 더 보기 좋아서 상시 모니터링할 때 편리합니다. free -h는 메모리 사용량을, ps aux는 전체 프로세스 목록을 확인할 때 사용합니다.
1-2. 서비스 상태와 부팅 로그 확인
웹서버나 DB가 이상할 때는 서비스 상태와 로그를 함께 확인해야 합니다. systemd 환경에서는 systemctl과 journalctl이 기본입니다.
systemctl status httpd systemctl restart httpd systemctl enable httpd journalctl -u httpd --no-pager -n 100 journalctl -xe
status로 현재 서비스 상태를 확인하고, 문제가 있을 때는 restart로 재시작합니다. enable은 부팅 시 자동 시작 설정입니다. journalctl은 systemd 기반 로그를 확인할 수 있는 명령어로, 특정 서비스만 보고 싶으면 -u 서비스명을 함께 사용합니다.
2. 네트워크와 포트 상태 확인
2-1. IP, 라우팅, 네트워크 인터페이스
네트워크 장애나 외부 접속 문제를 확인할 때는 기본적으로 IP와 라우팅 정보부터 보는 것이 좋습니다.
ip a ip r nmcli device show
ip a는 인터페이스별 IP 정보를, ip r은 현재 라우팅 정보를 보여줍니다. Rocky Linux에서는 NetworkManager가 기본이므로 nmcli로 디바이스 상태를 자세히 확인할 수 있습니다.
2-2. 포트 오픈 여부와 외부 접속 테스트
서비스는 떠 있는데 접속이 안 된다면, 실제로 포트가 열려 있는지와 외부에서 응답이 오는지를 반드시 확인해야 합니다.
ss -tulpn ping 8.8.8.8 curl -I https://www.example.com
ss -tulpn은 현재 열려 있는 포트와 해당 포트를 사용하는 프로세스를 보여줍니다. ping은 네트워크 연결 상태를 확인하고, curl -I는 HTTP 헤더만 가져와 웹 서버 응답 상태를 가볍게 확인할 수 있는 방법입니다.
3. 디스크 용량과 파일 관리
3-1. 디스크 용량 확인
로그가 쌓이거나 백업 파일이 방치되면 디스크가 꽉 차서 서버 전체가 멈추는 일이 생길 수 있습니다. 정기적으로 디스크 사용량을 확인해 주는 것이 좋습니다.
df -h du -sh /var/* du -sh /home/*
df -h는 전체 디스크 파티션 사용량을 보여주고, du -sh 디렉터리명 형식으로 사용하면 어떤 경로가 용량을 많이 잡아먹는지 빠르게 찾을 수 있습니다.
3-2. 파일 찾기와 권한 설정
설정 파일 위치를 잊었거나 특정 이름의 파일을 찾고 싶을 때는 find 명령어를 사용합니다. 권한 문제로 웹서버가 500 에러를 뿜는 경우도 많기 때문에 chown, chmod도 함께 알아두면 좋습니다.
find / -name "php.ini" chmod 755 /var/www/html chown apache:apache /var/www/html -R
find는 루트 경로부터 전체 검색을 수행하므로, 범위를 적당히 줄여 사용하는 것이 좋습니다. chown은 파일/폴더 소유자 변경, chmod는 권한 변경에 사용됩니다.
4. 사용자와 권한 관리
4-1. 사용자 추가 및 sudo 권한 부여
보안을 위해 root 계정으로 직접 작업하기보다 일반 계정을 만들고 sudo 권한을 부여해 사용하는 것을 권장합니다.
adduser sigoni passwd sigoni usermod -aG wheel sigoni
wheel 그룹은 기본적으로 sudo 권한을 가진 그룹입니다. usrmomod -aG wheel 사용자명 형식으로 추가하면, 해당 계정에서 sudo를 사용할 수 있습니다.
5. 패키지 설치와 업데이트(dnf)
5-1. 패키지 설치, 검색, 시스템 업데이트
록키 리눅스에서 기본 패키지 매니저는 dnf입니다. 웹서버, DB, PHP 등 대부분의 서버 프로그램을 dnf로 관리하게 됩니다.
dnf install httpd mariadb-server php dnf search php dnf update -y dnf upgrade -y
install로 패키지를 설치하고, search로 관련 패키지를 검색할 수 있습니다. update/upgrade는 보안 패치 및 버그 수정을 포함한 전체 업데이트를 수행할 때 사용합니다.
6. 방화벽 firewalld 설정
6-1. 방화벽 서비스 상태와 기본 확인
포트는 열려 있는데도 외부에서 접속이 안 될 때, 가장 먼저 의심해야 할 것이 firewalld 설정입니다.
systemctl status firewalld systemctl start firewalld systemctl enable firewalld
방화벽 자체가 꺼져 있으면 보안상 좋지 않으므로, 기본적으로 켜 두고 필요 포트만 허용하는 방향이 좋습니다.
6-2. 포트/서비스 허용과 설정 반영
http(80), https(443)와 같이 웹서비스에서 필수인 포트는 방화벽에 예외로 등록해야 합니다.
firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload
--permanent 옵션을 사용하면 설정이 영구 저장되고, firewall-cmd --reload로 실제 적용을 반영합니다. 서비스 단위(http, https) 허용은 포트 번호를 일일이 기억하지 않아도 돼서 관리가 훨씬 편합니다.
7. SELinux: 권한 문제의 숨은 원인
7-1. SELinux 상태 확인과 임시 변경
파일 권한, 소유자, 방화벽까지 다 맞는데도 접속이 안 되거나 403/500 에러가 나면 SELinux 설정을 의심해야 합니다.
getenforce setenforce 0 # 일시적으로 Permissive로 변경
getenforce로 현재 모드를 확인할 수 있고, setenforce 0으로 일시적으로 Permissive로 변경해 SELinux로 인한 문제인지 테스트해 볼 수 있습니다.
7-2. 영구 설정 변경
환경에 따라 SELinux를 완전히 끄기도 합니다. 이 경우 설정 파일을 직접 수정해야 합니다.
vi /etc/selinux/config SELINUX=disabled
설정을 변경한 뒤에는 시스템을 재부팅해야 적용됩니다. 다만, 보안을 고려하면 가능한 한 SELinux를 이해하고 적절히 설정해서 사용하는 것이 이상적입니다.
8. Apache(httpd)와 MariaDB 관리
8-1. Apache 설정 테스트와 서비스 제어
가상호스트 추가나 SSL 설정 변경 후에는 반드시 설정 문법 오류를 체크해야 합니다. 작은 오타 하나로 전체 웹서비스가 죽을 수 있기 때문입니다.
apachectl configtest systemctl restart httpd systemctl reload httpd
configtest에서 Syntax OK가 나오면 설정 파일이 기본 문법에 맞다는 뜻입니다. reload는 연결을 끊지 않고 설정만 다시 읽어들이고, restart는 서비스를 완전히 재시작합니다.
8-2. MariaDB 서비스와 접속, 백업·복구
DB 서버는 서비스 상태와 백업·복구 명령어를 반드시 숙지해두어야 합니다. 실수로 테이블을 삭제하거나 장애가 났을 때 생존 여부를 가르는 부분입니다.
systemctl start mariadb systemctl enable mariadb mysql -u root -p mysqldump -u root -p --all-databases > /backup/all_db_$(date +%F).sql mysql -u root -p < /backup/all_db_2025-11-24.sql
mysqldump는 논리 백업 도구로, 특정 DB만 백업할 수도 있고 전체를 백업할 수도 있습니다. 복구는 mysql 클라이언트에 리다이렉트로 sql 파일을 흘려 넣으면 됩니다.
9. SSL 인증서(Let’s Encrypt) 발급과 갱신
9-1. certbot 설치와 기본 발급
무료 SSL 인증서 발급을 위해 가장 많이 사용하는 도구가 certbot입니다. Apache 플러그인을 사용하면 가상호스트 설정까지 자동으로 잡아줍니다.
dnf install certbot python3-certbot-apache certbot --apache
도메인과 이메일 주소를 입력하면, 인증 파일 생성·검증·SSL 설정이 자동으로 이루어집니다. 이후에는 주기적으로 갱신 여부를 확인해야 합니다.
9-2. 인증서 갱신 테스트
Let’s Encrypt 인증서는 기본 유효기간이 90일이므로, 자동 갱신 설정과 테스트는 필수입니다.
certbot renew --dry-run
dry-run은 실제로 인증서를 바꾸지 않고 갱신 절차가 정상 동작하는지만 테스트합니다. 크론에 등록해 두면 만료로 인한 서비스 중단을 예방할 수 있습니다.
10. 로그 분석과 장애 대응
10-1. 시스템 및 웹 서버 로그 확인
문제가 생겼을 때 가장 먼저 가야 할 곳은 로그입니다. 로그만 제대로 볼 줄 알아도 장애 원인의 80%는 찾아낼 수 있습니다.
tail -f /var/log/messages tail -f /var/log/httpd/error_log tail -f /var/log/httpd/access_log
tail -f는 마지막 몇 줄을 실시간으로 모니터링할 때 사용합니다. 에러 상황에서 요청을 날려보고, 동시에 error_log를 관찰하면 문제 파악이 훨씬 쉬워집니다.
10-2. 리소스를 많이 쓰는 프로세스 찾기
CPU나 메모리가 이상하게 많이 사용될 때는 어떤 프로세스가 리소스를 잡아먹는지 바로 확인해야 합니다.
ps aux --sort=-%cpu | head ps aux --sort=-%mem | head
CPU 사용량 기준 상위 프로세스, 메모리 사용량 기준 상위 프로세스를 각각 빠르게 찾아내어, 해당 서비스의 설정을 조정하거나 재시작 등 조치를 취할 수 있습니다.
11. 백업과 크론(crontab)으로 자동화하기
11-1. crontab으로 정기 백업 설정
수동 백업만 믿다 보면 언젠가 꼭 실수합니다. 크론(cron)을 이용해 매일 새벽 자동 백업을 걸어두는 것이 안전합니다.
crontab -e crontab -l
예시: 매일 새벽 3시에 특정 DB를 백업하는 크론 설정입니다.
0 3 * * * /usr/bin/mysqldump -u root -p비밀번호 dbname > /backup/dbname_$(date +%F).sql
비밀번호를 직접 쓰는 방식은 보안상 권장되지는 않지만, 내부망·개인 서버에서는 편의상 사용하는 경우가 많습니다. 가능한 경우 전용 백업 계정을 만들고 권한을 제한하는 편이 좋습니다.
12. 필수 명령어 요약 체크리스트
12-1. 실무에서 자주 쓰는 명령어 한눈에 보기
마지막으로, 위에서 다룬 명령어 중 특히 자주 쓰는 것만 추려 체크리스트 형태로 정리하면 다음과 같습니다.
# 시스템 상태 top, htop, free -h, ps aux systemctl status/restart 서비스명 journalctl -u 서비스명 -n 100 # 네트워크 ip a, ip r, ss -tulpn ping, curl -I URL # 디스크·파일 df -h, du -sh 경로 find / -name "파일명" chown, chmod # 사용자·패키지 adduser, passwd, usermod -aG wheel dnf install/search/update/upgrade # 방화벽·SELinux firewall-cmd --permanent --add-service=http/https firewall-cmd --reload getenforce, setenforce 0 # 웹·DB·SSL apachectl configtest systemctl restart httpd mariadb mysqldump, mysql < 백업파일 certbot --apache certbot renew --dry-run
위 명령어들만 몸에 익어도 록키 리눅스 서버 운영에서 만나는 대부분의 기본 문제를 스스로 해결할 수 있습니다. 여기에 서버 보안 설정, 성능 튜닝, 모니터링 도구까지 더하면 하나의 완성된 운영 환경을 구성할 수 있습니다.