apeescape2.com
  • メイン
  • 計画と予測
  • モバイル
  • 分散チーム
  • Uxデザイン
技術

開発用のRaspberryPiサーバーを構築する方法

ザ・ ラズベリーパイ は、5米ドルという低価格で入手でき、さまざまな種類のソフトウェアを実行できる小さなコンピューターです。 多くの異なるプロジェクトを構築する 。

この記事では、ホーム開発サーバーとしてセットアップし、ネットワークの外部からアクセスできるフルスタックJavaScriptアプリケーションをデプロイするプロセスについて説明します。これは、独自の設定に最適です リモートデジタルワークスペース 、または単に開発に使用するハードウェアを制御するため。

このRaspberryPiホームサーバーには何が必要ですか?

これは特にRaspberryPi 3チュートリアルになりましたが、 すべき に戻ってモデルで引き続き動作します 初代 —古いモデルまたはRaspberry Pi Zeroをお持ちの場合は、以下のコメントで経験をお知らせください。



Raspberry Piボード自体に加えて、次のものが必要になります。

  • マイクロUSB充電器
  • イーサネットケーブル
  • microSDカード(最小8GB、最大32GBのカードで問題ないようです)

これらは、初期設定時にも役立ちます。

  • USBキーボード
  • HDMIケーブルとモニター

Raspberry Pi OS:Raspbian

RaspberryPiへのオペレーティングシステムのインストールは簡単です。まず、コンピューターを使用して、ブートイメージをmicroSDカードにインストールします。次に、カードをRaspberry Piに挿入し、そこから起動します。

ラズビアン から移植されたLinuxディストリビューションです Debian 7.0( Wheezy ) 、およびは、デバイスのアーキテクチャ用に最適化されたRaspberryPiの公式OSです。 Piでお気に入りのOSを実行するための他のオプションがありますが、その単純さからRaspbianを使用します。

このチュートリアルは、このバージョン(またはそれ以降)のRaspbianで動作するように更新されています。

Kernel version : #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) Kernel release : 4.9.0-8-amd64

Raspbianをインストールするには、 公式ダウンロードページ 最新のRaspbianバージョンを含むzipファイルをダウンロードします。

次に、microSDカードをコンピューターのSDカードスロットまたはアダプターに挿入します。コンピュータのオペレーティングシステムに応じて、ラズベリーのWebサイトに記載されている手順に従ってください。 Linux 、 マックOS 、または ウィンドウズ 。

プロセスが終了したら、SDカードをコンピューターから取り出し、RaspberryPiに挿入します。イーサネットケーブルを使用してRaspberryPiをルーターに接続し、MicroUSB充電器を接続します。これによりRaspberryPiの起動が開始されます。

初期構成には、次の2つのオプションがあります。

  • USBキーボードとHDMIモニターをお持ちの場合は、初期設定のためにそれらをRaspberryPiに接続できます。
    • Piは、これらのデバイスが接続されるとすぐにそれらを認識する必要があります。
    • Piが初めて起動すると、自動的にraspi-configが実行されます。最初の起動後、sudo raspi-configを実行する必要がありますデバイスを構成するために自分で。
  • それらがない場合は、SSHを使用してRaspberryPiに接続できます。
    • まず、ローカルネットワークでRaspberryPiのIPアドレスを見つける必要があります。これはによって行うことができます ルーターの管理ページに接続するか、nmapなどのネットワークツールを使用します 。
    • デバイスのIPアドレスを取得したら、端末からSSHを使用して(またはを介して)デバイスに接続します パテ Windowsを使用している場合)。デフォルトのユーザーはpiで、デフォルトのパスワードはraspberryです。したがって、たとえば、IPアドレスが192.168.1.16の場合、ssh [email protected] を実行します。プロンプトが表示されたらパスワードを入力します。
    • 接続したら、sudo raspi-configを実行します。

raspi-config最終的なセットアップについて説明します。すべてのオプションを構成できますが、最も重要なのは最初の2つです。ファイルシステムを拡張し、すべてのSDカードストレージがOSで使用できるようにすることと、デフォルトのPiユーザーのパスワードを変更してサーバーが侵入者から保護されています。

Raspi-config

Raspberry PiにWebサーバー(Nginx)をインストールします

次に、ウェブサーバーをインストールします。 Nginxはメモリフットプリントが小さく、Node.js(後で設定します)とうまく連携するため、私はNginxを好みます。などの他のWebサーバー Apache または lighttpd 、も機能しますが、このデモではNginxを使用します。

何かのインストールを開始する前に、Piで次のコマンドを実行して、すべてが最新であることを確認する必要があります。

sudo apt-get update sudo apt-get upgrade

次に、apt-getを使用してNginxをインストールできます。

sudo apt-get install nginx

インストールが完了したら、次のコマンドを実行してサーバーを起動します。

不和ボットにコマンドを追加する方法
sudo service nginx start

前の手順でRaspberryPiのローカルIPを把握する必要がなかった場合は、ifconfigを実行して確認します。イーサネットアダプタの出力はeth0の下にあり、ローカルIPアドレスにはinet addrというラベルが付いています。

IPアドレスがわかれば、コンピュータのブラウザでIPアドレスを指定すると、デフォルトの「WelcometoNginx」メッセージが表示されます。

Webに公開:ポートフォワーディング

ローカルネットワークの外部からRaspberryPiにアクセスする予定がない場合は、この手順をスキップできます。ただし、他の場所からサーバーにアクセスしたい場合は、それが可能であることを確認しましょう。

一般的なホームネットワークでは、ルーターに接続されているデバイスは外の世界からは見えません。ネットワークを使用して、外部からルーターにのみアクセスできます 外部 IPアドレス。ルーターは、ネットワークへの着信トラフィックと、それを送信するデバイスを決定する責任があります。

ローカルネットワーク上のデバイスが接続を開始すると(たとえば、ブラウザでWebサイトを開いたとき)、ルーターは着信応答トラフィックをこの接続の一部として認識し、通過を許可します。ただし、ルーターが開いている接続の一部ではない着信トラフィックを受信した場合(たとえば、外部デバイスが内部デバイスとの接続を開始しようとした場合)、ルーターは着信トラフィックがネットワークに侵入するのをブロックします。これは、ネットワークを保護するための重要なセキュリティ機能です。

では、どのようにして外部からPiに接続できますか?答えは ポートフォワーディング 。ルーターは、特定のポートの着信接続が通過し、正しいデバイスに送信されるように構成する必要があります。デフォルトでは、HTTPプロトコルはポート80を使用し、SSHはポート22を使用します。したがって、これらはWebアプリケーションにアクセスし、サーバーを管理するための安全な接続を可能にするためにルーターで開く必要がある2つのポートです。

ポートフォワーディング。

ポートを開いて転送するようにルーターを構成する手順は、インターネットプロバイダーとルーターのブランドによって異なる場合がありますが、いずれの場合も、ルーターの管理ページの高度な構成オプションを使用して実行できるはずです。 「転送」、「ポート転送」、「ネットワークアドレス変換」などの名前のオプションを探すだけです。

HTTP接続用のポートとSSH用のポートを開く必要があります。基本的な考え方は、これら2つの外部ポート宛てのデータをRaspberry Piに転送し、WebトラフィックはNginxがリッスンしているポート80に送信し、SSHトラフィックはポート22に送信してSSHサーバーが外部コンピューターからの接続を受け入れることで構成されます。これがルーターの構成ページでどのように表示されるかの例を次に示します。

ポートフォワーディング設定テーブル。

RaspberryPiの内部IPアドレスが192.168.1.16の場合のポート転送構成。ポート80または22に向かうすべての着信トラフィックは、この内部アドレスに転送されます。

ルーターの外部IPアドレスは簡単に確認できます Googleに「私のIPアドレスは何ですか」と入力します 。その後、ルーターのネットワークの外部に移動する場合は、ssh [email protected] {external IP address}でSSH接続を開くことにより、ポート転送が機能していることをテストできます。同様に、HTTPポート転送は、ブラウザのアドレスバーに外部IPアドレスを入力することでテストできます。ポートフォワーディングでは、ルーターの外部IPを知っていれば、外部から誰でもこれらのポートのデバイスにアクセスできることに注意してください。

静的IPがない場合は、動的DNSを設定できます。とてもシンプルで簡単なステップです。ルーターからダイナミックDNSを設定することも、RaspberryPiを設定することもできます。ここではDDNSの構成方法については説明しませんが、 BitPi.coには、このテーマに関する優れたチュートリアルがあります 必要に応じて。

フレームワークのインストール:フルスタックJavaScript

ほとんどのWebフレームワークはNginx上で実行できますが、JavaScriptを使用してフルスタックにする方法を見てみましょう。これを行うには、インストールする必要があります Node.js そして MongoDB 。

現在、Node.jsは次の方法でRaspberryPiに簡単にインストールできます。

sudo apt-get install nodejs

インストールが完了したら、node -vを実行して機能しているかどうかを確認できます。

これで、次のように入力するだけでMongoDBをインストールできます。

sudo apt-get install mongodb

Raspberry Piをオフにする必要がある場合は、データベースの破損を防ぐために、最初にサービスをシャットダウンする必要があることに注意してください。

sudo service mongodb stop

アプリをデプロイする

ローカルマシンで開発してから、変更をBitBucketのGitリポジトリにプッシュできます。 RaspbianにはGitがプリインストールされているため、最新のアプリケーションコードをデバイスにプルして実行できます。

プロジェクトの足場

まず、いくつかのアプリケーションコードを設定し、それをGitリポジトリにプッシュしましょう。アプリケーションを起動する方法はたくさんありますが、私のお気に入りの1つは ジェネレーター-角度-フルスタック 、サーバーコードとクライアントコードの両方の足場。

C ++のプログラミングを学ぶ

インストールgenerator-angular-fullstackコンピューター上:

npm install -g generator-angular-fullstack

アプリケーションの新しいディレクトリを作成します。

mkdir my-app cd my-app

そして、アプリケーションの足場:

yo angular-fullstack my-app

リポジトリを作成してコードをプッシュする

次に、BitBucketにリポジトリを作成します。 ここで説明されているように 。次に、ローカルディレクトリを設定します。

git init git remote add origin [email protected] :USER/REPO.git

したがって、コードをコミットしてプッシュできます。

git add . git commit -m 'Initial commit' git push -u origin master

ジェネレーターには grunt-build-control プラグイン。これにより、ビルドコードをリポジトリ内の特定のブランチにコミットできます。 BitBucketの設定をGruntfile.jsに追加するだけですアプリケーションのルートディレクトリ:

buildcontrol: { options: { dir: 'dist', commit: true, push: true, connectCommits: false, message: 'Built %sourceName% from commit %sourceCommit% on branch %sourceBranch%' }, bitbucket: { options: { remote: ' [email protected] :USER/REPO.git', branch: 'build' } } }, // ...

今すぐ実行:

grunt build

…配布フォルダを作成するには、次のようにします。

grunt buildcontrol:bitbucket

…コードをコミットして、リポジトリのビルドブランチにプッシュします。

SSHキーを生成する

これで、コードがホストされました。 Raspberry Piにデプロイする前に、Raspberry PiのSSHキーを生成し、BitBucketアカウントに追加する必要があります。この手順はすぐに実行しますが、問題が発生した場合は、 BitBucketガイド 。したがって、Raspberry Piターミナルに再度ログインして、公開鍵と秘密鍵のペアを生成します。

ssh-keygen

次に、エージェントを起動します。

ssh-agent /bin/bash

そして、エージェントにキーを追加します。

ssh-add /home/pi/.ssh/id_rsa

ここで、公開鍵の内容を出力する必要があります。

cat /home/pi/.ssh/id_rsa.pub

…コピーしてBitBucketに貼り付けることができます。

BitBucketで、プロフィール写真をクリックして、 アカウントを管理する 。下 セキュリティ 、検索 SSHキー 、ボタンをクリックします キーを追加 。

化粧品業界の大きさ

リポジトリのクローンを作成する

アプリのコードを配置する場所に関する規則はありませんが、/var/wwwを作成できます。ディレクトリを作成し、すべてのプロジェクトをそこに配置します。

cd /var sudo mkdir www

sudoの使用を避けるためWebルートにファイルを配置する場合は、所有者をPiユーザーに変更し、グループをwww-dataに変更できます。これは、Nginxで使用されます。

sudo chown -R pi:www-data www cd www

これで、リポジトリのビルドブランチのクローンを作成し、依存関係をインストールできます。

git clone [email protected] :USER/REPO.git --branch build --single-branch cd REPO npm install --production

完了したら、アプリを起動して、環境を本番環境に設定できます。

export NODE_ENV=production; node server/app.js &

次に、コンピューターのブラウザーでデバイスのIPアドレスを指定して、機能するかどうかを確認します。

自分で呼び出すことができる開発サーバーがあればいいのにと思いませんか? #RaspberryPiでできます。 つぶやき

Nginxリバースプロキシを構成する

アプリケーションを外部からアクセスできるようにするためのもう1つのステップが残っています。 NginxはPiのHTTPリクエストを受信するポート80でリッスンしていますが、ノードアプリケーション自体は別のポート(たとえば、ポート8080)でリッスンしています。したがって、Nginxを構成して リバースプロキシ 、アプリケーション向けのリクエストを認識し、それらをノードに渡します。

Nginxは、サービスを提供する各アプリケーションの構成ファイルをsites-availableに保持します。フォルダ:

cd /etc/nginx/sites-available/

ここで、defaultをコピーできます構成ファイルとあなたの都合の良いときに編集:

sudo cp default my-app sudo nano my-app

最終的な構成ファイルは次のようになり、NginxがNode.jsサーバーのプロキシとして機能します。

server { listen 80; root /var/www/my-app/; # identifies the location of the application you are configuring server_name my-app.dev; # identifies the hostname used by this application's traffic location / { proxy_pass http://localhost:8080/; # configures the back-end destination for this traffic } }

この構成を有効にするには、sites-enabledにシンボリックリンクを作成する必要があります。 Nginxが実行時にアクティブな構成を検索するフォルダー:

sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/my-app

そして、サービスをリロードして、これらの変更をアクティブにします。

sudo service nginx reload

この時点で、アプリケーションはmy-app.dev向けのHTTPトラフィックを受信する準備ができています。ドメイン(上記で構成したserver_name my-app.devディレクティブに感謝します)。解決する必要がある最後の問題は、外部から送信するトラフィックをこのドメイン名と一致させる方法です。ドメイン名を購入してIPを指すこともできますが、hostsファイルが助けになり、それを不要にします。

サイトにアクセスするワークステーションで、ルーターの外部IPアドレスを追加し、それをホスト名my-app.devと照合するだけです。 my-app.dev用に生成するHTTPトラフィックその後、Hostに正しいホスト名を付けて、ルーターに直接送信されます。 HTTPヘッダー。

Windowsでは、管理者権限で、c:windowssystem32driversetchostsにあるファイルを編集できます。メモ帳で。 LinuxおよびMacでは、ターミナルをsudo nano /etc/hostsで使用できます。およびsudo nano /private/etc/hostsそれぞれ。

## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 212.124.126.242 my-app.dev # add your host name to the list

次は何ですか?

すべての設定が完了したので、RaspberryPiに必要な数のアプリケーションをデプロイしてインストールできます 永遠に または pm2 Node.jsサーバーを存続させるため。

また、問題が発生した場合は、SDカードをワイプして、最初からやり直すことができることを忘れないでください。

動作中のRaspberryPi開発サーバー。

基本を理解する

Raspberry Piから始めるには何が必要ですか?

正しいケーブルとアダプターを備えたモニター。マイクロUSB電源;有線キーボードとマウス、またはBluetoothアダプター付きのワイヤレスキーボードとマウス。マイクロSDカード;そしてもちろん、ラズベリーパイ。

Raspberry PiでWindowsを実行できますか?

RaspberryPi用の直接のWindowsデスクトップOSはありません。 Windowsには、モノのインターネット(IoT)デバイス向けのスリム化バージョンがあります。これは主に、IoTアプライアンスのプロトタイプを作成したい開発者やハードウェアハッカー向けに設計されています。

なぜラズベリーパイを使うのですか?

RaspberryPiを使用できるものはたくさんあります。ホームオートメーションサーバー、リモート制御ロボット、ネットワーク接続ストレージ(NAS)デバイス、ミニWebサーバー、メディアセンター、オルゴール、レトロゲームコンソール、ラズベリークラスターサーバー、VPNサーバーなどを構築できます。

モノのインターネット(IoT)Raspberry Piとは何ですか?

そのようなことはありません。 IoTは、電話やラップトップなどの汎用デバイスとは対照的に、専用のin-situインターネット接続デバイスで構成されています。 IoTの主要なプラットフォームの1つは、RaspberryPiです。非常に低コストで小さな組み込みパッケージで完全なLinuxサーバーを提供するため、人気のあるプラットフォームです。

ラズベリーパイとは何ですか?それは何をしますか?

それはシングルボードコンピューターであるか、ミニコンピューターと呼ばれることもあります。デスクトップやサーバーマシンで想像できるほとんどすべてのことを、それで何でもできます。

ArduinoとRaspberryPiの違いは何ですか?

Arduinoはマイクロコントローラーであり、セルフホストチップです。完全なコンピューターではないため、コードを作成するには別のコンピューターが必要です。 Raspberry Piは真正なコンピューターです。CPU、GPU、HDMI、サウンド、ディスプレイ、LAN用のポートを備えています。それを保存するには、OS(Linuxなど)とハードドライブ(またはSDカード)が必要です。

ホームサーバーの用途は何ですか?

Raspberry Piは、マルチメディアストレージなどの複数の目的のホームサーバーとして、またはバックアップワークステーション、電子メールサーバー、監視カメラ、テストサイト、Jenkinsホスト、Subversionサーバー、Wikiホストなどとして使用できます。

Raspberry Piでサーバーを実行できますか?

はい、RaspberryPiではほとんどすべてのタイプのサーバーを実行できます。

差し迫った商用ロボット革命

財務プロセス

差し迫った商用ロボット革命
動機付けのルール:失敗した販売インセンティブスキームの修正についての話

動機付けのルール:失敗した販売インセンティブスキームの修正についての話

財務プロセス

人気の投稿
JavaScript、Python、Ruby、Swift、ScalaのOption / Maybe、Either、Future Monads
JavaScript、Python、Ruby、Swift、ScalaのOption / Maybe、Either、Future Monads
NvidiaShield-Androidゲームコンソールの別の見方
NvidiaShield-Androidゲームコンソールの別の見方
iOSのRxSwiftとアニメーション
iOSのRxSwiftとアニメーション
効果的なランディングページをデザインする方法
効果的なランディングページをデザインする方法
ブルータリストのWebデザイン、ミニマリストのWebデザイン、そしてWebUXの未来
ブルータリストのWebデザイン、ミニマリストのWebデザイン、そしてWebUXの未来
 
財務はあなたの会社で最も過小評価されているチームです
財務はあなたの会社で最も過小評価されているチームです
ApeeScapeは、エリートタレントネットワークで教育およびEdTech市場にサービスを提供するためのプラクティスを開始します
ApeeScapeは、エリートタレントネットワークで教育およびEdTech市場にサービスを提供するためのプラクティスを開始します
ユーザーを知る– UX統計と洞察(インフォグラフィック付き)
ユーザーを知る– UX統計と洞察(インフォグラフィック付き)
競合分析に関する製品設計者ガイド
競合分析に関する製品設計者ガイド
AngularJSとPlayFrameworkを使用した最新のWebアプリケーションの構築
AngularJSとPlayFrameworkを使用した最新のWebアプリケーションの構築
人気の投稿
  • ワードプレスにAPIを追加する方法
  • 国境調整税対関税
  • 経験は感覚なので測定することは不可能です。
  • どのタイプのLLCが必要ですか
  • PHPエラーログはどこにありますか
  • LLCの法人とは
カテゴリー
リモートの台頭 計画と予測 データサイエンスとデータベース Uiデザイン 人とチーム プロセスとツール トレンド モバイル 収益と成長 ツールとチュートリアル

© 2021 | 全著作権所有

apeescape2.com