서비스 관리 명령어 가이드

작성일: 2025년 9월 3일
시스템: RHEL 8.9

1. 현재 실행 중인 서비스 상태

1.1 서비스 현황

  • Apache HTTP Server (httpd): ✅ 실행 중 (active running)
  • MySQL 8.0 (mysqld): ✅ 실행 중 (active running)
  • PHP-FPM (php-fpm): ✅ 실행 중 (active running)

1.2 서비스 정보

  • Apache: 3,151개 요청 처리, 100개 워커 프로세스, 67.7MB 메모리 사용
  • MySQL: 833.9MB 메모리 사용, 43개 태스크
  • PHP-FPM: 6개 아이들 프로세스, 72개 요청 처리, 154.3MB 메모리 사용

2. 서비스 상태 확인 명령어

2.1 개별 서비스 상태 확인

# Apache 상태 확인
sudo systemctl status httpd
 
# MySQL 상태 확인
sudo systemctl status mysqld
 
# PHP-FPM 상태 확인
sudo systemctl status php-fpm

2.2 모든 서비스 상태 확인

# 모든 서비스 상태 확인
sudo systemctl status httpd mysqld php-fpm
 
# 실행 중인 서비스만 확인
sudo systemctl list-units --type=service --state=running | grep -E "(httpd|mysqld|php-fpm)"

3. 서비스 중지 명령어

3.1 개별 서비스 중지

# Apache 중지
sudo systemctl stop httpd
 
# MySQL 중지
sudo systemctl stop mysqld
 
# PHP-FPM 중지
sudo systemctl stop php-fpm

3.2 모든 웹 서비스 중지

# 모든 웹 서비스 한 번에 중지
sudo systemctl stop httpd mysqld php-fpm
 
# 또는 순서대로 중지 (권장)
sudo systemctl stop httpd    # Apache 먼저 중지
sudo systemctl stop php-fpm  # PHP-FPM 중지
sudo systemctl stop mysqld   # MySQL 마지막에 중지

3.3 강제 중지 (비상시)

# 강제 중지 (kill 명령어 사용)
sudo pkill -f httpd
sudo pkill -f mysqld
sudo pkill -f php-fpm
 
# 또는 PID로 직접 종료
sudo kill -9 [PID번호]

4. 서비스 시작 명령어

4.1 개별 서비스 시작

# MySQL 시작 (먼저 시작)
sudo systemctl start mysqld
 
# PHP-FPM 시작
sudo systemctl start php-fpm
 
# Apache 시작 (마지막에 시작)
sudo systemctl start httpd

4.2 모든 웹 서비스 시작

# 모든 웹 서비스 한 번에 시작
sudo systemctl start mysqld php-fpm httpd
 
# 또는 순서대로 시작 (권장)
sudo systemctl start mysqld   # MySQL 먼저 시작
sudo systemctl start php-fpm  # PHP-FPM 시작
sudo systemctl start httpd    # Apache 마지막에 시작

5. 서비스 재시작 명령어

5.1 개별 서비스 재시작

# Apache 재시작
sudo systemctl restart httpd
 
# MySQL 재시작
sudo systemctl restart mysqld
 
# PHP-FPM 재시작
sudo systemctl restart php-fpm

5.2 모든 웹 서비스 재시작

# 모든 웹 서비스 한 번에 재시작
sudo systemctl restart mysqld php-fpm httpd
 
# 또는 순서대로 재시작 (권장)
sudo systemctl restart mysqld   # MySQL 먼저 재시작
sudo systemctl restart php-fpm  # PHP-FPM 재시작
sudo systemctl restart httpd    # Apache 마지막에 재시작

5.3 설정 리로드 (서비스 중지 없이)

# Apache 설정 리로드
sudo systemctl reload httpd
 
# PHP-FPM 설정 리로드
sudo systemctl reload php-fpm
 
# MySQL은 설정 변경 시 재시작 필요

6. 서비스 자동 시작 설정

6.1 부팅 시 자동 시작 설정

# 자동 시작 활성화
sudo systemctl enable httpd
sudo systemctl enable mysqld
sudo systemctl enable php-fpm

6.2 자동 시작 해제

# 자동 시작 비활성화
sudo systemctl disable httpd
sudo systemctl disable mysqld
sudo systemctl disable php-fpm

6.3 현재 자동 시작 상태 확인

# 자동 시작 상태 확인
sudo systemctl is-enabled httpd
sudo systemctl is-enabled mysqld
sudo systemctl is-enabled php-fpm

7. 서비스 로그 확인

7.1 실시간 로그 모니터링

# Apache 로그 실시간 확인
sudo journalctl -u httpd -f
 
# MySQL 로그 실시간 확인
sudo journalctl -u mysqld -f
 
# PHP-FPM 로그 실시간 확인
sudo journalctl -u php-fpm -f

7.2 로그 파일 직접 확인

# Apache 로그
sudo tail -f /var/log/httpd/error_log
sudo tail -f /var/log/httpd/access_log
 
# MySQL 로그
sudo tail -f /var/log/mysqld.log
 
# PHP-FPM 로그
sudo tail -f /var/log/php-fpm/www-error.log

8. 서비스 관리 스크립트

8.1 모든 웹 서비스 중지 스크립트

#!/bin/bash
# stop_web_services.sh
 
echo "웹 서비스 중지 중..."
 
# Apache 중지
echo "Apache 중지 중..."
sudo systemctl stop httpd
 
# PHP-FPM 중지
echo "PHP-FPM 중지 중..."
sudo systemctl stop php-fpm
 
# MySQL 중지
echo "MySQL 중지 중..."
sudo systemctl stop mysqld
 
echo "모든 웹 서비스가 중지되었습니다."

8.2 모든 웹 서비스 시작 스크립트

#!/bin/bash
# start_web_services.sh
 
echo "웹 서비스 시작 중..."
 
# MySQL 시작
echo "MySQL 시작 중..."
sudo systemctl start mysqld
 
# 잠시 대기
sleep 3
 
# PHP-FPM 시작
echo "PHP-FPM 시작 중..."
sudo systemctl start php-fpm
 
# Apache 시작
echo "Apache 시작 중..."
sudo systemctl start httpd
 
echo "모든 웹 서비스가 시작되었습니다."

8.3 모든 웹 서비스 재시작 스크립트

#!/bin/bash
# restart_web_services.sh
 
echo "웹 서비스 재시작 중..."
 
# 모든 서비스 중지
sudo systemctl stop httpd php-fpm mysqld
 
# 잠시 대기
sleep 2
 
# 모든 서비스 시작
sudo systemctl start mysqld php-fpm httpd
 
echo "모든 웹 서비스가 재시작되었습니다."

9. 서비스 상태 확인 스크립트

9.1 서비스 상태 요약 스크립트

#!/bin/bash
# check_web_services.sh
 
echo "=== 웹 서비스 상태 확인 ==="
echo
 
# Apache 상태
echo "Apache HTTP Server:"
sudo systemctl is-active httpd
sudo systemctl is-enabled httpd
echo
 
# MySQL 상태
echo "MySQL Database:"
sudo systemctl is-active mysqld
sudo systemctl is-enabled mysqld
echo
 
# PHP-FPM 상태
echo "PHP-FPM:"
sudo systemctl is-active php-fpm
sudo systemctl is-enabled php-fpm
echo
 
echo "=== 메모리 사용량 ==="
free -h
echo
 
echo "=== 포트 사용 확인 ==="
sudo netstat -tlnp | grep -E ":80|:3306"

10. 문제 해결

10.1 서비스가 시작되지 않는 경우

# 상세한 오류 로그 확인
sudo journalctl -u httpd -l
sudo journalctl -u mysqld -l
sudo journalctl -u php-fpm -l
 
# 설정 파일 문법 확인
sudo apachectl configtest
sudo php-fpm -t

10.2 포트 충돌 확인

# 포트 사용 확인
sudo netstat -tlnp | grep :80
sudo netstat -tlnp | grep :3306
 
# 프로세스 확인
sudo ps aux | grep httpd
sudo ps aux | grep mysqld
sudo ps aux | grep php-fpm

10.3 권한 문제 확인

# 파일 권한 확인
ls -la /var/www/html/
ls -la /var/lib/mysql/
 
# SELinux 상태 확인
sudo getenforce

11. 권장 서비스 관리 순서

11.1 서비스 시작 순서 (권장)

  1. MySQL → 2. PHP-FPM → 3. Apache

11.2 서비스 중지 순서 (권장)

  1. Apache → 2. PHP-FPM → 3. MySQL

11.3 서비스 재시작 순서 (권장)

  1. MySQL → 2. PHP-FPM → 3. Apache

12. 빠른 명령어 요약

12.1 자주 사용하는 명령어

# 상태 확인
sudo systemctl status httpd mysqld php-fpm
 
# 모든 서비스 중지
sudo systemctl stop httpd php-fpm mysqld
 
# 모든 서비스 시작
sudo systemctl start mysqld php-fpm httpd
 
# 모든 서비스 재시작
sudo systemctl restart mysqld php-fpm httpd
 
# 자동 시작 설정
sudo systemctl enable httpd mysqld php-fpm

현재 모든 웹 서비스가 정상적으로 실행 중입니다.
위의 명령어들을 사용하여 서비스를 관리하실 수 있습니다.