서버용 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 권장 사양

학습용 서버라면 아래 정도면 대부분의 기본 실습을 진행할 수 있다.

자원기준
CPU2 vCPU 이상
Memory2 GB 최소, 서비스 실습은 4 GB 이상
Disk40 GB 이상
NIC실습망과 외부망 분리가 필요하면 2개

3. 파티션 예시

자동 파티션도 가능하지만 서버 실습에서는 mount point를 분리해서 보는 편이 좋다.

Mount예시 크기비고
/boot1 GiB커널과 initramfs
/boot/efi600 MiBUEFI 환경
/20 GiB 이상OS 기본 영역
/var10 GiB 이상로그와 패키지 cache
/home필요 시사용자 데이터
swap메모리와 용도에 맞게hibernation 목적이 아니면 과도하게 잡지 않음

4. 설치 화면에서 선택할 것

  1. Installation Destination: 대상 디스크와 파티션 방식을 확정한다.
  2. Software Selection: 서버 실습이면 Minimal Install 또는 Server를 선택한다.
  3. Network & Host Name: NIC를 켜고 static IP, gateway, DNS를 입력한다.
  4. Time & Date: Asia/Seoul 또는 운영 기준 timezone을 선택하고 NTP를 켠다.
  5. 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 -h

6. 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.conf

7. 패키지 업데이트와 기본 도구

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 -v

8. 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 sshd

9. SELinux와 firewalld 상태

getenforce
sestatus

sudo systemctl enable --now firewalld
firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --list-all

SELinux를 무조건 끄고 시작하는 습관은 피한다. 서비스가 막힐 때는 audit log를 보고 필요한 context나 boolean을 조정하는 방식이 낫다.

sudo ausearch -m AVC,USER_AVC -ts recent
sudo journalctl -t setroubleshoot --since "1 hour ago" --no-pager

10. 설치 상태 기록

서버 설치가 끝나면 나중에 원인 분석이 가능하도록 최소한의 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/null

11. 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 같은 서비스 실습에서도 원인 분리가 쉬워진다.

문서 링크

BGM EVER