2019년 11월 라스베리파이 4에 대한 소문을 듣고 특별한 이유없이 알리에서 충동 구매를 했다.
- Raspberry Pi 4 Model B kit Basic Starter Kit in stock with power switch line type-c interface EU/US Charger Adapter and heatsink - $12.18
- Ultra-thin CNC Aluminum Case Box For Raspberry Pi 4 Model B Metal Shell Black Silver Color for Raspberry Pi 3 Model B+ - $64.14
구매 후 사용하지 않았던 SD 카드에 여러 지원 OS 을 설치하여 사용해보았지만 설치하고 화면을 모니터를 통하여 출력하는 것 이상은 흥미를 갖지 못했다.
한참 후에 웹서버를 설치해보는 것은 어떻까 하는 생각에 실행을 해보기로 했다.
◼︎ 작업환경
- Model : MacBook Pro (16-inch, 2019)
- CPU : 2.3 GHz 8코어 Intel Core i9
- GPU : AMD Radeon Pro 5500M 4 GB
- MENORY : 16GB
- DISK : 1TB SSD
- OS : macOS Monterey 12.2.1
◼︎ Raspberry 4
- DEVICE : Raspberry Pi 4 (4G RAM)
- DISK : 128GB SD Card
- 모니터 암에 고정하여 사용
1. Ubuntu Server 설치하기
설치는 ① 직접 OS 이미지를 다운로드하고 balenaEtcher 같은 이미지 복사 프로그램을 사용하여 설치하거나 ② Rispberry Pi Imager 를 사용한다. 과거에는 맥용 ② 프로그램이 지원되지 않았지만 현재는 지원하고 있기 때문에 보다 간편한 ② 방법을 사용하여 설치를 진행한다.

❷ Operating System 목록에서 Other general-purpose OS > Ubuntu 를 선택하고

❸ 64bit Server 버전을 선택한다. 가장 최신 버전이 아닌 2025년 까지 지원되는 20.04.4 LTS (Long Term Support ) 버전을 선택했다.

❹ CHOOSE STORAGE 버튼을 클릭하여 OS 가 설치된 SD 카드를 선택한다. ❺ 톱니바퀴 모양 아이콘을 클릭하여 네트워크, 계정 등의 옵션을 지정한다.


마지막으로 WRITE 버튼을 클릭하여 쓰기를 실행한다.

이제 Ubunto Server 가 설치된 SD 카드를 라스베리파이 파이 기기에 삽입하고 전원을 연결한다. 로그인은앞서 설정에 사용한 계정정보를 사용하면 된다. (추가 설정 없이 바로 사용가능한 점이 아주 편리했다.)
2. Raspbarry Pi 연결하기
원격 PC에서 라스베리파이 파이(Raspbarry Pi) 기기에 연결을 위해서 먼저 라스베리파이 IP 를 확인해야 한다. 무선의 경우 최초 연결이 잘되지 않아 라스베리 파이 전원을 여러번 ON/OFF 해야 할 수 도 있다. IP 가 확인 되었으면 소프트웨어 관리 도구인 APT 의 패키지 인텍스를 업데이트 하고 업그레이드가 가능한 것들이 있으면 업그레이드 진행 한다.
sudo apt update
sudo apt upgrade
3. Tomcat 설치하기
3.1 JAVA 설치하기
Tomcat 설치에 앞서 최신 자바를 설치한다. (작업 당시에 자바버전은 11.013 이었다.)
sudo apt update
sudo apt install default-jdk
3.2 Tomcat 계정 생성하기
서비스 형태로 실행하기위하여 tomcat 계정을 생성한다. 이렇게 Tomcat 서비스 실행을 위한 계정을 생성하여 사용하니 pi 계정으로 프로그램을 배포하고 다시 권한을 변경해주어야 하는 절차가 약간 불편했다. 이러한 불편함을 해소하기 위하여 임의의 developers 그룹을 추가하고 tomcat 과 pi 계정에 해당 그룹을 추가하여 사용했다.
sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat
3.3 Tomcat 설치하기
wget 명령을 사용하여 원하는 아파치 톰켓 버전을 다운로드 한다. Apache Tomcat 홈페이지를 방문하여 원하는 버전의 다운로드 경로를 확인한다. (작성 당시 10.0.17 버전을 다운로드 하였다.)
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.17/bin/apache-tomcat-10.0.17.zip
zip 압축을 풀기위해서 unzip 을 설치하고 다운로드한 zip 파일을 /opt/tomcat 경로에 푼다.
sudo apt install unzip
sudo unzip apache-tomcat-10.0.17.zip -d /opt/tomcat
편의성을 위하여 심볼릭 링크를 생성하고 tomcat 계정으로 소유권을 변경한다. 마직막으로 sh 파일들에 대한 실행 권한을 부여한다.
sudo ln -s apache-tomcat-10.0.17 latest
sudo chown -RH tomcat: /opt/tomcat/latest
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'
3.4 Tomcat 서비스 세팅
Tomcat 을 서비스로 실행하려면 새로운 Unit 파일을 생성해야 한다. /etc/systemd/system 경로에 tomcat.service 파일을 생성한다.
sudo vi /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_Home=/opt/tomcat/latest"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_OPTS=-Xms1024M -Xmx2048M -server -XX:+UseParallelGC"
Environment="JAVA_OPTS.awt.headless=true -Djava.security.egd=file:/dev/v/urandom"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl start tomcat
sudo systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2022-03-09 15:26:02 KST; 3s ago
Process: 19535 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 19543 (java)
Tasks: 16 (limit: 4435)
CGroup: /system.slice/tomcat.service
└─19543 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties -Djava.util.loggi>
웹 브라우져에서 [라스베리파이 IP]:8080 주소로 접속하면 아래와 같은 웹 페이지가 보여진다.

4. Nginx 웹 서버 설치하기
웹 서버 Nginx 을 아래와 같이 설치할 수 있다.
sudo apt install nginx
설치가 완료되면 서비스를 시작하고 상태를 확인한다.
sudo systemctl start nginx
sudo systemclt status nginx
웹 브라우져에서 [라스베리파이 IP] 주소로 접속하면 아래와 같은 웹 페이지가 보여진다.

5. OpenCV 설치
테스트를 목적으로 OpenCV 를 설치하였다.
sudo apt install cmake build-essential
다음 패키지들은 반듯이 설치가 필요한 것은 아니다.
sudo apt-get install pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev
sudo apt-get install ffmpeg libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
sudo apt-get install libv4l-dev v4l-utils
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
원하는 버전의 소스 파일을 다운로드 한다. 다운로드는 /home/pi 경로을 사용했다.
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip
unzip 명령을 사용하여 압축을 풀고 빌드를 위하여 build 폴더를 생성한다음 build 경로로 이동한다.
unzip opencv.zip
unzip opencv_contrib.zip
mkdir build
cd build
이제 cmake 명령을 실행하여 컴파일을 위한 설정을 수행한다.

컴파일을 위한 설정 과정에서 JAVA 을 인식하지 못하는 문제가 발생되었다. 이부분을 해결하는 과정에 어려움이 있었는데 아래와 같은 방법으로 해결했다.
최신 자바 버전이 설치되었지만 호환성을 고려하여 JDK 1.8 과 ant 를 설치한다. 이는 cmake 실행 옵션에 자바 버전을 명시한 경우 맥은 동작하였지만 CentOS는 효과가 없어 컴파일시에는 1.8 자바를 사용하고 이후에 높은 버전의 자바로 변경하여 사용하였다.
sudo apt install ant openjdk-8-jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-arm64/jre
export ANT_HOME=/usr/share/ant
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
다시 cmake를 실행한다. 이때 사용한 옵션은 아래와 같다.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.5/modules \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_opencv_ximgproc=ON \
-D BUILD_SHARED_LIBS=OFF \
-D OPENCV_JAVA_TARGET_VERSION=1.8 \
-D BUILD_EXAMPLES=ON ../opencv-4.5.5
처음과는 다르게 JAVA 항목이 인식됨을 확인할 수 있다.

make -j2
sudo make install


후기
14MB 정도 크기의 이미지를 업로드하고 얼굴을 인식하여 성별과 나이를 추정하는 코드를 실행해보았다. nmon 을 통하여 모니터링을 해보니 단일 이미지 처리 경우에도 많은 자원을 사용하지만 응답 시간이 지연되어 좋은 성능을 보여주지는 못했다.결국 앞전과 같이 설치해보고 테스트 하는 것 이상으로 활용하지 못했다. 결국 지금은 사용하지 않고 어딘가에 ...
'사용기' 카테고리의 다른 글
Baseus 태블릿 스탠드 (1) | 2024.12.08 |
---|---|
DEWALT ATOMIC 20V MAX* Reciprocating Saw (0) | 2024.12.08 |
반수생 거북이 생활환경 업그레이드 (지름신 2부) (1) | 2024.12.05 |
사용기 - 반수생 거북이 생활환경 만들기 (지름신 1부) (2) | 2024.12.05 |
ThinkPad E15 노트북 메모리 업그레이드 (0) | 2024.12.05 |