서버용 Linux 설치 가이드
서버용 Linux 설치 가이드입니다. RHEL 계열 최소 설치, 파티션, static IP, 업데이트, SSH, SELinux, firewalld, 설치 기록 절차를 정리했습니다.
서버용 Linux 설치 가이드: RHEL 계열 최소 설치와 초기 점검
서버용 Linux 설치는 데스크톱 설치와 목표가 다르다. GUI 편의성보다 예측 가능한 네트워크, 디스크 파티션, 최소 패키지, 원격 접속, 시간 동기화, 업데이트 정책이 중요하다. RHEL/Rocky/Alma 계열 서버를 lab VM 또는 물리 서버에 설치할 때 필요한 판단 기준과 설치 후 명령어를 정리한다.
설치 전 준비, Anaconda 설치 화면 선택, 설치 후 검증 순서까지 한 번에 확인한다.
1. 설치 전 결정할 항목
| 항목 | 권장 판단 |
|---|---|
| ISO | 오프라인 lab이면 DVD/Minimal ISO, 네트워크 mirror가 안정적이면 Boot ISO |
| 펌웨어 | 신규 서버는 UEFI, 기존 호환 목적이면 BIOS 확인 |
| 설치 유형 | Server 또는 Minimal Install |
| 스토리지 | LVM 사용, OS와 data 영역 분리 |
| 네트워크 | 서버는 static IP 권장 |
| 보안 정책 | SELinux enforcing 유지, 필요한 port만 firewalld에서 개방 |
2. VM 권장 사양
학습용 서버라면 아래 정도면 대부분의 기본 실습을 진행할 수 있다.
| 자원 | 기준 |
|---|---|
| CPU | 2 vCPU 이상 |
| Memory | 2 GB 최소, 서비스 실습은 4 GB 이상 |
| Disk | 40 GB 이상 |
| NIC | 실습망과 외부망 분리가 필요하면 2개 |
3. 파티션 예시
자동 파티션도 가능하지만 서버 실습에서는 mount point를 분리해서 보는 편이 좋다.
| Mount | 예시 크기 | 비고 |
|---|---|---|
/boot | 1 GiB | 커널과 initramfs |
/boot/efi | 600 MiB | UEFI 환경 |
/ | 20 GiB 이상 | OS 기본 영역 |
/var | 10 GiB 이상 | 로그와 패키지 cache |
/home | 필요 시 | 사용자 데이터 |
swap | 메모리와 용도에 맞게 | hibernation 목적이 아니면 과도하게 잡지 않음 |
4. 설치 화면에서 선택할 것
- Installation Destination: 대상 디스크와 파티션 방식을 확정한다.
- Software Selection: 서버 실습이면
Minimal Install또는Server를 선택한다. - Network & Host Name: NIC를 켜고 static IP, gateway, DNS를 입력한다.
- Time & Date: Asia/Seoul 또는 운영 기준 timezone을 선택하고 NTP를 켠다.
- Root Password / User Creation: root 직접 로그인보다 sudo 사용자 생성을 권장한다.
5. 설치 직후 기본 정보 확인
cat /etc/os-release
hostnamectl
timedatectl
ip -br addr
ip route
nmcli con show
df -hT
lsblk -f
free -h6. hostname과 네트워크 고정
sudo hostnamectl set-hostname server01.lab.local
CON_NAME="System ens33"
sudo nmcli con mod "${CON_NAME}" ipv4.method manual
sudo nmcli con mod "${CON_NAME}" ipv4.addresses 192.168.10.10/24
sudo nmcli con mod "${CON_NAME}" ipv4.gateway 192.168.10.1
sudo nmcli con mod "${CON_NAME}" ipv4.dns "192.168.10.192 1.1.1.1"
sudo nmcli con up "${CON_NAME}"
ip -br addr
resolvectl status 2>/dev/null || cat /etc/resolv.conf7. 패키지 업데이트와 기본 도구
sudo dnf clean all
sudo dnf makecache
sudo dnf update -y
sudo dnf install -y vim-enhanced bash-completion curl wget tar rsync lsof bind-utils net-tools policycoreutils-python-utils chrony
sudo systemctl enable --now chronyd
chronyc sources -v8. SSH 원격 접속 준비
설치 직후에는 SSH daemon 상태와 방화벽을 확인한다. root password 로그인 허용 여부는 운영 정책에 맞춰 제한한다.
sudo systemctl enable --now sshd
sudo systemctl status sshd --no-pager
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services설정 변경 전후에는 반드시 문법 검사를 한다.
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d%H%M%S)
sudo sshd -t
sudo systemctl reload sshd9. SELinux와 firewalld 상태
getenforce
sestatus
sudo systemctl enable --now firewalld
firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --list-allSELinux를 무조건 끄고 시작하는 습관은 피한다. 서비스가 막힐 때는 audit log를 보고 필요한 context나 boolean을 조정하는 방식이 낫다.
sudo ausearch -m AVC,USER_AVC -ts recent
sudo journalctl -t setroubleshoot --since "1 hour ago" --no-pager10. 설치 상태 기록
서버 설치가 끝나면 나중에 원인 분석이 가능하도록 최소한의 inventory를 남긴다.
sudo mkdir -p /root/install-record
{
date
cat /etc/os-release
hostnamectl
ip -br addr
ip route
lsblk -f
df -hT
rpm -qa | sort
} | sudo tee /root/install-record/server-baseline.txt >/dev/null11. Kickstart로 반복 설치할 때
같은 구성을 여러 번 설치해야 한다면 Kickstart를 사용한다. 아래는 구조를 보여주는 최소 예시이며, 실제 password hash와 repository는 환경에 맞게 별도로 준비한다.
text
lang ko_KR.UTF-8
keyboard us
timezone Asia/Seoul --utc
network --bootproto=static --device=link --ip=192.168.10.10 --netmask=255.255.255.0 --gateway=192.168.10.1 --nameserver=192.168.10.192 --hostname=server01.lab.local
selinux --enforcing
firewall --enabled --service=ssh
services --enabled=sshd,chronyd
reboot
%packages
@^minimal-environment
vim-enhanced
curl
wget
bind-utils
chrony
%end마무리
서버용 Linux 설치의 완성 기준은 설치 화면을 끝내는 것이 아니라, 재부팅 후 네트워크, 시간, 패키지 업데이트, 원격 접속, 방화벽, SELinux, 디스크 구조가 의도대로 동작하는지 검증하는 것이다. 이 기준을 설치 직후부터 일정하게 잡아두면 이후 Apache, DNS, DHCP, DB 같은 서비스 실습에서도 원인 분리가 쉬워진다.