ホームページ  >  記事  >  運用・保守  >  Tomcat と Nginx のサーバー展開

Tomcat と Nginx のサーバー展開

大家讲道理
大家讲道理オリジナル
2017-07-15 11:38:351753ブラウズ

1.準備

まず、Linuxサーバーが必要で、ユーザー名とパスワードを知っています。次に、Linuxサーバーに接続できる2つのツール、Xshell 5とXftp 5をWindowsコンピューターにインストールする必要があります。インストールのチュートリアルについてはあまり言う必要はありません。補足の図ではサーバーへの接続方法を説明しています:

ホスト IP を入力して [OK] をクリックすると、xshell によってウィンドウが表示されます。ユーザー名とパスワードで正常に接続できます。

xftp 接続インターフェイスは次のとおりです。ここでは、FTP ではなく SFTP が選択される理由については説明しません。それで!

2. インストールとデプロイ作業

プロジェクトを Linux サーバーにデプロイするには、jdk と tomcat をインストールすることが不可欠であることをここで強調しておく必要があります。複数のアプリケーションをデプロイする場合は、アプリケーションごとに独自の Tomcat を用意する必要があります。Tomcat の構成はアプリケーションごとに明らかに異なるためです。この場合、アプリケーションの下に Tomcat のインストール ディレクトリと複数の Tomcat の作業ディレクトリをインストールできます。同じ部分のTomcatのインストールディレクトリを共有することができます。以下では、TomcatとJDKをサーバーにインストールする方法と方法を詳しく紹介します

1.ディレクトリ分割 これは非常に重要です。以下に示すように、新しいディレクトリを作成できます。このディレクトリの下に、プロジェクトの起動とデプロイメント アクセスに関連するいくつかのファイルが配置されています。および jdk は、プロジェクトのデプロイメントプロセス中に使用され、構成によって実現できます。

実際のアプリケーションは、インスタンスディレクトリに配置し、各アプリケーションの名前を設定し、そのディレクトリ下に対応するwarパッケージと解凍したファイルを置き、tomcatが読み込むのを待ちます この中にアプリケーションをデプロイします

2. 設定を変更します

また、以下に示すように、管理を容易にするために、Tomcat をディレクトリ内の各アプリケーションの下に配置しますが、それぞれに注意する必要があります。 Tomcat の設定

/bin ディレクトリで、start.sh ファイルと stop.sh ファイルを変更する必要があります。まず、環境変数の設定と同様に、jdk パスを指定し、次に Tomcat を指定する必要があります。作業ディレクトリ Tomcat パスでは、CATALINA_HOME と CATALINA_BASE がそれぞれ Tomcat のインストール ディレクトリと作業ディレクトリに対応していることがわかります。最後の行から、プロジェクトはインストール ディレクトリの下の start.sh を使用して開始されますが、Tomcat 設定ファイルは使用されないことがわかります。プロジェクトを開始するために使用されます。各アプリケーション Tomcat によって設定される設定ファイルです。 stop.sh についても同様です。

xshell を使用して ./start.sh と ./stop.sh を実行するには権限が必要です。権限がない場合は、次のように xftp を使用して start.sh メールの権限を変更できます。図にチェックを入れるだけです。

/conf ディレクトリの下での設定の変更に注意する必要があります。1 つ目は、Tomcat が占有されていて起動できない場合、設定されている Tomcat のポート番号を覚えておくことです。このアプリケーションでは、後で nginx を使用してポート マッピングを行うときに使用されます。

もう 1 つ変更する必要があるのは、Catalina ディレクトリの下の localhost ディレクトリにある ROOT.xml ファイルです。このファイルは、Tomcat の起動時にプロジェクト インスタンスをロードするディレクトリを指定するために使用されます。 、/webapps ディレクトリ、および /work ディレクトリは変更する必要はありません。上記からわかるように、ディレクトリの分割は非常に明確であり、サービスのインストール ディレクトリ (jdk、tomcat、nginx など) と、 Linux サーバーを使用して複数のプロジェクトをデプロイする場合は、アプリケーションのデプロイメント ディレクトリと同様に、この方法でディレクトリを分割することもできます。

3.nginx はポート 80 リバースプロキシを実装します

論理的に言えば、この時点で、独自のアプリケーションの war パッケージを対応するディレクトリに転送して解凍し、対応するディレクトリに移動できます。 application tomcat 作業ディレクトリで ./start.sh を実行して、プロジェクトを開始します。まずは試してみるのもいいかもしれません。 プロジェクトがデプロイされた後、ホストを構成し、アクセスを開始します。この時点で、アクセスする前に、上記で構成した Tomcat ポート番号を追加する必要があることがわかります (使用できません)。デフォルトの 80 ポート)にアクセスしますか?前述のように、異なる Tomcat に対して異なるポート番号を設定しているのは、1 つのポート番号は 1 つの Tomcat でしか使用できないためです。ただし、これは、Tomcat ごとに追加する必要があります。アプリケーションがポート 80 にアクセスすることも可能です。現時点では、nginx を使用する必要があります。nginx をインストールした後、いくつかの設定を追加して、さまざまなアプリケーションが使用するポート 80 へのアクセスを対応するサーバーに転送できます。 Tomcat の観点から見ると、外部リクエストは Tomcat によって設定されたポート番号を使用するため、具体的な設定は次のとおりです (もちろん、対応するディレクトリ分割作業も行う必要があります)。

nginx ディレクトリは次のとおりです:

/conf ディレクトリの下にある nginx.conf 設定ファイルだけを気にする必要があります。最後に、誰もが見ることができるように特定の設定情報も開きました。 「include Domains /*」という行は、/domains ディレクトリ内のすべての設定ファイルを含めて、設定がまだ完了していないことを示しています。

この時点で、各アプリケーションの対応する nginx 設定を次のように設定できます。

次に、auction.center.jd.net:80でドメイン名アクセスをリッスンし、127.0の1605ポートに転送する方法を見てみましょう。ローカル マシンの 0.1 の設定から、http_500 http_502 http_504 などの一部の異常な状態については、通常は Web サイトのホームページにジャンプすることができます。この設定ファイルを設定したら、必ず新しいログ ディレクトリを作成してください。そうしないと、nginx が起動時にエラーを報告します。

これらのタスクを完了しても、まだ完了していません。再起動に失敗した場合の詳細については説明しません。では、思い切って nginx プロセスを強制終了し、nginx service start コマンドを使用して nginx サービスを開始しましょう。

これらのタスクを完了したら、通常の方法で (ポート番号を追加せずに) アクセスできますか? はい、そうです。Tomcat はアプリケーションを再デプロイする必要があるかどうかを心配しています。ネットワーク層の nginx ルーティング変換層を理解していない場合、最初に訪問するドメイン名は、設定したホストを通じて DNS 解決を実行し、対応する IP に変換し、サーバーのファイアウォールに対応するサーバーを見つけます。そして、サーバー上で Nginx を構成すると、Nginx は最初にリクエストをインターセプトし、リクエストを処理して配布し、最後に対応する Tomcat にヒットします (個人的な理解なので、よく理解していない可能性があります。文句は言わないでください)。この時点では、安心してドメイン名にアクセスしてリクエストを送信できます。 !

4. ピットを踏む

えー。 。良くない! !喜んでホームページに飛んだのですが、やはり指定したアプリケーションにアクセスできず、ポート番号を追加してみると「奇跡的に」アクセスできました。これは、設定したNginxが有効になっていないことを意味します。何が問題ですか? ?

まず、すべてのリクエストが Nginx に送られていることを確認する必要があります。この時点で、ポート 80 を使用してアプリケーションにアクセスすると、ログの利点が反映されます。一度、二度、三度、ログを見つめてください。 。現時点では、ログがありません。おそらく、nginx サービスがサーバー上で有効になっていないと判断できます。この時、nginxサービスへのアクセスをオフにするという大胆な操作を行ったのですが、どうなっているのでしょうか?ホームページへのジャンプはnginxで設定されていませんか?実際、同社はネットワーク層ですでにこの問題に対処しており、Tomcat の設定を変更してアプリケーションの 1 つをポート 80 に設定するのは非常に混乱していました。すぐにアクセスできるようになります。デプロイ後は、アドレス バーにドメイン名が入力されるまで待つだけです。Nginx サービスは閉じられているため、この時点でのリクエストは必要です。 tomcatに直接送信しても、1回、2回、3回とアクセスできません。 ? ?このとき、サーバーのファイアウォールがポート 80 を無効にしているのではないかとひらめきました。すぐにローカルで 192.168.108.37 80 にアクセスできないことがわかり、私の推測が当たったことがわかりました。現時点では、ファイアウォールでポート 80 にアクセスするだけで十分です。CentOS で iptables ファイアウォールを設定する方法について補足します。

1. iptables の設定ファイルを開きます。コードは次のとおりです。 vi /etc/sysconfig/iptables

2. /etc/init.d/iptables status コマンドを使用して、ポート 80 が有効かどうかを確認します。開いていない場合は、2 つの方法で処理できます

3. 最初の方法: vi /etc/sysconfig/iptables コマンドを変更してポート 80 を開くようにファイアウォールを追加します。コードは次のとおりです:

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

4. ファイアウォールを閉じる/有効にする/再起動する コードは次のとおりです: /etc/init.d/iptables stop (#start, #restart)

5. 2 番目の方法: コマンドを使用してポートを追加します。 、コードは次のとおりです:

[root@centos httpd]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@centos httpd]# /etc/rc.d/init.d/iptables save
[root@centos httpd]# /etc/init.d/iptables restart

6. 効果を表示します: [root@centos httpd]# /etc/init.d/iptables status

7. さらに、を使用することをお勧めします。 2 番目の方法は操作が簡単で成功率が高く、最初の方法を使用してファイアウォールの構成を変更した場合、再起動は失敗しました。2 番目の方法を使用した場合は、完全に成功しました。

III. まとめ

最終的な結果は予想通りで、Tomcat が 1605 ポートで構成されている場合でも、ポート 80 を使用してアクセスできます。これは nginx の能力ですが、インストールは数メガバイトのパッケージは、実際には非常に多くの役割を果たすことができます。これは私が nginx を学び始めたばかりの頃で、私の理解は非常に初歩的ですが、この期間を通して実践を通じて私は nginx を好きになり、徐々にお互いを知るようになります。知り合いです(お互いのことは知りませんが)。


以上がTomcat と Nginx のサーバー展開の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。