라즈파이에서 HelloWorld!

소개



안건으로 라즈파이를 사용해 Bluetooth 통신시키거나 센서 붙이고 환경 정보 취하거나 하는 기회가 많아져 왔으므로 비망록으로서 라즈파이 관련의 기사를 써 가려고 생각합니다.

우선은 도입편으로서 라즈파이상에 Web서버를 시작해 PC 브라우저로부터 액세스 해 HelloWorld!라고 표시시키는까지의 순서입니다. 라즈파이용 표준 OS인 Raspbian 설치부터 서버 설정까지 썼습니다.

준비하는 것


  • Raspberry Pi 3 Model B(또는 B+)
  • SD 카드 (8GB 이상 있으면 안심)
  • 조작 PC (여기에서는 Mac을 가정)

  • 라즈파이의 초기 설정



    Raspbian 설치



    Raspbian 사이트 에서 RASPBIAN STRETCH LITE 이미지를 다운로드합니다 (GUI는 필요하지 않으므로 여기에서는 경량 버전을 사용합니다).

    PC에 SD 카드를 꽂아 이미지를 씁니다.
    diskutil list
    sudo diskutil unmountDisk /dev/disk2
    sudo dd bs=1m if=/path/to/img of=/dev/disk2
    

    SSH 활성화



    디폴트라면 SSH를 사용할 수 없기 때문에 사용할 수 있도록 해 둡니다.

    운영 PC에 SD 카드의 boot 볼륨을 마운트하여 SSH 활성화 파일을 만듭니다.
    cd /Volumes/boot
    touch ssh
    

    라즈파이 설정



    라즈파이에 SD 카드를 꽂아 유선 LAN, 전원을 연결합니다.

    조작용 PC에서 라즈파이의 IP를 조사합니다.
    라즈파이의 MAC 주소는 b8:27:eb로 시작하는 것 같습니다.
    arp -a | grep b8:27:eb
    

    위에서 나온 IP 주소에 SSH로 연결할 수 있으면 OK입니다.
    ssh [email protected]
    # 初期パスワードはraspberryです。
    

    Raspbian 초기 설정



    ※이후의 커멘드는 root로 전환하고 나서 실시하는 상정으로 쓰고 있습니다.

    미들웨어 업데이트 및 필요한 미들웨어를 적절하게 설치합니다.
    apt-get update
    apt-get upgrade -y --fix-missing
    apt-get install vim git -y
    

    Wi-Fi에 연결하고 싶은 경우는 raspi-config의 2 Network Options로 SSID등의 등록을 할 수 있습니다.
    raspi-config
    

    DHCP로 IP가 바뀌면 번거롭기 때문에 IP를 고정합니다.
    # 例
    cat << EOS >> /etc/dhcpcd.conf
    interface wlan0
    static ip_address=172.17.1.113/16
    static routers=172.17.0.1
    EOS
    

    HelloWorld!



    Node.js 및 npm 설치



    먼저 apt로 설치합니다.
    apt-get install nodejs npm -y
    

    npm 업데이트.
    npm i -g npm
    

    Node.js의 버전 관리로 n을 사용합니다.
    npm i -g n
    

    Stable 버전으로 전환.
    n stable
    

    apt 관리 Node.js 및 npm 삭제
    apt-get purge nodejs npm -y
    

    모듈 초기 설정



    npm 초기화 및 Express 설치.
    mkdir -p /usr/local/src/helloworld
    cd /usr/local/src/helloworld
    npm init -f
    npm i express
    

    HelloWorld! 프로그램을 작성합니다.
    // index.js
    const app = require('express')();
    app.get('/', (req, res) => res.send('HelloWorld!'));
    app.listen(80);
    

    웹 서버 시작.
    node .
    

    브라우저에서 액세스하여 HelloWorld!가 표시되면 OK.

    프로세스 지속성



    웹 서버의 프로세스를 상주시키고 싶은 경우는 Node.js로 쓰여진 forever 라는 라이브러리를 사용하면 편합니다.

    글로벌 설치.
    npm i -g forever
    

    프로세스 시작.
    forever start /usr/local/src/helloworld/index.js
    

    아래와 같은 쉘 스크립트 작성하여 crontab에 등록해 두면 프로세스 감시도 할 수 있습니다.
    #!/bin/bash
    process_name=/usr/local/src/helloworld/index.js
    check_process_log=/var/log/check-process.log
    app_log=/var/log/node/helloworld.log
    
    process_running=$(forever list | grep ${process_name} | wc -l)
    
    if [ ${process_running} = 0 ]; then
      forever -l ${app_log} -o ${app_log} -e ${app_log} -a start ${process_name} > /dev/null 2>&1
      echo "[$(date +%FT%T%:z)] ${process_name} has started." >> ${check_process_log} 2>&1
    else
      echo "[$(date +%FT%T%:z)] ${process_name} is already running." >> ${check_process_log} 2>&1
    fi
    

    결론



    라즈파이의 셋업으로부터 브라우저로 HelloWorld! 표시까지 할 수 있었으므로 다음번은 Bluetooth 사용해 여러가지 해 보고 싶습니다.

    이상

    좋은 웹페이지 즐겨찾기