장난감 연구소
#1 라즈베리파이 웹 서버 운영하기 - 우분투 설치, SSH 설정 본문
이 글에서는 라즈베리파이에서 Node.js와 Mongo DB를 사용하여 웹페이지를 제공하는 웹 서버를 만든 경험을 되새기면서, 알게 된 지식을 공유하고자 한다. 독자의 관련 지식이 없다고 생각하고 설명해볼 테니, 라즈베리파이로 본인의 웹페이지를 만들어보려는 사람에게 도움 되었으면 한다.
목차
- 라즈베리파이 웹 서버 운영하기 - 우분투 설치, SSH 설정
- 라즈베리파이 웹 서버 운영하기 - 고정 IP 설정, 포트포워딩
필요한 장비
라즈베리파이 3/4/이후 버전, SD 카드, 랜선, 라즈베리파이 전원 공급용 충전기, HDMI 케이블, 모니터, 키보드
배경 설명
이 글을 시작으로 6개의 글에서 라즈베리파이를 사용해 소규모 웹 서버를 만들며 알게 된 지식을 적어볼 생각이다. 이는 직접 연구해 알게 된 사실은 아니므로 알게 된 경로를 출처로 글 뒤에 남길 것이다. 우선, 내가 왜 웹 서버를 만들게 되었는지 설명하겠다. 그것은 나 자신을 설명하는 포트폴리오 비슷한 홈페이지를 만들기 위해서 이다. 이를 위해 Node.js를 공부하여, Express 모듈을 통해 웹페이지의 백엔드를 개발하게 되었다. 또, 홈페이지 안에서 글을 효율적으로 관리하기 위해 DBMS를 사용하여야 했기에, Mongo DB를 쓰고 Mongoose 모듈을 채택하였다.
내가 왜 라즈베리파이를 사용하였는가에 대한 이유는 두 가지 있다. 하나는 AWS, MS Azure와 같은 IaaS의 가격이 부담되었기 때문이다. 사실상 방문자가 크게 없을 것으로 예상되기에, 시간 단위로 책정되는 요금은 비효율적이고, 트래픽 양으로 책정되는 요금도 주기적으로 나가는 돈이 생기기에 대학생 입장에선 부담이었다. 나머지 한 이유는 지난 학기에 리눅스 사용, 관리에 관한 강의를 수강하였기에 이를 바탕으로 직접 리눅스 서버를 만들어 보고 싶었기 때문이다.
잘 알겠지만, 라즈베리파이는 신용카드 크기의 작은 컴퓨터이다. 완전한 컴퓨터기에 실제 리눅스 서버를 운영하는 것처럼 실습하고 사용해낸다. 물론 성능이 좋지 않고, ARM 기반의 CPU를 사용하기에 한계는 있다. 라즈베리파이를 만드는 라즈베리파이 재단에서 권장하는 공식 운영체제는 라즈비안이다. 하지만 라즈비안은 32비트 기반의 운영체제이기에 최신 버전의 Mongo DB를 사용할 수 없다. 나도 이 때문에 Mongoose가 DB에 연결할 수 없다는 문제를 겪었다.
그래서 우리는 라즈베리파이용으로 ARM CPU에서 64비트로 작동되는 우분투 운영체제를 사용할 것이다. 이때 64비트 우분투 운영체제는 라즈베리파이 3와 4, 이후 버전에서만 작동한다는 점을 유념하기 바란다. 나는 라즈베리파이 3 모델 B를 사용하였다. 이제 같이 설치해보자.
우분투 설치
위 페이지에서 '64비트' 우분투 서버의 이미지 파일을 다운로드 받자. 64비트를 다시 강조하면 아래 사진의 버튼을 눌러야 한다. 파일을 다운로드 받은 후 압축해제 하자.
이미지 파일이 준비되면, SD 카드에 이미지를 플래시하는 프로그램이 필요하다. #Win32DiskImager를 설치한다.
이미지 파일을 선택하고, 'Write'를 누르면 플래시된다. 작업이 완료되면 SD 카드를 라즈베리파이에 넣고 켜면 된다. 그 전에 모니터와 라즈베리파이, 키보드, 랜선 등의 장비를 연결하자. 라즈베리파이에 전원을 넣어주면 수많은 라인이 올라오면서 설치 작업이 시작된다. 이 작업이 대략 10~15분 정도가 걸렸다.
설치가 완료된 후 사용자 명은 ubuntu, 비밀번호도 ubuntu로 로그인하면 된다. 처음 로그인했을 때 비밀번호를 바꿔주게 된다. 이제 우분투를 사용할 수 있다.
선택사항: GUI 환경 설치하기
설치된 우분투 운영체제는 서버를 위한 것이기에, 익숙한 GUI 환경이 아니라 배시셸로 모든 작업을 해야 한다. 만약 배시셸의 명령어가 익숙하지 않다면 GUI 환경을 설치할 수도 있다.
- $ sudo apt-get install xubuntu-desktop
- $ sudo apt-get install lubuntu-desktop
- $ sudo apt-get install kubuntu-desktop
위 명령어로 각각 xubuntu, lubuntu, kubuntu를 설치할 수 있다. 그런데, 직접 설치해본 결과 사용할 수 없을 정도로 느렸다. 그러므로 고민해보고 꼭 필요한 경우에만 설치하자.
- $ sudo systemctl set-default multi-user.target #런레벨3(CLI)로 변경
- $ sudo systemctl set-default graphical.target #런레벨5(GUI)로 변경
참고로 위 명령어로 CLI로 부팅할지, GUI로 부팅할지 설정할 수 있다.
SSH 설정
이제 외부에서 라즈베리파이로 접속할 수 있게 하자. SSH는 네트워크 상의 다른 컴퓨터에서 원격으로 로그인해, 작업할 수 있게 해준다. 운영체제에 이미 ssh가 설치되어 있으므로, 포트만 설정해주면 원격으로 접속할 수 있다.
- $ sudo vi /etc/ssh/sshd_config
위 명령어를 입력 해 sshd_config 파일을 연다.
이 파일에서 "#Port 22"가 적힌 줄을 "Port 22"로 바꾸고 저장하면 외부에서 22번 포트로 접속할 수 있게 된다. 혹시 vi가 익숙하지 않다면, 방향키로 커서를 옮기고, 커서를 '#' 위에 놓고 x 키를 누르면 '#'을 지울 수 있다. 지운 후 ":wq"를 차례로 누른 후 엔터를 치면 저장 후 종료된다. 혹시 실수한 경우 ":q!" 저장하지 않고 종료할 수 있다.
이것으로 우분투 설치와 SSH 설정이 끝났다. 다음 글에서 라즈베리파이에 고정 IP를 할당해주고, 포트포워딩으로 외부에서 접속하는 방법에 대해 다룰 것이다.
'토이프로젝트' 카테고리의 다른 글
졸업 작품 돌아보기, 하모나이즈 (1/2) (0) | 2024.11.27 |
---|---|
음 높이(Pitch) 예측 모델 정리 (0) | 2024.07.24 |
재생 중인 동영상과 음악 컨트롤하기 [실패] (0) | 2021.06.02 |
#2 라즈베리파이 웹 서버 운영하기 - 고정 IP 설정, 포트포워딩 (3) | 2020.02.04 |
프로그래밍으로 새해 인사말 보내기 (0) | 2020.01.05 |