Go言語開発環境作成)RaspberryPiファイル保存用のストレージサーバを作ります。今回は、ラズベリーパイにGo言語開発環境作成ます。次回ラズパイで作るストレージサービスラズパイ3を使って、ストレージサービスを作ります。商用レベルのサービを作るには多くの時間とコストがかかりますので、まず以下の特徴をもつ小規模な機能を作ります。個人または小グループでの利用を想定。ファイルの出し入れ機能の提供。ファイル保存ストレージサーバにファイルを保存する。保存先ファイルが存在する場合は上書きする。ファイル削除ストレージサーバに保存されているファイルを削除する。ファイル名はURLで指定する。ファイル・データ取得ストレージサーバに保存されているファイルの内容を取得する。ファイル名はURLで指定する。ファイル一覧取得ストレージサーバに保存されているファイルの一覧をファイル名のリストで保存する。ファイル情報ストレージサーバに保存されているファイルのサイズ・更新日時情報を取得する。ファイル名はURLで指定する。開発環境ストレージサービスの開発環境は、ラズベリーパイ対応と処理性能およびライブラリの豊富さから、Go言語を選択します。Go言語を実装すれば、ラズパイ以外の環境で開発したプログラムをそのままラズパイで動作させることができます。Go言語のEchoHTTPによるAPI呼び出しをサポートするGo言語のフレームワークであるEchoを使います。Echoを使えば、以下のことを意識することなく処理できます。クライアント-サーバ間のHTTP通信。リクエスト・パラメータの解析。リクエストURLに応じた処理の呼びかけ。フレームワークを導入すれば、煩雑な通信処理の実装に惑わされることなく作りたい機能の実装に集中できます。API開発者は必ず使うべきです。用意するものは以下の3点のみです。ネットワーク・インターネット接続環境RaspberryPi3クライアントPCラズベリーパイとクライアントPCの環境を設定します。1ラズパイの初期設定を行い、IPアドレスを固定します。必要なソフトウェアを入手するため、インターネット環境を用意します。ラズパイと通信して操作するためにネットワーク環境が必要です。RaspberryPi3ストレージサービスのサーバとしてRaspberryPi3ModelBを使用します。RaspberryPi2ModelBでもかまいません。LITEクライアントPC操作開発用のクライアントPCを用意します。windowsでもmacでも可能ですが、今回はubuntuを利用します。MyServerが必要とするGoパッケージのインストールストレージサービスのビルドストレージサービスの動作設定ストレージサービス起動Go言語ダウンロード前回は、ラズベリーパイの初期設定を完了させました。今回はラズベリーパイに対してGo言語の環境を構築します。1Go言語をダウンロードします。バージョンは、1.9(2017年10月時点)です。以下のdhclientコマンドを実行して下さい。eth0dhclientコマンドは、DHCPプロトコルを利用し、NICにIPアドレスを設定します。IPアドレスの設定以外にも、借り受けたIPアドレスの解放や、デフォルトルーターやネームサーバの情報を確認する目的にも利用します。ノートPCやラズベリーパイは、サーバから借り受ける形でIPアドレスを設定することが一般的です。ダウンロードしたファイルの展開1前回配置したMyサーバ配布ファイルの「/MyServer/golang」ディレクトリに移動します。そこにダウンロードしたgo言語を展開します。2「MyServer」ディレクトリとその中身を、CQディレクトリに移動します。gopath用の作業用ディレクトリを作成しておきます。~/CQ/MyServer/golang/gopath以下のようなディレクトリ構成になります。/home/pi/CQ/MyServer/MyStorageServer/golanggogopathmyserver.envstart.shstop.sh実行環境設定1環境変数「GOPATH」を設定し、PATHを通してコマンドラインから直接利用できるように設定します。~/.bashrc以下の内容を、「.bashrc」の最終行に追記します。PATH=$GOROOT/bin:$PATHGOROOTGOのインストールディレクトリGOPATH作業ディレクトリ2bashを適用するため、一旦ログアウトして再度ログインします。3以下のコマンドでインストールを確認します。linux/armMyServerが必要とするGoパッケージのインストール1gitをインストールします。gitgitのバージョンを確認します。2.1.42Goパッケージをインストールします。github.com/dgrijalva/jwt-goechohttps://github.com/labstack/echojwthttps://github.com/dgrijalva/jwt-goストレージサービスのビルドストレージサービスプログラムをビルドします。1MyServerディレクトリに移動し、goコマンドでビルドします。buildビルドが成功すると、MyStorageServerというファイルが生成されます。「MyStorageServer」ディレクトリの内容です。/home/pi/CQ/MyServer/MyStorageServer/config.jsonMyStorageServerMyStorageServer.goREADME._READMEStorager/._Storagetest/._test1MyStorageServerディレクトリにある「config.json」ファイルを確認します。config.json初期状態は以下のような内容です。"/tmp/Storage/DATA/"}hostラズベリーパイのIPアドレスを指定します。hostポート番号を指定します。使っていなければ、デフォルトの「3001」でOKです。data_storeデータの保存先です。デフォルトでは「tmp」は、ラズベリーパイを再起動すると内容が削除されてしまいます。データを保存しておきたい場合は、「/home/pi/CQ/MyServer/Storage/DATA」などのような設定に変更しましょう。2データ保存場所を作成します。config.jsonで設定したディレクトリを作成します。/tmp/Storage/DATA/このディレクトリがなくてもストレージサービスは起動します。ファイルを保存実行するまで、ファイル一覧取得処理などがエラーになります。ストレージサービス起動コマンドでストレージサービスを起動します。起動方法は2パターンあります。初めは、「通常起動」で出力メッセージを確認します。動作確認が終わったら「テーモン起動」します。/home/pi/CQ/MyServer/MyStorageServer./MyStorageServerCtrl+Cで停止します。2デーモン起動します。/home/pi/CQ/MyServer/MyStorageServer./start.sh以下のコマンドで停止します。次回は、ストレージサーバの動作確認をします。