제품 구매에 이어 OS 설치 및 기본 환경을 설정한다.
Ubuntu 18.04 LTS 설치
라즈베리 파이에서 공식적으로 지원하는 OS는 라즈비안이지만 기본 유틸 사용법이나 커뮤니티 등 개인적으로 친숙한 우분투를 선택했다. 다음 링크에서 바로 다운받을 수 있는데
Ubuntu 18.04.4 LTS for Raspberry Pi 4 다운로드 링크
http://cdimage.ubuntu.com/releases/18.04.4/release/ubuntu-18.04.4-preinstalled-server-arm64+raspi3.img.xz
위 링크가 만료가 되었다거나 다른 버전의 이미지를 다운받고자 하는 경우 공식 우분투 홈페이지를 참고한다.
Ubuntu Pi
https://ubuntu.com/download/raspberry-pi
이미지는 win32diskimager
를 이용해서 구웠다. 라즈베리 파이는 조립 PC와는 다르게 모든 제품이 균일하게 만들어져 나오는 제품이기 때문에 preinstalled OS를 띄우더라도 최적화가 다 되어있는 것 같다. 라즈베리 파이 교육용 키트를 구매하면 Micro SD 카드와 Micro SD 카드 리더가 패키지 내에 포함돼 있기때문에 각개로 구매하는 것보다 패키지로 구매하는게 좀 더 좋은 것 같다.
OS 설치가 끝났으면 MAC Address 를 찾아내서 공유기에 해당 MAC Address 에 고정 IP 를 할당해주는 것이 좋다. OS 단계에서 고정 IP 를 설정하는 방법도 있지만 이 방법은 어쨋든 라즈베리 파이에 OS 를 재설치 하게 되면 매번 새로 설정을 해줘야하는 번거로움 있다. 공유기나 스위치 단계에서 고정 IP를 할당해버리면 OS를 재설치하더라도 랜선만 연결돼 있다면 ssh 로 바로 접근할 수 있다. 서버 구축은 하나씩 진행하다가 사소한 부분이라도 망치면 뭔가 찝찝하고 처음부터 다시 하고싶은 욕구가 생기게 되는데 그때마다 모니터와 키보드를 연하는 수고로움을 덜기 위해 가장 먼저 설정한다.
ipTIME 공유기 고정 IP 설정
ubuntu 를 설치했다면 기본 계정인 id:password = ubuntu:ubuntu
로 로그인할 수 있고 쉘에 접근한 뒤 ifconfig
명령으로 MAC Address 를 확인할 수 있다.
ipTIME 공유기의 경우 다음과 같이 관리자 페이지에서 MAC Address 별로 고정 IP 를 할당시킬 수 있는데, 이렇게 하고 나면 라즈베리 파이 머신에 직접 입출력 장치를 주렁주렁 달지 않더라도 별도 PC 를 통한 원격 접속으로 세팅을 이어갈 수 있다.
위 단계까지 완료되면 이후 작업은 별도의 PC에서 ssh 클라이언트를 이용해 진행할 수 있다. sshd 데몬은 기본 설치돼 자동 실행되기 때문에 ssh server 설정을 위한 작업은 별도로 필요없고, 요즘은 Windows 에도 ssh client가 있어서 cmd 에서 추가로 ssh ubuntu@192.168.0.10
명령으로 접근할 수도 있기 때문에 ssh client 도 특별히 준비할 게 없다.sudo passwd root
명령으로 root 계정 패스워드를 설정하면, su -
명령으로 root 로그인이 가능해지는데 이렇게 특권을 상시 보유하고 있으면 더욱 편리하다.
디스크 볼륨
USB 외장하드 독으로 연결된 디스크 드라이브에 볼륨 설정을 한다. fdisk -l
명령으로 보니 다음과 같이 디스크 드라이브들이 존재하는 것을 확인할 수 있는데
- /dev/mmcblk0
- /dev/sda
- /dev/sdb
Disk /dev/mmcblk0: 59.6 GiB, 64021856256 bytes, 125042688 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xda84cd12
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 * 2048 526335 524288 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 526336 125042654 124516319 59.4G 83 Linux
Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
Units: sectors of 1 * 512 = 512 bytes
...
Disk /dev/sdb: 7.3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
...
/dev/mmcblk0
는 OS 두 개의 파티션으로 나눠져 설치시 기본 설정된 부트 로더와 /
root 경로에 할당 돼 있다. 추가로 설정된 /dev/sda
와 /dev/sdb
에 APM 웹 서버와 애플리케이션들 이용할 볼륨을 구성해줄 것인데, 250 GB ssd 인 /dev/sda
는 애플리케이션 소스, MySQL 데이터파일 그리고 WordPress 리소스 파일들이 빠른 읽기 속도로 서비스 될 수 있도록, 8TB hdd 인 /dev/sdb
는 nextcloud 파일 스토리지 전용으로 활용할 계획이다.
볼륨 구성은 lvm 을 이용해서 다음 명령을 따라 입력하면 대충 만들 수 있다.
fdisk /dev/sda # 이후, [n] + [Enter] -> [p] + [Enter] -> [Enter] -> [Enter] -> [Enter] 순서로 입력
pvcreate /dev/sda1
vgcreate vg-app /dev/sda1 # "vg-app" 이름으로 볼륨 그룹 생성
lvcreate -l 100%FREE -n lv-app-01 vg-app /dev/sda1 # vg-app 안에, lv-app-01 이름으로 lv 생성
mkfs.ext4 /dev/vg-app/lv-app-01 # ext4 파일시스템 설정
mkdir /app
mount /dev/vg-app/lv-app-01 /app # /app 경로에 마운트
fdisk /dev/sdb # 이후, [n] + [Enter] -> [p] + [Enter] -> [Enter] -> [Enter] -> [Enter] 순서로 입력
pvcreate /dev/sdb1
vgcreate vg-data /dev/sdb1 # "vg-data" 이름으로 볼륨 그룹 생성
lvcreate -l 100%FREE -n lv-hdd8t-01 vg-data /dev/sdb1 # vg-data 안에, lv-hdd8t-01 이름으로 lv 생성
mkfs.ext4 /dev/vg-data/lv-hdd8t-01 # ext4 파일시스템 설정
mkdir /app/data/drive -p
mount /dev/vg-data/lv-hdd8t-01 /app/data/drive # /app/data/drive 경로에 마운트
이어서 /etc/fstab
에 등록해서 부팅시 자동 마운트를 시키려고 했는데, 라즈베리 파이는 매 부팅시마다 장치 UUID 가 바뀌는(?) 것인지 설정이 잘 되지 않았고 재부팅하니 응급 모드로 진입했다. 자세한 원인은 좀 더 찾아봐야겠지만 현재로서는 번거롭더라도 재부팅할 때마다 마운트 명령을 일일이 해줘야할 것 같다.
서버 기본 설정만 하는데에 시간이 많이 들어 시스템 패키지와 본격적인 APM 서버 설치는 이후에 진행해야할 것 같다.