VPS に Next.js をデプロイ: ビルドから HTTPS まで
運用サーバー、systemd、リバース プロキシを備えた Next.js アプリケーションを Linux VPS にデプロイし、トラフィックを切り替える前にチェックします。
代理店は、いくつかのデモ、マーケティング サイト、および小規模な内部ツールをホストする場合があります。 1 つの VPS を共有することは、リソースをどのように分割するか、および 1 つのアプリケーションがトラフィックの急増を受信した場合にどうなるかを決定する場合のオプションです。
サーバーがホストできるプロジェクトの数は、使用可能なポートの関数ではありません。ルート、データベース、ビルド、および重複するピークによって容量が決まります。このガイドでは、共有を整理および確認する方法について説明します。
各アプリケーションにリリース ディレクトリ、監視対象プロセス、ローカル ポート、および独自の環境変数を割り当てます。共有リバース プロキシは、ドメインによって宛先を選択します。再起動は、他のサービスには影響せずに、1 つの識別可能なサービスを対象にする必要があります。
さまざまなクライアントについては、サービス アカウントと権限も調べてください。アカウントを共有するプロセスは、そのアカウントが読み取り可能なファイルにアクセスできます。個別のポートはセキュリティを分離しません。必要な境界にはコンテナまたは別個のマシンが必要になる場合があります。
この表は 1 つの構成を示しています。 example.com の名前を実際のドメインに置き換えます。ローカル ポートはパブリック URL ではありません。ブラウザはプロキシに接続します。
各ドメインには有効な証明書と適切な構成が必要です。そのドメインの絶対リンク、認証コールバック、Cookie を確認します。別のパスで 1 つのドメインを共有するには、追加のプレフィックスと資産構成が必要です。サブドメインは多くの場合、その結合を回避します。
小さな画面では、表を水平にスクロールします。
| 応用 | ドメイン | ローカルリスナー |
|---|---|---|
| マーケティングサイト | www.example.com | 127.0.0.1:3101 |
| デモ | デモ.example.com | 127.0.0.1:3102 |
| 内部ツール | tools.example.com | 127.0.0.1:3103 |
各サービスのアイドル状態、通常の負荷、および代表的なピーク使用量を記録します。共有サービス、オペレーティング システム、展開のヘッドルームを追加します。共有データベースを合計予算に 1 回カウントし、独自のピークを設けます。
次に、2 つのアプリケーションを同時にロードします。分離されたテストでは、CPU、ディスクおよびデータベース接続の競合を見逃す可能性があります。チームが勤務時間中にデモを行う場合、活動期間が重なる場合があります。
必要なコントローラーを備えたシステムでは、systemd はプロセス グループを監視し、制約することができます。テストされたサービスのドロップインでは、MemoryHigh は再利用のプレッシャーをもたらしますが、MemoryMax は終了につながる可能性のある厳しい境界を設定します。 CPUQuota は CPU 時間を制限します。
このフラグメントは構文を示しています。測定後に値を置き換えます。 Next.js のサイジングは推奨されません。アプリケーションが制限に達すると速度が低下したり、障害が発生したりする可能性があるため、遅延、メモリ イベント、ログを検査してください。境界は親プロセスだけでなく子プロセスもカバーする必要があります。
[Service]
MemoryAccounting=yes
MemoryHigh=512M
MemoryMax=768M
CPUQuota=100%アクティブなプロセスとは別にビルドとクリーンアップを計画します。可能であれば、互換性のある CI をビルドし、検証済みのアーティファクトをデプロイします。それ以外の場合は、共有リソースの予算にビルドを含めて、コストのかかる同時コンパイルを避けてください。
リリースごとにディレクトリを使用し、切り替える前に確認してください。すでに開いているタブに必要な既存の接続とアセットには注意が必要です。データベースのバックアップはアプリケーションのアーカイブとは分離されたままになります。テストデータを使用して定期的に復元テストを行ってください。
PRNext は、ウェイクアップ作業を犠牲にして、アイドル状態のワーカーのメモリを解放できます。これは、アイドル期間が長く、最初の訪問が遅れを許容できる場合に役立つ可能性があります。頻繁なプローブまたはバックグラウンド要求により、動作が変化する可能性があります。
プロジェクトを追加する前に、同時ウェイクアップもテストしてください。 PRNext が公開したメモリ プローブは、1 つの小さなアプリケーションをカバーしています。保証されるサイト数を確立するものではありません。データベース、プロキシ、システム、キャッシュには独自の要件があります。