Render、AWS、DigitalOcean などのさまざまな無料および有料のホスティング オプションにより、アプリケーションのデプロイがますます簡単になりました。ただし、ホスティング料金を定期的に支払わずにアプリケーションを学習、実験、展開したい開発者にとって、Raspberry Pi は優れた代替手段となります。このコンパクトでありながら強力なデバイスを使用すると、Web アプリケーションをホストするための独自の Linux ベースのサーバーを作成できます。
このブログでは、MySQL (Raspberry Pi 上の MariaDB) と Prisma ORM を使用して TypeScript Node.js アプリケーションをデプロイする方法を検討します。ラズベリーパイ。さらに、リバース プロキシ用に NGINX を構成し、Ngrok を使用してアプリケーションをインターネットに公開します。飛び込んでみましょう!
ツールの概要
ラズベリーパイ
Linux ベースのオペレーティング システムを実行する、低コストのシングルボード コンピューター。 IoT または Web アプリケーション用に独自のサーバーを作成するのに最適です。
Node.js と TypeScript
Node.js はサーバー上で JavaScript を実行するためのランタイム環境であり、TypeScript は JavaScript に静的型付けを追加して、コードベースをより保守しやすくします。
MySQL (Raspberry Pi 上の MariaDB)
人気のリレーショナル データベース システムである MariaDB は、MySQL と互換性のある代替品であり、Raspberry Pi に十分な軽量です。
プリズマ ORM
タイプセーフなクエリ言語とスキーマの移行によるデータベースの対話を簡素化するオブジェクト リレーショナル マッピング (ORM) ツール。
NGINX
高性能 HTTP サーバーおよびリバース プロキシ サーバー。これは、トラフィックを Node.js アプリケーションにルーティングするのに役立ちます。
ヌグロク
複雑なネットワーク構成を行わずに、ローカルでホストされているアプリケーションをインターネットに安全に公開するトンネリング ツールです。
前提条件
- 動作する Raspberry Pi - Raspberry Pi で SSH が有効になっていて、リモートからアクセスできることを確認します。
- Github リポジトリ - 簡単にデプロイできるように、Node.js TypeScript アプリケーションを GitHub リポジトリでホストする必要があります。
- Ngrok アカウント - Ngrok で無料アカウントを作成し、Raspberry Pi アプリをインターネットに公開するための認証トークンを取得します。
ラズベリーパイのセットアップ
-
OS をインストールします
Raspberry Pi OS などの OS を使用して Raspberry Pi をセットアップします。 Raspberry Pi Imager を使用して、Raspberry Pi と互換性のある他の OS を見つけます。
-
IP アドレスを見つける
Angry IP Scanner などのツールを使用して、Raspberry Pi の IP アドレスを検出します。 Raspberry Pi がローカル マシンと同じネットワークに接続されていることを確認してください。
-
Raspberry Pi のステータスを確認する
ping <ip_address_of_rpi> </ip_address_of_rpi>
-
Raspberry Pi に SSH で接続します
ssh <username>@<ip_address_of_rpi> </ip_address_of_rpi></username>
を置き換えます。 Raspberry Pi のユーザー名と
IP アドレスを入力し、パスワードを入力します。 -
システムを更新します
sudo apt update && sudo apt upgrade
-
Git をインストールします
git がインストールされているかどうかを確認します。そうでない場合は、以下のコマンドを実行して git
をインストールします。sudo apt install git
Node.jsのインストール
node js をインストールするには、nvm (Node Version Manager) を使用します。コマンドライン経由で、異なるバージョンのノードを素早くインストールして使用することができます。
-
NVM をインストールします
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
-
インストールの確認
nvm --version
-
Node.js の最新の LTS バージョンをインストールします
nvm install --lts
-
Node.js と npm のインストールを確認する
node --version # v22.12.0 npm --version # 10.9.0
MySQL (MariaDB) のセットアップ
Raspberry Pi OS の場合は、MariaDB をインストールします。
-
MariaDB SQL Server をインストールします
sudo apt install mariadb-server
-
MariaDB の安全なインストール
sudo mysql_secure_installation
プロンプトに従ってデータベースを保護します。
- 現在の root パスワードを入力してください: - root ユーザーの現在のパスワードの入力を求められたら、Enter キーを押します (まだ設定されていないため)。
- root パスワードを設定します: - root パスワードを設定するように求められたら、「n」と入力します (後で設定します)。
- 匿名ユーザーの削除: - 匿名ユーザーを削除してセキュリティを向上させるには、「Y」と入力します。 (テスト目的で、n を入力して匿名ユーザーを維持できます。)
- リモートでの root ログインを禁止します: - リモートでの root ログインを許可するには、n を入力します (オプションですが、安全性は低くなります)。
- テスト データベースを削除します: - y と入力して、テスト データベースを削除し、それにアクセスします。 (保持したい場合は n を入力してください。)
-
MariaDB クライアントにログインします
sudo mysql
-
MariaDB の root パスワードをセットアップします
まず、データベース サーバーに付与テーブルをリロードするように指示する必要があります。
MariaDB [(none)]> FLUSH PRIVILEGES;
以下のクエリで root パスワードを変更します。
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>'; </new_password>
を置き換えます。自分のパスワードを使用してください。
exit コマンドを使用して MariaDB CLI を終了します。
MariaDB [(none)]> exit; Bye
-
root ユーザーで MariaDB クライアントにログインします
ping <ip_address_of_rpi> </ip_address_of_rpi>
root ユーザーのパスワードを入力します。
データベースとユーザーのセットアップ
新しいデータベースとユーザーを作成しましょう。作成した新しいデータベースに対するすべての権限を新しいユーザーに付与します。
-
データベースを作成する
ssh <username>@<ip_address_of_rpi> </ip_address_of_rpi></username>
-
パスワードを使用して新しいユーザーを作成します
sudo apt update && sudo apt upgrade
-
作成された新しいユーザーに権限を付与します
sudo apt install git
-
特権テーブルをフラッシュします
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
exit コマンドを使用して mysql クライアントを終了します。
-
新しいユーザーでログイン
nvm --version
ユーザーの作成時に使用したパスワードを入力します。
-
ユーザーがデータベースをリストできることを確認します
nvm install --lts
それだけです!このデータベースとユーザーをアプリケーションで使用します。
Node.js アプリケーションをセットアップする
-
Github リポジトリのクローンを作成します
node --version # v22.12.0 npm --version # 10.9.0
-
プロジェクト リポジトリに移動します
sudo apt install mariadb-server
-
プロジェクトの依存関係をインストールします
sudo mysql_secure_installation
-
TypeScript コードをコンパイルする
sudo mysql
tsconfig.json ファイルで outDir プロパティが構成されていることを確認してください。これは、コンパイルされた JavaScript コードが生成されるディレクトリを指定します。デフォルトでは、通常 dist に設定されますが、プロジェクトの構造に基づいてカスタマイズできます。
環境変数の設定 (オプション)
プロジェクトで環境変数を使用している場合は、Raspberry Pi で環境変数を設定する必要があります。プロジェクトのルート ディレクトリに .env ファイルを作成して、すべての環境変数を保存できます。
-
.env ファイルの作成
MariaDB [(none)]> FLUSH PRIVILEGES;
-
.env ファイルを更新
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>'; </new_password>
-
環境変数を入力してください
MariaDB [(none)]> exit; Bye
、を置き換えます。および 前の手順で作成したものと置き換えます。
Ctrl O を押してファイルを保存し、次に Enter を押し、Ctrl X を使用してエディタを終了します。
Prisma スキーマの移行
Prisma を使用している場合、すべてのスキーマ ファイルは prisma/schema ディレクトリ内に配置されます。次に、これらのスキーマをデータベースにデプロイします。
以下のコマンドを実行します
sudo mysql -u root -p
このコマンドは、.env ファイルで指定された DATABASE_URL を使用して、スキーマをデータベースにデプロイします。 MySQL クライアントにログインし、SHOW TABLES コマンドを使用してデプロイメントを確認できます。すべてのテーブルをリストします。
PM2 のセットアップ
PM2 は、Node.js アプリケーションの運用プロセス マネージャーであり、アプリケーションのオンライン管理と維持に役立ちます。 Node.js アプリケーションを管理するには、PM2 をインストールします。
ping <ip_address_of_rpi> </ip_address_of_rpi>
NGINXの構成
-
NGINX をインストールします
ssh <username>@<ip_address_of_rpi> </ip_address_of_rpi></username>
-
サイト構成を作成する
sudo apt update && sudo apt upgrade
-
以下のコードを追加します
sudo apt install git
各部分の内訳は次のとおりです:
listen 80; このディレクティブは、HTTP トラフィックのデフォルト ポートであるポート 80 でリッスンするように NGINX に指示します。
server_name
; これは、Raspberry Pi のドメイン名または IP アドレスを指定します。 Raspberry Pi の実際の IP アドレスに置き換えます。 NGINX は、このアドレスに送信されたリクエストに応答します。location / { ... } このブロックは、NGINX がルート URL (/) へのリクエストを処理する方法を定義します。基本的に、これは NGINX に対し、リクエストがルートに対して行われるたびに、指定されたポートで実行されているバックエンド (Node.js アプリケーション) に転送する必要があることを伝えます。
proxy_pass http://localhost:YOUR_NODE_JS_PORT; これは、受信リクエストを Node.js アプリケーションに転送する重要な行です。 YOUR_NODE_JS_PORT を、Node.js アプリが実行されている実際のポート (たとえば、5000) に置き換えます。リクエストは、同じマシン (localhost) 上で実行されている Node.js アプリケーションに送信されます。
proxy_http_version 1.1; これにより、プロキシ接続の HTTP バージョンが 1.1 に設定され、WebSocket などの特定の機能の処理が向上します。
proxy_set_header Upgrade $http_upgrade; このヘッダーにより、WebSocket 接続をアップグレードできます。これはリアルタイム アプリケーションにとって重要です。
proxy_set_header Connection 'upgrade'; このヘッダーは、WebSocket 接続を管理するために Upgrade ヘッダーと一緒に使用され、接続が HTTP から WebSocket に適切にアップグレードされるようにします。
proxy_set_header Host $host; これにより、元の Host ヘッダーがクライアント リクエストからバックエンド サーバーに渡されます。これは、元の Host ヘッダーに依存するアプリケーション (ルーティングや仮想ホスティングなど) に役立ちます。
proxy_cache_bypass $http_upgrade; これにより、WebSocket 接続がキャッシュ メカニズムをバイパスし、キャッシュによる干渉なしにリアルタイム通信が機能できるようになります。
Ctrl O を押してファイルを保存し、次に Enter を押し、Ctrl X を使用してエディタを終了します。
-
サイト構成を有効にする
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
-
NGINX 構成のテスト
nvm --version
テストが成功すると、次のようなメッセージが表示されます:
ping <ip_address_of_rpi> </ip_address_of_rpi>
-
NGINX サーバーを再起動して変更を適用します
ssh <username>@<ip_address_of_rpi> </ip_address_of_rpi></username>
-
NGINX サーバーのステータスを確認する
sudo apt update && sudo apt upgrade
アプリケーションの実行
プロジェクトに移動します
-
PM2 を使用してアプリケーションを開始する
package.json でスクリプトを設定している場合は、以下のコマンドを使用します:
sudo apt install git
または、dist ディレクトリ内のindex.js ファイルを使用してアプリケーションを直接実行することもできます。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
以下のコマンドを使用してログを確認することもできます:
nvm --version
次に、ローカル マシンのブラウザに Raspberry Pi の IP アドレスを入力して、アプリを確認します。うまくいくはずです。ローカル マシンと Raspberry Pi の両方が同じネットワークに接続されていることを確認してください。そうしないと機能しません。
Ngrok を使用してアプリを世界に公開する
アプリを Raspberry Pi にデプロイしたので、Raspberry Pi が実行されているのと同じネットワークからのみアプリにアクセスできます。これをインターネットに公開するには、ポート転送を使用する必要があります。
ルーターの設定を使用してポート転送を設定できますが、この場合は ngrok を使用します。 Ngrok は開発に役立ち、テスト目的でアプリを無料で実行できるようになります。
https://dashboard.ngrok.com/login にアクセスしてアカウントを作成してください。 Raspberry Pi で ngrok を構成するには、認証トークンが必要です。
-
Ngrok をインストールします
nvm install --lts
-
認証トークンを ngrok 構成ファイルに追加します
node --version # v22.12.0 npm --version # 10.9.0
-
デフォルトの nginx 設定ファイルを無効にする
sudo apt install mariadb-server
-
NGINX 構成をテストする
sudo mysql_secure_installation
-
NGINX サーバーを再起動して変更を適用します
sudo mysql
-
アプリをオンラインで展開します
MariaDB [(none)]> FLUSH PRIVILEGES;
これにより、Node.js アプリにトラフィックを転送する https://xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx.ngrok-free.app/ のような URL が提供されます。他のネットワークからこの URL に移動して、アプリケーションにアクセスできます。
まとめ
このガイドでは、MySQL と Prisma を使用して TypeScript Node.js アプリケーションを Raspberry Pi にデプロイすることに成功しました。 NGINX をリバース プロキシとして構成し、Ngrok を使用してインターネット経由でアプリケーションにアクセスできるようにしました。このセットアップを使用すると、コスト効率の高い独自のセルフホスト型開発サーバーを手に入れることができます。
このアプローチは、サーバー管理における貴重な経験を積みながら、フルスタック アプリケーションの展開を学習および実験するのに最適です。
このガイドを使用してアプリケーションをデプロイした場合は、ぜひお知らせください。その経験についてぜひお聞かせください。 ?
以上がMySQL と Prisma を使用して Raspberry Pi に Node.js アプリケーションをデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlviewshavelimitations:1)supportallsqloperations、制限、dataManipulationswithjoinsorubqueries.2)それらは、特にパフォーマンス、特にパルフェクソルラージャターセット

reperusermanmanagementInmysqliscialforenhancingsecurationsinginuring databaseaperation.1)usecreateusertoaddusers、指定connectionsourcewith@'localhost'or@'% '。

mysqldoes notimposeahardlimitontriggers、しかしpracticalfactorsdeTerminetheireffectiveuse:1)serverconufigurationStriggermanagement; 2)complentiggersincreaseSystemload;

はい、それはssafetostoreblobdatainmysql、butonsiderheSeCactors:1)Storagespace:blobscanconsumesificantspace.2)パフォーマンス:パフォーマンス:大規模なドゥエットブロブスメイズ階下3)backupandrecized recized recized recize

PHP Webインターフェイスを介してMySQLユーザーを追加すると、MySQLI拡張機能を使用できます。手順は次のとおりです。1。MySQLデータベースに接続し、MySQLI拡張機能を使用します。 2。ユーザーを作成し、CreateUserステートメントを使用し、パスワード()関数を使用してパスワードを暗号化します。 3. SQLインジェクションを防ぎ、MySQLI_REAL_ESCAPE_STRING()関数を使用してユーザー入力を処理します。 4.新しいユーザーに権限を割り当て、助成金ステートメントを使用します。

mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollationsEttingtingive.1)Usecharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Dreamweaver Mac版
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
