[Rasppberry Pi] 라즈베리파이로 nodejs 서버 만들기

2021. 5. 23. 01:50PROJECT/Dkbk's website

클라우드 서비스를 사용해서 서버를 만드려고 이곳 저곳 서칭해봤으나, 마음에 드는 조건이 없었음
(사실 내가 어떤 스펙의 서버를 원하는지 스스로 가늠하기가 어려운게 제일 컸기는함)

그래서,,, 집에 굴러다니던 동생의 라즈베리파이를 사용해서 집에 서버를 만들어봤음 ㅋㅋㅋㅋㅋㅋㅋㅋ


1. 준비물 챙기기 (여기에 이틀정도 쓴 듯)
라즈베리파이3, microSD카드(16기가), microSD카드 리더기, 5핀케이블, 랜선, hdmi케이블, 모니터, usb키보드를 준비하자

2. 컴퓨터 - 리더기 - microSD카드 를 연결하여 카드 내에 OS 이미지를 넣어주기
https://www.raspberrypi.org/software/

 

Raspberry Pi OS – Raspberry Pi

The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects. Join the global Raspberry Pi community.

www.raspberrypi.org

다른 블로그글을 보면 SD카드 저장소를 unmount하는 등의 추가 작업이 필요하다는데!
나는 운이 좋았는지 Imager 라는 프로그램이 제공된 이후에 요 글을 쓰고 있어서 아주 편하게 이미지 디스크를 만들었다 :)

    1. 리더기를 통해 microSD카드를 컴에 인식시키고
    2. 위의 주소에서 Raspberry Pi Imager 를 다운로드 한 뒤

    3. Raspberry Pi Imager를 실행하고, 위의 사진처럼 으로 OS와 Storage를 선택하고 Write 버튼을 누르면 끝!

난 서버로 사용할 것이기 때문에 UBUNTU SERVER 21.04 64비트를 깔아주었다 ㅎㅎ

3. 라즈베리파이에 microSD카드 삽입, 전원 연결, 랜선 연결
전원 버튼이 없는가 한참을 찾았는데 없는게 맞다고 함 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 띠용..

4. 우분투 초기 아이디/비밀번호 입력, 새 비밀번호 변경
아이디/비번 둘다 ubuntu이다 ㅎㅎ
제대로 입력하고 나면 새 비밀번호로 바꾸라고 또 뜸

5. 인터넷 연결 확인 및 node설치 

$ ping google.com

인터넷 연결이 잘 되었는지 확인 함 해주고 

$ sudo apt install nodejs npm

nodejs npm 설치 고고 

6. 소스 git clone 및 기동
서버 내에서 개발을 할 수는 없는 상태기 때문에 외부에서 개발 후 git에 올려뒀다 ㅎㅎ

$ git clone .....git
소스 내로 이동해서 
$ npm run start


7. ip고정 및 포트포워딩
위의 단계까지만 하면 동일 네트워크 내의 device(공유기를 사용하고 있는 경우 공유기의 무선랜, 유선랜을 사용하는 모든 device)는 바로 내 서버에 접근할 수 있다. 하지만 외부 네트워크에서 내 공유기를 타고 요 서버까지 들어오게 하려면 ip고정 및 포트포워딩을 해줘야한다 ㅎㅎ

  1. http://192.168.0.1/ 접속
--> 아이디 비번을 넣어야하는데 우리집은 기억이 안났다 ㅎㅎ 결국 남친이 공장초기화함
  2. 고급설정 > 네트워크관리 > DHCP 서버 설정
--> 여기서 라즈베리파이의 mac 주소를 수동 등록 해준다. 동적 ip가 매번 바뀌지않게 하기 위함이다.
  3. 고급설정 > NAT/라우터 관리 > 포트포워드 설정
--> 여기서 공유기의 특정 포트로 들어온 요청을 내부 IP의 어떤 포트로 포워딩 할지 설정한다.

--> 예) 공유기의 8080포트로 들어온 요청을 내부 IP 192.168.0.5:8080으로 포워딩 하도록 설정

 

8. 외부망에서 서버를 찔러보자
정상적으로 응답이 오는 것을 확인할 수 있다. 라즈베리파이,, 이 쬐그만게,,, 엄청 귀엽다

+) db서버로도 사용할 계획인데, 16기가 sd카드로는 데이터 저장까지는 버거울 듯 하여 128기가 usb를 붙여주기로 했다 ㅋㅋㅋ 
요 쪼그만걸로 API & DB 서버 두 가지 다 동작이 잘 될랑가 모르겠지만,, 일단 도전!!!

 

 

9. usb를 장착 및 mount 설정

sudo mkdir -m 755 /home/ubuntu/storage
sudo chown mysql:mysql /home/ubuntu/storage

sudo blkid 
id -u mysql //112
id -g mysql //120
sudo vi /etc/fstab
//재기동 

sudo rsync -av /var/lib/mysql_/* /home/ubuntu/storage
--> vfat이었을때는 여기서 permissionError가 났었음


sudo li -s /home/ubuntu/storage /var/lib/mysql
sudo ls -al /home/ubuntu/storage
sudo ls /lib/ mnmnmnn
sudo service mysql start




sudo chown -R mysql:mysql /home/ubuntu/storage