投稿日: | 最終更新日:
ラズパイAIサーバを作る(ストレージサーバ編 ラズパイ準備)
ファイル保存用のストレージサーバを作ります。まず、ストレージサーバに使用するラズパイの準備を行います。
ラズパイで作るストレージサービス
ラズパイ3を使って、ストレージサービスを作ります。いきなり商用レベルのサービスを作るには多くの時間とコストがかかりますので、まず以下の特徴をもつ小規模な機能を作ります。
- 個人または小グループでの利用を想定。
- ファイルの出し入れ機能の提供。
ファイル保存 | ストレージサーバにファイルを保存する。保存先ファイルが存在する場合は上書きする。 |
---|---|
ファイル削除 | ストレージサーバに保存されているファイルを削除する。ファイル名はURLで指定する。 |
ファイル・データ取得 | ストレージサーバに保存されているファイルの内容を取得する。ファイル名はURLで指定する。 |
ファイル一覧取得 | ストレージサーバに保存されているファイルの一覧をファイル名のリストで保存する。 |
ファイル情報 | ストレージサーバに保存されているファイルのサイズ・更新日時情報を取得する。ファイル名はURLで指定する。 |
準備
用意するものは以下の3点のみです。
- ネットワーク・インターネット接続環境
- RaspberryPi3
- クライアントPC
ネットワーク・インターネット接続環境
必要なソフトウェアを入手するため、インターネット環境を用意します。また、ラズパイと通信して操作するためにネットワーク環境が必要です。
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 |
---|
初期設定・IPアドレス固定
ラズパイをサーバにするため、Linux(RASPBIAN JESSIE LITE)をインストールし、ネットワークを利用します。
①SDカードにRaspberryPiのOSを書き込んでください。
→Ubuntuで、RaspberryPiのOSをSDカードに書き込む
②電源を接続し、ラズパイを起動します。ラズパイを直接操作できるようにディスプレイとキーボード、マウスを接続します。また、LANケーブルを接続します。
③ラズパイを操作できるようになったらログインします。初期ログインのユーザ名・パスワードは以下のとおりです。
ユーザ名 | pi |
---|---|
パスワード | raspberry |
④OSをアップデートします。
sudo apt-get update sudo apt-get upgrade
⑤ついでに自動アップデートを有効にします。
sudo apt-get install unattended-upgrades apt-listchanges sudo dpkg-reconfigure -plow unattended-upgrades
unattended-upgrades | 有効にすると、セキュリティ上重要なアップデートを自動で実施します。 |
---|---|
apt-listchanges | パッケージの変更履歴の通知ツール |
dpkg-reconfigure | インストール済みパッケージを再設定します。 |
以下のようにがunattended-upgradesの設定表示されますので、「yes」をクリックします。
⑥ipアドレスを確認します。
ifconfig
「inet addr」の部分を確認します。私の環境では、「192.168.11.5」とします。
⑦ipアドレスを固定します。
sudo nano /etc/dhcpcd.conf
以下の内容を最終行に追記します。
interface eth0 static ip_address=192.168.11.5/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1
192.168.11.5 | 固定IPアドレス |
---|---|
24 | ネットマスク(255.255.255.0) |
192.168.1.1 | ブロードバンドルーターのアドレス |
⑧設定を反映させるため、以下のように実行します。
sudo service dhcpcd reload
クライアントPCからラズパイへリモートアクセス
①クライアントPC(Ubuntu)に以下の「arp-scan」パッケージをインストールします。
sudo apt update sudo apt install arp-scan
「arp-scan」パッケージは、同一Network内で使用されている「IP/MACアドレスの」一覧を取得するコマンドです。
②同一LAN内のラズパイのipアドレスをスキャンしてみます。
sudo arp-scan -l
以下のように表示されます。2行目がラズパイのipアドレスです。
192.168.1.1 xx:xx:xx:xx:xx:xx (Unknown) 192.168.11.5 xx:xx:xx:xx:xx:xx (Unknown)
③以下のコマンドでssh接続します。
ssh pi@192.168.11.5
あれ?ポート22の接続が拒否されてしまいました。リリースノートを確認すると、11/25版で、SSHはデフォルト無効になってしまいました。ラズパイ側でSSH接続を許可する必要があります。
ssh: connect to host 192.168.1.6 port 22: Connection refused
ラズパイのSSH接続を許可する
①ラズパイから以下のコマンドで環境設定UIを起動します。
sudo raspi-config
②「5 Interfacing Options」 →「P2 SSH」と進みます。
「YES」を押します。
再度SSH接続
①以下のコマンドで再度ssh接続します。
ssh pi@192.168.11.5
以下のようなメッセージが出ますので、「yes」を入力します。
The authenticity of host '192.168.11.5 (192.168.11.5)' can't be established. ECDSA key fingerprint is SHA256:n/xxxx.......
メッセージを訳すと、
ホスト ‘192.168.11.5 (192.168.11.5)’の真正性は確立できません。
ECDSAの鍵の指紋は、SHA256:n/xxxx……です。接続を続行してもよろしいですか(はい/いいえ)?
③piユーザのパスワードを入力してログインします。
Myサーバ配布ファイルのダウンロード・配置
ストレージサーバのテンプレートを拝借します。クライアントPCでダウンロードしてLANに接続したラズパイ3にファイルを送ります。
ラズパイにMyサーバ配布ファイルの配置ディレクトリ作成
①ラズパイ側の作業です。以下のように、ホームディレクトリ直下にMyサーバ配布ファイルを配置する場所を作成します。
mkdir ~/CQ/download
「~/」は、ホームディレクトリです。piユーザの場合は、「/home/pi」です。
クライアントにMyサーバ配布ファイルをダウンロードしてラズパイへ転送
①クライアントPCの作業です。Myサーバ配布ファイルをダウンロードします。
②SSH接続ができましたので、以下の「scp」コマンドでファイルをラズパイのディレクトリにコピーします。
scp MyServer-0.2.tar.gz pi@192.168.11.5:~/CQ/download
ラズパイにMyサーバ配布ファイルの展開
①ラズパイ側の作業です。以下のように、Myサーバ配布ファイルを展開します。
tar zxf ^/CQ/download/MyServer-0.2.tar.gz
以下のような構成です。
- MyServer/
- MyStrageServer/
- golang
- myserver.env
- start.sh
- stop.sh
MyStrageServer | ストレージサービス |
---|---|
golang | Go言語配置場所 |
myserver.env | 環境変数設定ファイル |
start.sh | 起動スクリプト |
stop.sh | 停止スクリプト |
次回
次回は、準備したラズベリーパイにGo言語開発環境を作成します。
- 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