この記事では、Raspberry PiにGit、Node.js、Rust、Dockerをインストールして、個人用開発サーバーを構築する方法を学習します。最も安いオプションはたったの5ドルです。ここでスターターキット($ 25)を無料で入手できます。
Raspberry Piは、小さなパッケージに入った非常に強力なコンピューターです。最も安価なオプションであるRaspberryPiZeroは、フル機能のLinuxディストリビューションを実行し、高解像度ディスプレイを駆動することができます。これは2枚のコイン(USクォーター)のサイズで、5ドルかかります。
Raspberry Pi Zero Wは10ドルで、WiFiとBluetoothが統合されています。
「ハイエンド」では、RaspberryPi4デスクトップキットを100ドル未満で購入できます。 1.5GHzで動作する4コアARMCPU、GPU、2GB(最大8GB)のRAM、MicroSDカード上の16GB(最大2TB)のストレージ、wifiおよびイーサネットコネクタ、USBポート、駆動可能なHDMIポートを備えています4Kディスプレイ、キーボード、マウス。
Raspberry Piは、標準的なコンピューター以上のものでもあります。それは楽しくてハッキング可能です。 Raspberry Piは、GPIO(汎用入力出力)ピンの列を公開します。これらのピンに単純なセンサー(温度、湿度、光など)を接続し、Piで実行されているアプリケーションからそれらのデータをキャプチャできます。
これらのピンにLEDライトとモーターを取り付け、Piアプリケーションを使用してこれらの周辺機器を駆動することもできます。
カメラモジュールなどのより複雑なセンサーやデバイスの場合は、USBまたはWifi経由でPiに接続し、ソフトウェアでそれらにアクセスすることもできます。 Piは、学習やハードウェアハッキングに最適なデバイスです。このため、教育現場で広く使用されています。
しかし、楽しさと学習は子供だけのものではありません。非常に多くのコンピューティングパワーと簡単なネットワーキングにより、RaspberryPiは簡単にパーソナルアプリケーションサーバーになることができます。
たとえば、Webアプリケーション(たとえば、共同メモ取りアプリ、または共有するいくつかのドキュメント/ビデオ)をPiに配置し、会議に持ち込んで、部屋の全員がアクセスできるようにすることができます。インターネットも必要ありません。完全に分散化されており、検閲に強いです。
パーソナルサーバーは、開発者にとって特に便利です。ラップトップをいじることなく、サーバー側アプリケーションを展開およびテストするための別の環境を用意できます。個人の開発サーバーは、ステロイドのDockerのようなものです。この記事では、セットアップ方法を説明します。
まず、ラズベリーパイを入手します
これが初めてのRaspberryPiの場合、セットアップする最も簡単な(そして最も高価な)方法は、デスクトップキットを約100ドルで購入することです。ディスプレイを除いて、コンピューターに必要なものがすべて付属しています。
Piを個人用開発サーバーとして使用している場合は、初期設定後にディスプレイは必要ありません。電源を入れたら、ラップトップからSSHで接続できます。
この高性能Webアプリケーション学習演習に参加するときに、RaspberryPiスターターキットを無料で入手する方法を学びましょう。
もちろん、MicroSDカード、USB電源、キーボード、マウスなどの予備のコンピューターパーツがあれば、ボードだけを購入することでコストを節約できます。 Raspberry Pi Zeroボードを5ドルで、RaspberryPi4ボードを35ドルで入手できます。
しかし、ボードに欠けているのは、オペレーティングシステムとデータを保存するための「ハードドライブ」として機能するMicroSDカードです。 16GBのMicroSDカードをオンラインで10ドルで購入し、MicroSDカードリーダーを購入し、RaspberryPiImagerを使用してラップトップからMicroSDカードにオペレーティングシステムをロードできます。
2つの人気のある選択肢は、RaspberryPiOSとUbuntuLinuxです。どちらもDebianベースのLinuxディストリビューションです。ほとんどのスターターキットは、MicroSDカード(NOOBSと呼ばれます)にRaspberryPiOSをプレインストールします。
次の2つのセクションでは、両方のオペレーティングシステムについて説明します。
RaspberryPiOSのセットアップ方法
NOOBSでMicroSDカードを挿入し、ディスプレイ、キーボード、マウスを接続すると、電源を入れることができます。
そこから、画面の指示に従ってRaspberry Pi OS(以前はRaspbian OSと呼ばれていました)をインストールします。次に、ユーザーpiのパスワードを設定し、wifi接続を設定します。
ログイン後、[設定]→[Raspberry Pi構成]メニューに移動し、SSHを有効にします。これにより、別のコンピューターからPiにログインできるようになります。
注 :Piを「ヘッドレス」サーバーとして使用するために、ルーターに静的IPアドレスを要求できます。将来的には、Piの電源を入れて、他のコンピューターや電話からSSH経由で接続することができます。
Raspberry Pi OSは、DebianLinuxディストリビューションから派生しています。最新のWebブラウザー、コマンドライン端末、Python、Java、Scratch用のIDEなどの学習プログラムを備えた完全なデスクトップUI環境が付属しています。
私たちの目的のために、私たちは主にコマンドラインターミナルを介して開発およびサーバーソフトウェアをインストールすることに関心があります。
この時点で、次のコマンドを実行して、ローカルネットワーク上のPiのIPアドレスを確認することもできます。次に、そのローカルIPアドレス、ユーザー名pi、およびセットアップ中にpiに指定したパスワードを使用してPiにSSHで接続できます。
$ hostname -I
192.168.2.108 172.17.0.1
RaspberryPiOSにインストールされているソフトウェアパッケージの完全なリストはここにあります。最新のパッケージに更新してアップグレードすることは常に良い考えです。以下のコマンドを実行して、しばらくお待ちください。 1時間かかる場合があります。
$ sudo apt update && sudo apt upgrade
UbuntuServer20.04のセットアップ方法
Raspberry Pi OSは、主にデスクトップエクスペリエンスを対象としています。デバイスをサーバーまたはIoTデバイスとして使用したいだけの開発者にとっては、UbuntuLinuxの方がはるかに適しています。最新のソフトウェアパッケージとライブラリがあり、デスクトップウィンドウ、Webブラウザ、Java、ゲーム、学習ツールがなくてもはるかに効率的です。
RaspberryPi用のUbuntuServerイメージをWebからダウンロードして、MicroSDカードにロードできます。しかし、おそらくもっと簡単な方法は、Raspberry Pi Imagerを使用し、メニューからUbuntu Server 20.04 TLSを選択して、空のMicroSDカードに書き込むことです。
MicroSDカードの準備ができたら、次の手順に従ってWiFiネットワーク名とパスワードを入力する必要があります。これにより、RaspberryPiデバイスは起動するとすぐにネットワークに接続できます。
基本的には、MicroSDカードをRaspberry Piに挿入し、USB電源を接続して、オンラインになるのを待つだけです。 raspberrypi
を見つけることができます WiFiルーターからデバイスIPを送信し、ネットワーク上の任意のコンピューターからSSHで接続します。
初期のユーザー名とパスワードはubuntu / ubuntu
です。 。モニターやキーボードを接続する必要もありません。完全にヘッドレスのセットアップは以上です!
注 :何らかの理由で、起動時にRaspberry PiがWiFiに接続できない場合は、HDMIディスプレイとUSBキーボードを接続できます。次に、次の手順に従って、実行中のシステムでWiFiをデバッグおよびセットアップします。
次に、開発者ツールスタックをPiにインストールしましょう。
多くのソフトウェアをGitリポジトリから直接取得できるため、私は常にすべての開発環境にGitをインストールしています。ダウンロードやコピーの手間が省けます。
Gitを使用すると、自分の作業をプライベートリポジトリに保存してバックアップすることもできます。 Raspberry Piのような小さなコンピューターの場合、デバイスまたはMicroSDカードを紛失した場合に備えて、Gitで作業を保存することをお勧めします。
次のコマンドはGitをインストールします:
$ sudo apt install git
Node.jsをインストール
Raspberry PiをWebアプリケーション用の個人用開発サーバーに変えるには、最新のWebアプリケーションランタイムをインストールする必要があります。
今日のほとんどの開発者にとって、最良の出発点はNode.jsです。これにより、JavaScriptでサーバー側アプリケーションを作成できます。次の2つのコマンドは、PiにNode.jsをインストールします。
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
$ sudo apt install nodejs
次の2つのコマンドを実行すると、インストールが正しく行われたことを確認できます。 nodeとnpmの両方が利用可能になりました。
$ node -v
v10.19.0
$ npm -v
5.8.0
ここから、npmを使用してモジュールをインストールできます。たとえば、一般的に使用されるnpmモジュールは、WebアプリケーションのExpressフレームワークです。
$ npm install express
これで、ExpressJS hello worldの例を実行して、Pi上にWebサーバーを作成し、ネットワーク上の任意のコンピューターからWebブラウザーを使用してアプリケーションにアクセスできます。
Rustは、システムとWebアプリケーションの両方を作成するための急成長中のプログラミング言語です。ハードウェアに近く、高性能で、メモリセーフです。そのため、Rustは、RaspberryPiなどのリソースに制約のあるデバイスでアプリケーションを作成するための優れた言語になっています。
また、Rustは、過去5年連続でStackOverflowユーザーに最も愛されているプログラミング言語です。それを学ぶのはあなたの時間の価値が十分にあります!
Rustの重要なユースケースは、Rust関数をWebAssemblyにコンパイルし、Node.jsアプリケーション内で実行して、パフォーマンス、安全性、およびコードの移植性を実現することです。小さなRaspberryPiデバイスで計算量の多いWebアプリケーションを実行するのに最適です。実際、その方法を学べば、無料のRaspberryPiスターターキットを入手できます。
注:厳密に言えば、PiにRustツールをインストールする必要はありません。通常、PiでRustプログラムを実行するだけで済みます。 Rustプログラムを任意のコンピューターでコンパイルしてから、コンパイルしたバイナリをPiにコピーできます。
それでも、強力なCPUを使用すると、RaspberryPiでRustプログラムをコンパイルできます。では、なぜですか?
次のコマンドは、RustコンパイラツールチェーンをPiにインストールします。
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
次のコマンドを実行して、ログアウトして再度ログインせずに正しいパスを設定します。
$ source $HOME/.cargo/env
上記のコマンドは、cargoと呼ばれるRustパッケージマネージャーもインストールします。ほとんどのRust開発者は、貨物を使用して作業を構築および共有しています。
$ cargo -V
cargo 1.44.1 (88ba85757 2020-06-11)
次に、Rust学習リポジトリのクローンを作成し、例から学習できます。
$ git clone https://github.com/second-state/wasm-learning.git
これがHelloWorldの例です。楽しんでください!
$ cd wasm-learning/rust/hello
$ cargo build
Compiling hello v0.1.0 (/home/pi/Dev/wasm-learning/rust/hello)
Finished dev [unoptimized + debuginfo] target(s) in 4.35s
$ target/debug/hello
Hello, world!
詳細な学習リソースについては、Rustの公式WebサイトとRustbyExampleの書籍を確認してください。
Raspberry PiOSとUbuntuServerはどちらも、多くのソフトウェアパッケージを備えた非常に高性能なLinuxディストリビューションであることがわかりました。
しかし、他のOSでアプリケーションをテストしたい場合はどうなりますか?きれいに拭いてMicroSDカードに別のOSを再インストールする必要がありますか?答えはいいえだ。 Dockerを使用できます!次の2つのコマンドは、DockerをRaspberryPiにインストールします。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
次のコマンドを実行して、Dockerをpiユーザーとして使用できるようにします。
$ sudo usermod -aG docker pi
Docker infoコマンドは、DockerがRaspberryPiOSを搭載したARMシステムにインストールされたことを示しています。
$ docker info
... ...
Kernel Version: 4.19.118-v7l+
Operating System: Raspbian GNU/Linux 10 (buster)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 3.814GiB
Name: raspberrypi
ID: XERI:ZVVZ:XQVA:HXSH:KRPI:6GL2:5QRE:E7GZ:Z72Q:6SGF:CEI6:GKTC
Docker Root Dir: /var/lib/docker
... ...
次に、最新のUbuntuディストリビューションのDockerイメージをプルして実行し、コマンドラインユーザーとしてUbuntuにログインできます。
$ docker pull ubuntu
... ...
$ docker run -it ubuntu bash
root# ... enter commands ...