node.js で実行されるアプリケーションを作成しました。これにより、REST API を介して一部のデータを取得できます。
パーソナル コンピューター (Windows) にオンラインで配置したいのですが、サーバーをインストールする方法と、アプリケーションをオンラインで使用できるようにするために必要なものがわかりません。
誰かがそれを行う手順を説明できますか? Heroku のようなオンライン サービスがあることは知っていますが、自分でやりたいと思っています。
ありがとうございました
この質問は小さく見えますが、実際には巨大です。私はこれを基本的なガイドとして書き始めましたが、非常に長い回答になってしまったので、分割しました。全体的に、これが役立つことを願っています!
パーソナル コンピューターから Web サイトを提供したくありません。コンピューターの電源が切れていると Web サイトがダウンするからです。あなたは自分のコンピュータに対してそのような責任を負いたくないので、多くの場合、常にオンになっている単純なコンピュータでスペース/帯域幅を取得することだけを目的として、基本的に企業からサーバー スペースを借りることを選択します。これらは、しばしばVPS (仮想プライベート サーバー) と呼ばれます。
したがって、私がお勧めする最初のステップは、自分で VPS を取得することです。Digital Oceanは、月額5ドルで安定したサーバーを入手できる優れたサービスです。そこから始めることをお勧めします. VPS を入手できる会社は他にもたくさんありますが、必要に応じて、おそらく最も人気のある代替手段はlinodeです。
VPS を取得したら、ssh を使用してログインします。通常、次のようになります。
ssh root@000.000.0000
...末尾の数字はサーバーの IP アドレスです。ほとんどの VPS は Linux のフレーバーであるため、Linux コマンド ライン インターフェイスに精通していることが重要です。サーバーの設定がすべて完了したら、いくつかのことを行う必要があります。これは私が通常行うことです。
私にとって、vim はコマンド ラインからファイルを編集する最も簡単な方法です。これは確かにすべての人に当てはまるわけではありません. emacsを好む人もいれば、はるかに単純な nano を好む人もいます. vim について学ぶことに興味がある場合は、ネット上にたくさんのチュートリアルがあります。vim を使いたくない場合は、今後言及する場合は常に nano を使用することをお勧めします。
インストールするにはapt
、ubuntu のパッケージ マネージャーである aptitude を使用できます。これは、サーバーで人気があり、デジタル オーシャンのデフォルトであるため、この回答で使用する Linux のフレーバーです。実行apt-get update
してパッケージが最新であることを確認してからapt-get install vim
、vim に入れます。
~/.ssh/authorized_keys
ログインにパスワードを必要としないように、ssh キーを に追加します。ssh キーに慣れていない場合、それらは基本的に暗号化キーのペアであり、毎回パスワードで承認する必要がないようにするために使用できます。公開鍵を~/.ssh/authorized_keys
ファイルに追加することにより、基本的にサーバーに「これは私のコンピューターなので、ログインするためのパスワードを要求する必要はありません」と伝えます。Github には、キーの生成方法に関する優れたガイドがあります。これが完了したら、vim でファイルを開き、挿入モードにして、ローカル マシンから公開キーを貼り付けることができます。保存して終了すると、設定は完了です。
node アプリを実行しようとしている場合は、もちろん node が必要です。Linux へのノードのインストールは少し異なります。これは、ローカルで使用したと確信しているノード インストーラーがグラフィカルであり、ここではコマンド ラインしかないためです。幸いなことに、この一連の手順を使用するとそれほど難しくはなく、正確に従うことができます. apt-get install nodejs
古いバージョンがインストールされるため、デフォルトだけを実行しないように注意してください。2 番目の段落の後にいくつかの手順を実行して、ppa を追加し、新しいバージョンを取得します。
これで、ノードがあり、理論的にはアプリを実行できるマシンができました。これは良い知らせです。次に、実際にアプリをマシンに取り込む必要があります。これを行うにはいくつかの方法があります。ruby をローカルにインストールしている場合は、一般的なデプロイ ソリューションであるcapistranoを使用できます。私がよく好む軽量のアプローチはdeployですが、Windows ではうまくいかないと思います。github または bitbucket を使用することもできます。アプリをリモート リポジトリにプッシュしてから、VPS からクローンを作成します (必ずapt-get install git
最初にユーザー名を設定してください。プライベート リポジトリの場合は、おそらくキーを生成して追加する必要があります)。アクセスしてプルダウンします)。ただし、なんとかしてファイルを転送してください。
VPS で、cd
アプリが配置された場所に移動して実行します。すべてが正常に機能していることを確認しhttp://YOUR_IP:PORT
、IP アドレスとコロンの後にアプリが実行されているポート番号を入力します。アプリが表示されるはずです。端末に戻って確認しない場合は、クラッシュしている可能性があります。別のシステムでセットアップしているときに、まぐれを見つけることがあります。アプリでデータベースを使用する場合は、これも構成する必要がある場合があります。「ubuntu セットアップ データベース名」をググって、いくつかのチュートリアルを見つけることができます。デジタル オーシャンには、これらのタイプのチュートリアル自体のかなり堅実なライブラリがあります。
Nginx は、1 台のマシンで複数のアプリを提供し、ドメイン名などを処理するための優れた方法です。nginx のセットアップ方法に関する記事を書きました。この記事を参照して、基本を学び、インストールしてください。これが完了したら、アプリをproxy_pass
. このtry_files
記事がサーバーの静的ファイルに対して行っproxy_pass
ている . ポート1234
でアプリを実行していて、ドメイン名がexample.com
server {
server_name example.com;
location / {
proxy_pass http://localhost:1234;
}
}
これは、ボックスから入ってくるトラフィックを取得example.com
してアプリに渡すだけです。これは素晴らしいことです。
アプリにアクセスするために IP アドレスを使用する必要はなく、ドメイン名が必要であると仮定する必要があります。どこからでも取得できます。取得したら、DNS レコードを編集する必要があります。これにはdnsimpleを使用するのが最も簡単であることがわかりました。すべてのドメイン レジストラーが確実な dns レコードの処理を行っているわけではなく、すべての dns 管理を 1 か所で行うことができるからです。次に、ドメインのルートに A レコードを置き、VPS の IP アドレスを指すようにします。レコードが伝播するまで数分待った後、そのドメインへのヒットがサーバーに直接送信されるはずです。
ここで、アプリが正しく実行されていること、および nginx の構成が正しいこと (および nginx をリロードしたこと) をチェックして確認します。構成でserver_name
、VPS を指すように設定したドメインがミラーリングされていることを確認してください。のポートがproxy_pass
アプリが実行されているものと同じであることを確認してください。これが確認されたら、ドメインに移動します。正しく実行されていれば、アプリが表示されます。うわー!
これで、アプリが実行され、インターネット上でオンラインになり、一般に公開されました。じっと座って、誰もがあなたにお金を投げるのを待つ時間です.これは、サイトが出荷されるたびによくあることです. ただし、必要な最後のことは、何か問題が発生したり、VPS からログアウトしたりした場合でも、このアプリが稼働し続けていることを確認することであるため、常に端末を保持する必要はありません。アプリを実行しているウィンドウが開きます。このために、本番サーバーと呼ばれるものを使用できます。これは、アプリがバックグラウンドで実行され、常に実行され続けることを保証するために特別に作成されたサーバーです。幸いなことに、ノードにはこれらのオープン ソースがいくつかあります。私のお気に入りはpm2
. このページを確認し、開始手順を読み、インストールしますpm2
マシンで、アプリを実行します。プロセスは次のようになります。
npm install pm2 -g
cd path_to_my_app
pm2 start app.js
同じポートで実行したため、nginx の構成は同じままで、ドメインにアクセスしてもアプリは起動しているはずです。
ふぅ、それは長いプロセスでした。おそらくあなたの予想以上です - なぜ heroku のようなものが存在するのかは理にかなっています. では、サイトを自分で運営および維持することは本当に価値があるのでしょうか? はい、私はこのように実行しているすべてのサイトとアプリをホストしています。理由は次のとおりです。
この答えは、あなたがここに来ると思っていた以上のものだったと確信していますが、これがお役に立てば幸いです! 開発者からシステム管理者への道のりは長い道のりであり、時には本当にイライラすることもありますが、物事をうまく処理できるようになると、気分が良くなり、スキルが大幅に向上することを約束します.
最後に、これは間違いなく独断的なガイドであることに注意してください。これらのことを行うためのツールや方法は他にもたくさんあります。ここにあるワークフローは、私が好む方法です。必要に応じてワークフローをいじくり回して、必要に応じて調整してください。さまざまなデータベースのセットアップ、展開/再起動フローの改善、およびボックスのセキュリティの強化について、ここに追加できるその他の詳細も多数あります。あなたや他の人が興味を持っている場合は、フィードバックを聞いて、これらの部分を追加してください.
Google プラットフォームには、ノード デベロッパー向けのリソースがあります。簡単なアプリケーションをGoogle App Engine マネージド VMにデプロイする方法を示すチュートリアルがあります。料金の詳細はこちら.Node.js
Amazon Web Service (AWS) にも同様のサービスがあります。ここにチュートリアルがあります。AWS 無料利用枠は、サインアップ後 12 か月間無料で AWS を実際に体験できるように設計されています。アプリケーションのプラットフォームとして AWS を調べることができNode.js
ます。ここで確認してください。