LoginSignup
7
7

More than 3 years have passed since last update.

ラズパイでHelloWorld!

Last updated at Posted at 2018-10-04

はじめに

案件でラズパイを使ってBluetooth通信させたりセンサー付けて環境情報取ったりする機会が多くなってきたので備忘録としてラズパイ関連の記事を書いていこうと思います。
IMG_1580.JPG
まずは導入編としてラズパイ上に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 pi@172.17.1.113
# 初期パスワードは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);

Webサーバーの起動。

node .

ブラウザからアクセスしてHelloWorld!が表示されればOK。

プロセスの永続化

Webサーバーのプロセスを常駐させたい場合は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使って色々やって見たいと思います。

以上

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7