Post

AWS 리눅스 초기설정

AWS 리눅스 초기설정

시작하기 전

회사에서 AWS 서버를 하나 만들어달라 하였다. 서버를 만들면서

  • 로그 저장용 파티션 생성
  • 계정 생성 및 sudo권한 부여
  • 패스워드 로그인 활성화
  • 백업용 이미지 생성

등의 과정을 진행했는데, 이를 글로 남겨놓는 게 좋을 것 같다. 매뉴얼로 써먹기 좋으니..

참고로 작년 11월 장렬하게 선언했다 사라져버린 봄링크 프로젝트는 얼마 전부터 다시 하고 있다. WEB-WAS-DB의 3티어 구성으로 만들어 웹 출력까지 완료했긴 한데…빨리 2편을 작성해야겠다.


AWS 인스턴스 생성 후 절차

AWS 인스턴스 생성 절차는 건너뛰겠다. 이는 회사별/프로젝트 별로 다를 수 있기 때문에…
다만 테스트용으로 생성하려면 1년 동안 요금 면제인 t2.micro 사용을 강력 권장한다.

본 글에서 사용한 인스턴스는
t2.micro
Amazon Linux
/dev/sda 8GB, /dev/sdb 10GB 볼륨
커스텀 VPC/서브넷/보안그룹(본 IP만 접속가능하도록)
사양으로 진행하였다.

서버 접속

AWS 서버를 생성하면 기본적으로 사용자 이름을 통한 로그인이 불가능하다.
(학부 프로젝트에서 겪었던 사항인데, 이를 또 까먹어버렸다…)

맨 처음 프로젝트를 생성하면 pem키를 사용하여 접속해야 한다.
물론 root 로그인도 안되고, 기본 계정인 ec2-user만 사용할 수 있다.

콘솔창에서

1
ssh -i (pem키의 위치) ec2-user@(인스턴스 IP)

이렇게 입력해야 서버 접속이 된다. 서버에 들어와야 루트로 전환할 수 있다.

사용자 생성

기본 ec2-user로 서버를 사용할 게 아니기 때문에, 새로운 사용자를 만들어주자.

1
2
3
4
# -m은 사용자 디렉토리까지 함께 생성
sudo useradd -m (사용자이름)
# 비밀번호 생성
sudo passwd (사용자이름)

리눅스에서 sudo 명령어를 사용하기 위해서는 사용자를 wheel 그룹에 등록해야 한다.
왜 하필 그룹명이 wheel이라면 조타륜(操舵輪)이라는 뜻이 있기 때문이라나..?

1
2
3
4
# wheel 그룹에 사용자를 추가하여 수도권한 부여
sudo gpasswd -a (사용자) wheel
# 생성한 사용자로 로그인- su - 하면 해당 사용자 환경변수(홈디렉토리 포함) 사용
su - (사용자)

패스워드 로그인 활성화

이제 리눅스 패스워드 로그인을 활성화시켜주자.
생각보다 간단한 게, ssh 연결을 담당하는 sshd의 설정 한 줄을 건드리기만 하면 된다.

1
2
3
sudo vi /etc/ssh/sshd_config
# PassAuthemtication 을 yes로 변경: 주석처리 되어있으면 해제
sudo systemctl restart sshd


sshd를 재기동 해주는 것 잊지 말자.
이제 ssh 사용자@서버 IP 만 입력해도 비밀번호로 로그인 할 수 있다!

lvm 구성

/dev/sdb 파티션에 lvm을 만들어 마운트 하는 과정이다.
디스크를 새로 장착하면 꼭 하는 중요 작업이므로 기억해 두자.

리눅스에서 디스크 마운팅은 파티션 생성→물리 볼륨→볼륨 그룹→논리 볼륨→마운트 순으로 진행된다.

물론 논리 볼륨까지 가지 않아도 마운트 할 수 있으나, 논리 볼륨의 장점은 볼륨 용량을 자유자재로 조절할 수 있다는 것이다.

예를 들면 볼륨의 용량이 꽉 차 증설이 필요한 상황인데,
논리 볼륨을 사용하면 새로운 디스크를 볼륨그룹에 추가하여 그룹 전체용량을 늘린 다음, 논리 볼륨의 용량을 그만큼 확장하면 끝난다!
여러 개의 디스크를 하나처럼 사용할 수 있고, 그 반대도 마찬가지이다.

디스크에 파티션을 생성하기 위해서는 fdisk라는 기능을 사용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo fdisk /dev/xvdb
# 마운트정보 보기
p
# GPT 디스크 변환: 반드시 파티션 생성 전 실행(데이터 삭제)
g
# 새 파티션 생성: 기본값은 /dev/xvdb1
n
# 파티션 타잎 변환
t
# 30-LVM 타잎
30
# 파티션 저장
w
# 전체 디스크 fdisk p 해보기: /dev/xvdb1 파티션 생성 확인
fdisk -l

1
2
3
4
5
6
7
8
# pv/vg/lv 작업을 위해 lvm2 설치
sudo yum install -y lvm2
# /dev/xvdb1 파티션에 물리볼륨 생성: pvs로 확인
sudo pvcreate /dev/xvdb1
# 볼륨그룹 생성: vgs로 확인
sudo vgcreate (볼륨그룹명) /dev/xvdb1
# 논리 볼륨 생성: --extents 100%FREE 대신 --size 10G로 구체적인 수치 입력 가능
sudo lvcreate --extents 100%FREE --name (볼륨명) (볼륨그룹명)

생성된 논리 볼륨의 위치는 /dev/(볼륨그룹명)/(논리볼륨명) 에 있다.
다만 이 위치를 그대로 써먹기보다는 마운트를 해서 그 디렉토리를 사용한다.
마운트는 볼륨을 디렉토리에 연결하는 작업이다. 쉽게 말해서 윈도우에서 디스크를 연결했을 때 D드라이브 E드라이브 이렇게 할당되는 것인데, 리눅스는 이를 수동으로 해 줘야 한다.

마운트를 하기 전, 아니 볼륨을 만드면 꼭 파일 시스템을 생성해주자.
윈도우의 포맷과 비슷한 의미로, 리눅스에서는 NTFS/FAT32 대신 ext4/xfs를 사용한다.

1
2
3
4
5
6
7
# 파일시스템 생성: xfs 또는 ext4 권장
sudo mkfs -t xfs /dev/myvg/mylv
# 마운트
sudo mkdir /mount
sudo mount /dev/myvg/mylv /mount
# 확인
df -h

AWS 이미지 백업

이렇게 초기 셋팅이 끝나면 이 서버를 이미지로 백업해놓는 것이 중요하다.
지금은 간단한 작업만 해서 그렇지, 복잡한 쿠버네틱스 셋팅 등을 기껏 해놨는데 날아가면 어떻게 처음부터 다시 할 것인가.

  • AWS 인스턴스 콘솔에서 서버를 선택한 다음 인스턴스 상태→인스턴스 중지로 서버를 종료한다.
  • 인스턴스→작업→이미지 및 템플릿→이미지 생성으로 서버를 AMI 이미지로 변환한다.
  • 이미지 생성 옵션에서 재부팅 안 함, 종료 시 삭제 옵션을 선택할 수 있다.
    재부팅 안 함은 이미지를 생성할 때 원본 서버를 재부팅하지 않겠다는 말이고,
    종료 시 삭제는 서버를 삭제했을 때 볼륨도 같이 삭제하겠다는 의미이다.

이렇게 AMI 이미지를 생성하면 AMI 탭에서 확인할 수 있다.

볼륨 복원

서버(인스턴스)의 특정 볼륨(주로 /dev/sda)가 죽었을 경우, 이미지를 사용해 복원할 수 있다.

  • 인스턴스 선택→스토리지→복원할 볼륨 ID 선택→작업→볼륨 분리 순으로 클릭한다.

  • 스냅샷 탭에서 위에서 생성한 AMI의 볼륨 정보를 확인할 수 있다.
    선택한 뒤 작업→스냅샷에서 볼륨 생성 클릭→원하는 사양 입력 후 볼륨을 생성한다.
  • 볼륨 탭에서 스냅샷으로 생성한 볼륨을 확인한 뒤, 이 볼륨을 복원할 인스턴스에 연결한다.

이러면 이미지를 사용한 볼륨을 복원이 끝난다!

This post is licensed under CC BY 4.0 by the author.