投稿日: | 最終更新日:
ラズパイAIサーバを作る(ストレージサーバ編 Go言語開発環境作成)
ファイル保存用のストレージサーバを作ります。今回は、ラズベリーパイに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 |
---|
作業の流れ
- Go言語ダウンロード
- ダウンロードしたファイルの展開
- 実行環境設定
- MyServerが必要とするGoパッケージのインストール
- ストレージサービスのビルド
- ストレージサービスの動作設定
- ストレージサービス起動
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
次回
次回は、ストレージサーバの動作確認をします。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1