본문 바로가기
프로그래밍

Linux 서버 관리 기본

by 이음코드 2024. 12. 15.
반응형

리눅스는(Linux)는 안정성과 유연성, 그리고 오픈 소스 기반이라는 특징으로 인해 서버 환경에서 많이 사용되는 운영체제입니다. 이 글에서는 Linux 서버 관리를 처음 시작하는 사람들을 위해 필요한 기본적인 내용을 다루겠습니다.


1. 리눅스 기본 구조 이해하기

리눅스 운영체제는 크게 커널(Kernel), 쉘(Shell), 파일 시스템(File System)으로 구성됩니다.

  • 커널 (Kernel) : 하드웨어와 소프트웨어 간의 중간 역할을 하며, 시스템 자원을 관리합니다.
  • 쉘 (Shell) : 사용자와 운영체제 간의 인터페이스를 제공합니다. 명령어를 입력하면 커널에 전달하고, 결과를 출력합니다. 대표적인 쉘로는 Bash, Zsh, Fish 등이 있습니다.
  • 파일 시스템 (File System) : 리눅스는 모든 것을 파일로 취급합니다. 디렉토리 구조는 루트 디렉토리(/)를 기반으로 하며 /home, /var, /etc, /usr와 같은 주요 디렉토리가 있습니다.

2. 리눅스 설치 및 초기 설정

  1. 배포판 선택 : 리눅스는 다양한 배포판이 있습니다. 서버 용도로는 다음과 같은 배포판이 많이 사용됩니다.
    • Ubuntu Server : 사용자 친화적이며 커뮤니티 지원이 활발합니다.
    • CentOS / Rocky Linux : 안정성과 장기 지원이 필요할 때 적합합니다.
    • Debian : 안정성과 보안에 중점을 둡니다.
  2. 설치 과정
    • ISO 파일 다운로드 후 부팅 가능한 USB 또는 DVD 생성
    • 서버에 설치
    • 네트워크 설정 및 초기 계정 생성
  3. 초기 설정
    • 업데이트 : 설치 후 항상 패키지를 업데이트 합니다.
    • 네트워크 설정 : 고정 IP 설정 및 DNS 확인
    • 사용자 계정 설정 : 루트 계정 대신 일반 사용자 계정을 생성하고 필요시  sudo 권한 부여
# 업데이트
sudo apt update && sudo apt upgrade -y  # Debian/Ubuntu 계열
sudo yum update -y                     # CentOS/RHEL 계열
# 사용자 계정 생성
adduser username
usermod -aG sudo username

 

3. 파일 및 디렉토리 관리

  1. 디렉토리 명령어
    • 현재 디렉토리 확인 : pwd
    • 디렉토리 이동 : cd [경로]
    • 디렉토리 목록 확인 : ls, ls -l
  2. 파일 관리 명령어
    • 파일 생성 : touch filename
    • 파일 복사 : cp source detination
    • 파일 이동/이름 변경 : mv source destination
    • 파일 삭제 : rm filename
    • 파일 내용 보기 : cat, less, more
  3. 권한 설정 : 리눅스는 파일과 디렉토리의 읽기(Read), 쓰기(Write), 실행(Execute) 권한을 제공합니다.
# 권한 변경 : chmod
chmod 755 filename
# 소유자 변경 : chown
chown user:group filename

 

4. 서비스 관리

  1. 서비스 확인 및 관리
    • 서비스 상태 확인 : systemctl status service-name
    • 서비스 시작 : systemctl start service-name
    • 서비스 중지 : systemctl stop service-name
    • 부팅 시 자동 실행 설정 : systemctl enable service-name
  2. 로그 확인
    • 시스템 로그는 문제 해결에 중요한 정보를 제공합니다.
    • 로그 확인 명령어 : journalctl, cat /var/log/syslog, tail -f /var/log/messages

5.네트워크 설정 및 관리

  • 네트워크 상태 확인
    • IP주소 확인 : ip addr 또는 ifconfig
    • 네트워크 연결 상태 확인 : ping, netstat
  • 방화벽 설정
# ufw(Ubuntu)
sudo ufw enable
sudo ufw allow ssh

# firewalld(CentOS)
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
  • SSH 설정
# SSH 설치 및 서비스 시작
sudo apt install openssh-server  # Ubuntu
sudo systemctl enable ssh
sudo systemctl start ssh

# 원격 접속 보안 강화를 위해 포트 변경 및 비밀번호 인증 비활성화

 

6. 패키지 관리

  • 패키지 설치 및 제거
# Debian/Ubuntu 계열 : apt 사용
sudo apt install package-name
sudo apt remove package-name

# CentOS/RHEL 계열 : yum 또는 dnf 사용
sudo yum install package-name
sudo yum remove package-name
  • 패키지 검색
    • apt search package-name
    • yum search package-name

7. 백업 및 복구

  • 백업 도구
# rsync : 효율적인 파일 동기화 및 백업 도구
rsync -avz /source/directory /backup/directory

# tar : 파일을 아카이브하고 압축
tar -cvzf backup.tar.gz /directory/to/backup
  • 자동화
# cron 을 활용해 정기 백업 스크립트 작성
crontab -e
0 2 * * * /path/to/backup-script.sh

 

8. 시스템 모니터링

  1. 리소스 사용량 확인
    • CPU 및 메모리 : top, htop
    • 디스크 사용량 : df -h
    • 특정 파일/디렉토리 용량 확인 : du -sh directory
  2. 시스템 성능 모니터링 도구
    • sar, iostat, vmstat 등의 명령어 활용
    • Grafana 및 Prometheus 같은 모티너링 솔루션

9. 보안 강화

  1. 사용자 계정 보안
    • 루트 계정 비활성화 및 sudo 사용자 활용
    • 비밀번호 정책 설정 (예 : 복잡성, 만료 주기)
  2. 데이터 암호화
    • 파일 암호화 : gpg
    • 디스크 암호화 : LUKS(Linux Unified Key Setup)
  3. 로그 관리
    • 정기적으로 로그를 확인하고 이상 징후 탐지
반응형