ホーム >  マイコン > RaspberryPi >  ラズパイAIサーバを作る(ストレージサーバ編 Go言語開発環境作成)

投稿日:   |  最終更新日:

ラズパイAIサーバを作る(ストレージサーバ編 Go言語開発環境作成)

RaspberryPi

ファイル保存用のストレージサーバを作ります。今回は、ラズベリーパイにGo言語開発環境作成ます。

ラズパイで作るストレージサービス

ラズパイ3を使って、ストレージサービスを作ります。いきなり商用レベルのサービを作るには多くの時間とコストがかかりますので、まず以下の特徴をもつ小規模な機能を作ります。

  • 個人または小グループでの利用を想定。
  • ファイルの出し入れ機能の提供。

ファイル保存 ストレージサーバにファイルを保存する。保存先ファイルが存在する場合は上書きする。
ファイル削除 ストレージサーバに保存されているファイルを削除する。ファイル名はURLで指定する。
ファイル・データ取得 ストレージサーバに保存されているファイルの内容を取得する。ファイル名はURLで指定する。
ファイル一覧取得 ストレージサーバに保存されているファイルの一覧をファイル名のリストで保存する。
ファイル情報 ストレージサーバに保存されているファイルのサイズ・更新日時情報を取得する。ファイル名はURLで指定する。

開発環境

ストレージサービスの開発環境は、ラズベリーパイ対応と処理性能およびライブラリの豊富さから、Go言語を選択します。Go言語を実装すれば、ラズパイ以外の環境で開発したプログラムをそのままラズパイで動作させることができます。

Go言語のEcho

HTTPによるAPI呼び出しをサポートするGo言語のフレームワークであるEchoを使います。

Echoを使えば、以下のことを意識することなく処理できます。

  • クライアント-サーバ間のHTTP通信。
  • リクエスト・パラメータの解析。
  • リクエストURLに応じた処理の呼びかけ。
  • 応答の組み立て。

フレームワークを導入すれば、煩雑な通信処理の実装に惑わされることなく作りたい機能の実装に集中できます。API開発者は必ず使うべきです。

準備

用意するものは以下の3点のみです。

  • ネットワーク・インターネット接続環境
  • RaspberryPi3
  • クライアントPC

ラズベリーパイとクライアントPCの環境を設定します。

①ラズパイの初期設定を行い、IPアドレスを固定します。

ラズパイAIサーバを作る(ストレージサーバ編 ラズパイ準備)

ネットワーク・インターネット接続環境

必要なソフトウェアを入手するため、インターネット環境を用意します。また、ラズパイと通信して操作するためにネットワーク環境が必要です。

RaspberryPi3

ストレージサービスのサーバとしてRaspberryPi3ModelBを使用します。RaspberryPi2ModelBでもかまいません。

RaspberyyPi Raspberry Pi 3 Model B (Element14)
OS RASPBIAN JESSIE LITE

クライアントPC

操作開発用のクライアントPCを用意します。windowsでもmacでも可能ですが、今回はubuntuを利用します。

OS Ubuntu 16.04.1 LTS 64bit

作業の流れ

  1. Go言語ダウンロード
  2. ダウンロードしたファイルの展開
  3. 実行環境設定
  4. MyServerが必要とするGoパッケージのインストール
  5. ストレージサービスのビルド
  6. ストレージサービスの動作設定
  7. ストレージサービス起動

Go言語ダウンロード

前回は、ラズベリーパイの初期設定を完了させました。今回はラズベリーパイに対してGo言語の環境を構築します。

①Go言語をダウンロードします。バージョンは、1.9(2017年10月時点)です。

cd ~/CQ/download
wget https://storage.googleapis.com/golang/go1.9.linux-armv6l.tar.gz

※ラズベリーパイがネットにつながらない場合

以下のdhclientコマンドを実行して下さい。

sudo dhclient eth0

dhclientコマンドは、DHCPプロトコルを利用し、NICにIPアドレスを設定します。IPアドレスの設定以外にも、借り受けたIPアドレスの解放や、デフォルトルーターやネームサーバの情報を確認する目的にも利用します。ノートPCやラズベリーパイは、サーバから借り受ける形でIPアドレスを設定することが一般的です。

ダウンロードしたファイルの展開

①前回配置したMyサーバ配布ファイルの「/MyServer/golang」ディレクトリに移動します。そこにダウンロードしたgo言語を展開します。

cd ~/CQ/download/MyServer/golang
tar zxf ~/CQ/download/go1.9.linux-armv6l.tar.gz 

②「MyServer」ディレクトリとその中身を、CQディレクトリに移動します。また、gopath用の作業用ディレクトリを作成しておきます。

mv MyServer ~/CQ/
mkdir ~/CQ/MyServer/golang/gopath

以下のようなディレクトリ構成になります。

  • /home/pi/CQ/MyServer/
  • MyStorageServer/
  • golang
  • go
  • gopath
  • myserver.env
  • start.sh
  • stop.sh

実行環境設定

①環境変数「GOPATH」を設定し、PATHを通してコマンドラインから直接利用できるように設定します。

nano ~/.bashrc

以下の内容を、「.bashrc」の最終行に追記します。

export MYSERVER_ROOT=$HOME/CQ/MyServer
export GOROOT=$MYSERVER_ROOT/golang/go
export GOPATH=$MYSERVER_ROOT/golang/gopath
export PATH=$GOROOT/bin:$PATH
GOROOT GOのインストールディレクトリ
GOPATH 作業ディレクトリ

②bashを適用するため、一旦ログアウトして再度ログインします。

③以下のコマンドでインストールを確認します。

go version

go version go1.9 linux/arm

MyServerが必要とするGoパッケージのインストール

①gitをインストールします。

sudo apt-get update
sudo apt-get install git

gitのバージョンを確認します。

git --version

git version 2.1.4

②Goパッケージをインストールします。

go get github.com/labstack/echo
go get github.com/dgrijalva/jwt-go
echo https://github.com/labstack/echo
jwt https://github.com/dgrijalva/jwt-go

ストレージサービスのビルド

ストレージサービスプログラムをビルドします。

①MyServerディレクトリに移動し、goコマンドでビルドします。

cd ~/CQ/MyServer/MyStorageServer/
go build

ビルドが成功すると、MyStorageServerというファイルが生成されます。

ストレージサービスの動作設定

「MyStorageServer」ディレクトリの内容です。

  • /home/pi/CQ/MyServer/MyStorageServer/
  • config.json
  • MyStorageServer
  • MyStorageServer.go
  • README
  • ._README
  • Storager/
  • ._Storage
  • test/
  • ._test

①MyStorageServerディレクトリにある「config.json」ファイルを確認します。

cd /home/pi/CQ/MyServer/MyStorageServer
nano config.json

初期状態は以下のような内容です。

{
        "host": "192.168.11.5",
        "port": 3001,
        "data_store": "/tmp/Storage/DATA/"
}
host ラズベリーパイのIPアドレスを指定します。
host ポート番号を指定します。使っていなければ、デフォルトの「3001」でOKです。
data_store データの保存先です。デフォルトでは「tmp」は、ラズベリーパイを再起動すると内容が削除されてしまいます。データを保存しておきたい場合は、「/home/pi/CQ/MyServer/Storage/DATA」などのような設定に変更しましょう。

②データ保存場所を作成します。config.jsonで設定したディレクトリを作成します。

mkdir -p /tmp/Storage/DATA/

このディレクトリがなくてもストレージサービスは起動します。ただし、ファイルを保存実行するまで、ファイル一覧取得処理などがエラーになります。

ストレージサービス起動

コマンドでストレージサービスを起動します。起動方法は2パターンあります。初めは、「通常起動」で出力メッセージを確認します。動作確認が終わったら「テーモン起動」します。

①通常起動します。

cd /home/pi/CQ/MyServer/MyStorageServer
./MyStorageServer

Ctrl+Cで停止します。

②デーモン起動します。

cd /home/pi/CQ/MyServer/MyStorageServer
./start.sh

以下のコマンドで停止します。

./stop.sh

次回

次回は、ストレージサーバの動作確認をします。

ラズパイAIサーバを作る(ストレージサーバ編 動作確認)

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告