반응형
리눅스는(Linux)는 안정성과 유연성, 그리고 오픈 소스 기반이라는 특징으로 인해 서버 환경에서 많이 사용되는 운영체제입니다. 이 글에서는 Linux 서버 관리를 처음 시작하는 사람들을 위해 필요한 기본적인 내용을 다루겠습니다.
1. 리눅스 기본 구조 이해하기
리눅스 운영체제는 크게 커널(Kernel), 쉘(Shell), 파일 시스템(File System)으로 구성됩니다.
- 커널 (Kernel) : 하드웨어와 소프트웨어 간의 중간 역할을 하며, 시스템 자원을 관리합니다.
- 쉘 (Shell) : 사용자와 운영체제 간의 인터페이스를 제공합니다. 명령어를 입력하면 커널에 전달하고, 결과를 출력합니다. 대표적인 쉘로는 Bash, Zsh, Fish 등이 있습니다.
- 파일 시스템 (File System) : 리눅스는 모든 것을 파일로 취급합니다. 디렉토리 구조는 루트 디렉토리(/)를 기반으로 하며 /home, /var, /etc, /usr와 같은 주요 디렉토리가 있습니다.
2. 리눅스 설치 및 초기 설정
- 배포판 선택 : 리눅스는 다양한 배포판이 있습니다. 서버 용도로는 다음과 같은 배포판이 많이 사용됩니다.
- Ubuntu Server : 사용자 친화적이며 커뮤니티 지원이 활발합니다.
- CentOS / Rocky Linux : 안정성과 장기 지원이 필요할 때 적합합니다.
- Debian : 안정성과 보안에 중점을 둡니다.
- 설치 과정
- ISO 파일 다운로드 후 부팅 가능한 USB 또는 DVD 생성
- 서버에 설치
- 네트워크 설정 및 초기 계정 생성
- 초기 설정
- 업데이트 : 설치 후 항상 패키지를 업데이트 합니다.
- 네트워크 설정 : 고정 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. 파일 및 디렉토리 관리
- 디렉토리 명령어
- 현재 디렉토리 확인 : pwd
- 디렉토리 이동 : cd [경로]
- 디렉토리 목록 확인 : ls, ls -l
- 파일 관리 명령어
- 파일 생성 : touch filename
- 파일 복사 : cp source detination
- 파일 이동/이름 변경 : mv source destination
- 파일 삭제 : rm filename
- 파일 내용 보기 : cat, less, more
- 권한 설정 : 리눅스는 파일과 디렉토리의 읽기(Read), 쓰기(Write), 실행(Execute) 권한을 제공합니다.
# 권한 변경 : chmod
chmod 755 filename
# 소유자 변경 : chown
chown user:group filename
4. 서비스 관리
- 서비스 확인 및 관리
- 서비스 상태 확인 : systemctl status service-name
- 서비스 시작 : systemctl start service-name
- 서비스 중지 : systemctl stop service-name
- 부팅 시 자동 실행 설정 : systemctl enable service-name
- 로그 확인
- 시스템 로그는 문제 해결에 중요한 정보를 제공합니다.
- 로그 확인 명령어 : 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. 시스템 모니터링
- 리소스 사용량 확인
- CPU 및 메모리 : top, htop
- 디스크 사용량 : df -h
- 특정 파일/디렉토리 용량 확인 : du -sh directory
- 시스템 성능 모니터링 도구
- sar, iostat, vmstat 등의 명령어 활용
- Grafana 및 Prometheus 같은 모티너링 솔루션
9. 보안 강화
- 사용자 계정 보안
- 루트 계정 비활성화 및 sudo 사용자 활용
- 비밀번호 정책 설정 (예 : 복잡성, 만료 주기)
- 데이터 암호화
- 파일 암호화 : gpg
- 디스크 암호화 : LUKS(Linux Unified Key Setup)
- 로그 관리
- 정기적으로 로그를 확인하고 이상 징후 탐지
반응형
'프로그래밍' 카테고리의 다른 글
서버 부하 테스트 도구 및 사용법 (2) | 2024.12.19 |
---|---|
HTTPS와 SSL/TLS 작동 원리 (2) | 2024.12.16 |
데이터베이스 샤딩과 파티셔닝(Sharding & Partitioning) (3) | 2024.12.13 |
Secure Coding : 보안 코딩 기법 (2) | 2024.12.12 |
IoT(사물인터넷) 프로그래밍 : MQTT 활용 (2) | 2024.12.11 |