기업 연계프로젝트 참여와 팀 내 아이디어를 기반으로 하여 프로젝트를 진행할 수 있었는데,

개인적으론 반대했지만, 팀원들의 뜻에 따르기로 하고, 기업 연계 프로젝트에 참여하게 되었다.

(마음고생도 되게 많이 했다..)

 

 

 

 

요구되는 기술 스택들에 대해 별 안내 없이 들어서 더 거부감이 컸던것도 있다. (이걸 다 써야 하는거야?)

 

같은 과정을 듣는 다른 분반 팀들과 협업 형식으로 진행이 되는데,

 

크게는 대립이

 

"각자 전체 서비스를 소형화 시켜 구현하는 것이다. vs 센서 수집 시스탬과 전체 관제 시스템을 두 팀이 나눠 진행한다."

"프로젝트 발표를 한 팀이 전담하는 것은 부당하다. vs 굳이 두 팀 각자 같은 주제로 발표할 필요가 있나?"

 

라는 내용에서 발생했지만

 

"센서 수집 시스템은 A분반 팀이 진행하고, 통합 관제 시스템 및 비콘 출입관리 시스템은 B분반 팀이 진행한다."

"발표는 각자가 개발한 기능에 초점을 맞춰 진행하고, 기타 문서는 통합이 가능하면 통합하는 순으로 한다."

 

로 Fix가 되어 얼마 전 부품 선정을 마치고, 학습에 필요한 도서도 주문 완료 했다.

 

그래서....내가 맡은 웹서버 구현 및 데이터베이스 구축, 라즈베리파이 셋팅 및 환경 백업의 과정을 요약해보고자 한다.

 

 

0. 라즈베리파이 원격 접속 설정

 

자주 쓰게 될 SSH와 VNC를 활성화 해주었다. VNC가 연결되었을 때의 해상도도 별도로 설정함.

 

1. mariaDB 설정 및 node.js 최신버전 설치

 

//mariadb 설치
sudo apt-get install mariadb-server

//mariadb 보안 설정, 입력 한 후 내용 읽어보며 진행하기.
sudo mysql_secure_installation

//관리자 계정으로 접속, 모든 ip에 대한 허용 진행
sudo mysql -u root -p 설정했던 비밀번호

//계정 생성 및 비밀번호 설정
create user'사용자명'@'호스트명' identified by '패스워드';

//모든 데이터베이스에 대한 접근권한을 특정 사용자에게 부여하는 명령
GRANT ALL PRIVILEGES ON *.* TO '사용자명'@'호스트명' IDENTIFIED BY '패스워드';
//호스트 명을 *.*로 해두면 모든 IP에서 접속이 가능하다. 다만 보안설정은 필수!

flush privileges;

// mariadb 서비스 종료, 시작, 재시작
sudo service mysql stop
sudo service mysql start
sudo service mysql restart

 

다음 경로의 파일을 열어준다.

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

 

bind-address 가 기본 값으론 127.0.0.1로 되어있는데, 이를 *로 바꾸어 준다.

Ctrl +x로 나가면서 y 입력하고 빠져나간 후 서비스를 다시 시작해준다.

 

기존 개발환경과 일치시키기 위해 nodejs의 버전을 업데이트 시켜준다. 현재 기준 최신 LTS 버전은 

16.13.1이지만, 라즈베리파이에는 이보다 이전의 버전이 설치되어 있을 것이다.

 

//설치된 nodejs의 버전 확인
node -v

//구버전 node.js 삭제
sudo apt-get remove nodejs
sudo apr-get autoremove -y

//패키지 저장소와 버전 비교
apt list | grep nodejs

//nodejs 패키지 저장소 최신화
sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

//갱신 여부 확인
apt list | grep nodejs

//최신버전 nodejs 설치
sudo apt-get install nodejs -y

 

2. vsCode 설치 및 ufw(리눅스 방화벽) 설치, DB 및 자주 쓰는 포트 열기

//vsCode 설치 
sudo apt-get install code -y

//방화벽 설치
sudo apt-get install ufw -y

일단 확실하게 열어야 할 포트는 SSH 사용을 위한 22번 포트, VNC Viewer를 위한 5900포트, mysql에서 사용되는

3306 포트가 되겠다. (필요한 포트가 있다면 포트번호만 바꾸는 방식으로 열어줄 수 있으니 걱정 마시라..!)

기본 정책상으론 들어오는 포트는 모두 닫혀있기에 필요한 포트만 열어주는 식으로 작업했다.

//방화벽 활성화
sudo ufw enable

//방화벽 끄기
sudo ufw disable

//포트 허용
sudo ufw allow '포트번호'

//포트 차단
sudo ufw deny '포트번호'

모든 작업이 되었다면 한번 방화벽을 껐다가 다시 켜 주자.

 

테스트 해 본 결과이다. 

 

 

번외 :: 라즈베리파이 환경 백업하기

저장장치로 마이크로 SD카드가 아닌 외장 SSD를 사용중에 있는데, 스냅샷 겸 현재 상태를 이미지 화 시키고 싶었다.

Win32diskimger32의 경우 모든 섹터를 저장하니 저장장치 크기만큼 점유한다는 문제가 있어 알아보던중...

Acronis True Image를 이용하기로 했다. 마침 학원 PC의 SSD가 WD 제품인지라..for Western Digital 버전을 다운로드, 

백업을 진행하고 테스트를 해 봤는데...정상동작한다!

 

ex)단, 사양차이가 나는 라즈베리파이의 모델 간 작업 시에는 오류가 발생할 가능이 높다.

특히 상위 모델에서 백업한 이미지를 구형 모델에 복원 시킬 경우 오류 발생하는 빈도가 높았다.(직접 당함)

라즈베리파이 3/3+에서 백업한 자료를 라즈베리파이 4에 작업 할 경우 - 정상 동작

라즈베리파이 4 4기가 모델에서 백업한 자료를 라즈베리파이 4 2기가 모델에 작업할 경우 - 오류 발생

하지만 동일 기기의 백업 목적으로는 사용하기가 좋다. 

 

 

+ Recent posts