Java Webは、Javaプログラミング言語とさまざまなテクノロジーおよびフレームワークを統合して、動的なwebサイトおよびWebアプリケーションの開発を可能にするテクノロジースタックです。 開発者は、Java Webを使用して、プラットフォーム間で展開できる複雑で高性能なwebアプリケーションを開発できます。 Apache Tomcatは、Java webアプリケーションのデプロイと実行に使用される最も一般的なwebサーバー環境です。 このトピックでは、Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、またはCentOS 7.xを実行するElastic Compute Service (ECS) インスタンスにJava web環境をデプロイする方法について説明します。
前提条件
ECSインスタンスにJava web環境をデプロイする前に、インスタンスが次の要件を満たしていることを確認してください。
インスタンスには、システムによってパブリックIPアドレスが割り当てられるか、EIP (elastic IP address) に関連付けられます。 EIPをインスタンスに関連付ける方法については、「EIPの関連付けまたは関連付けの解除」をご参照ください。
インスタンスは、Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、またはCentOS 7.xを実行します。
インバウンドルールがインスタンスのセキュリティグループに追加され、ポート22、80、443、および8080のトラフィックが許可されます。 詳細については、「セキュリティグループルールの追加」をご参照ください。
ステップ1: ファイアウォールとSELinuxを無効にする
Java web環境をデプロイするECSインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
ファイアウォールを無効化します。
次のコマンドを実行して、ファイアウォールのステータスを表示します。
systemctl status firewalld
ファイアウォールが非アクティブの場合、ファイアウォールは無効になります。
ファイアウォールがアクティブの場合、ファイアウォールは有効になります。 この例では、ファイアウォールはアクティブ状態であり、無効にする必要があります。 以下の手順を実行します。
ファイアウォールを一時的に無効にするには、次のコマンドを実行します。
sudo systemctl stop firewalld
説明上記のコマンドを実行すると、ファイアウォールは一時的に無効になります。 次回Linuxオペレーティングシステムを再起動すると、ファイアウォールが再び有効になり、アクティブ状態になります。
ファイアウォールを完全に無効にするには、次のコマンドを実行します。
sudo systemctl disable firewalld
説明ファイアウォールを無効にした後、ファイアウォールを再度有効にすることができます。 詳細については、公式のfirewalld Webサイトをご覧ください。
SELinuxを無効にします。
次のコマンドを実行して、SELinuxの状態を確認します。
getenforce
SELinuxが無効状態の場合、SELinuxは無効になります。
SELinuxがEnforcing状態の場合、SELinuxは有効になります。
SELinuxを無効にします。 SELinuxが無効になっている場合は、この手順をスキップします。
SELinuxを一時的に無効にするには、
setenforce 0
コマンドを実行します。説明上記のコマンドを実行すると、SELinuxは一時的に無効になります。 次回Linuxオペレーティングシステムを再起動すると、SELinuxは再び有効になり、Enforcing状態になります。
SELinuxを完全に無効にするには、vi /etc/selinux/configコマンドを実行してSELinux設定ファイルを変更します。 [Enter] キーを押します。 ポインタを
SELINUX=enforcing
行に移動し、Iキーを押してInsertモードに入ります。 SELINUX=enforcingをSELINUX=disabled
に置き換えます。 Escキーを押して :wqと入力し、enterキーを押してSELinux設定ファイルを保存して閉じます。 変更を有効にするには、オペレーティングシステムを再起動します。説明SELinuxを無効にした後、SELinuxを再度有効にできます。 詳細については、SELinuxの公式ドキュメントをご参照ください。
ステップ2: JDKのインストール
この例では、Java Development Kit (JDK) 1.8.0_412が使用されます。
JDKのバージョンは、オペレーティングシステムによって異なります。 ECSインスタンスのオペレーティングシステムに適したJDKバージョンを使用します。
次のコマンドを実行して、JDKパッケージを照会します。
yum -y list java*
次のコマンドを実行してJDKパッケージをインストールします。
この例では、JDK 1.8.0パッケージがインストールされています。
sudo yum -y install java-1.8.0-openjdk-devel.x86_64
次のコマンドを実行して、JDKのバージョンを確認します。
java -version
サンプルコマンド出力:
openjdk version "1.8.0_412" OpenJDK Runtime Environment (build 1.8.0_412-b08) OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode
)
次のコマンドを実行して、JDKのインストールパスを表示します。
find /usr/lib/jvm -name 'java-1.8.0-openjdk-1.8.0 * '
サンプルコマンド出力:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-2.0.1.1.al8.x86_64
Java環境変数を設定します。
次のコマンドを実行して、設定ファイルを開きます。
sudo vim /etc/profile
I
キーを押して挿入モードに入ります。スクリプトの最後に次のコンテンツを追加します。
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-2.0.1.1.al8.x86_64 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH
上記の情報で、JDKがインストールされているパスに
JAVA_HOME
を設定します。 パスの詳細については、このトピックの手順2. 4を参照してください。Esc
キーを押して挿入モードを終了します。:wq
と入力し、Enter
キーを押してファイルを保存して閉じます。次のコマンドを実行して、環境変数を適用します。
source /etc/profile
ステップ3: Apache Tomcatをインストールする
Apache Tomcatはwebアプリケーションサーバーです。 この例では、Apache Tomcat 9.0.91が使用されています。
次のコマンドを実行して、Apache Tomcat 9.0.91インストールパッケージをダウンロードして解凍します。
wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.91/bin/apache-tomcat-9.0.91.tar.gz -- no-check-certificate tar -zxvf apache-tomcat-9.0.91.tar.gz
説明Apache TomcatのダウンロードURLが変更される場合があります。 上記のダウンロードURLが無効な場合は、公式Apache Tomcat Webサイトにアクセスして、最新のダウンロードURLを取得します。
次のコマンドを実行して、Apache Tomcatインストールファイルを /usr/local/tomcat /ディレクトリに移動します。
sudo mv apache-tomcat-9.0.91 /usr/local/tomcat/
server.xmlファイルを設定します。
次のコマンドを実行して、/usr/local/tomcat/conf/ ディレクトリに移動します。
cd /usr/local/tomcat/conf/
次のコマンドを実行して、server.xmlファイルの名前を変更します。
mv server.xml server.xml_bk
という名前のファイルを作成します。server.xml.
次のコマンドを実行して、server.xmlファイルを作成して開きます。
vim server.xml
Iキーを押してInsertモードに入り、次のコンテンツをファイルに追加します。
<?xml version="1.0" encoding="UTF-8"?> <Server port="8006" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/> <Listener className="org.apache.catalina.core.AprLifecycleListener"/> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml"/> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="1000" minSpareThreads="20" acceptCount="1000" maxHttpHeaderSize="65536" debug="0" disableUploadTimeout="true" useBodyEncodingForURI="true" enableLookups="false" URIEncoding="UTF-8"/> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true"/> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> </Server>
Escキーを押して挿入モードを終了します。
:wq
と入力し、Enterキーを押してファイルを保存して閉じます。
Java Virtual Machine (JVM) メモリパラメータを設定します。
次のコマンドを実行して、/usr/local/tomcat/bin/setenv.shファイルを作成して開きます。
vim /usr/local/tomcat/bin/setenv.sh
Iキーを押してInsertモードに入り、次のコンテンツをファイルに追加します。
JAVA_OPTS
パラメーターを指定して、JVMのメモリ情報とエンコード形式を設定します。 この例では、エンコード形式はUTF-8に設定されています。JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx496m -Dfile.encoding=UTF-8'
Esc
キーを押して挿入モードを終了します。:wq
と入力し、Enter
キーを押してファイルを保存して閉じます。
システム起動時にApache Tomcatが自動的に起動できるようにスクリプトを設定します。
次のコマンドを実行して、スクリプトをダウンロードします。
重要次のスクリプトはコミュニティによって管理されており、参照用にのみ提供されています。 Alibaba Cloudは、スクリプトのパフォーマンスと信頼性、またはスクリプトが操作に与える潜在的な影響に関して、いかなる種類の保証も明示的または暗示的に提供しません。 wgetコマンドを実行してスクリプトをダウンロードできない場合は、ブラウザの
https://raw.githubusercontent.com/oneinstack/oneinstack/master/init.d/Tomcat-init
にアクセスしてスクリプトの内容を取得します。wget https://raw.githubusercontent.com/oneinstack/oneinstack/master/init.d/Tomcat-init
次のコマンドを実行して、Tomcat-initを移動し、名前を変更します。
sudo mv Tomcat-init /etc/init.d/tomcat
次のコマンドを実行して、
/etc/init.d/tomcat
ファイルに対する実行権限を付与します。chmod + x /etc/init.d/tomcat
次のコマンドを実行して、スクリプトでJAVA_HOMEを設定します。
重要スクリプトで指定するJDKパスは、JDKがインストールされているパスである必要があります。 それ以外の場合、Apache Tomcatは起動できません。 パスの詳細については、このトピックの手順2. 4を参照してください。
sudo sed -i 's@ ^ export JAVA_HOME=.* @ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-2.0.1.1.al8.x86_64 @ ' /etc/init.d/tomcat
次のコマンドを順番に実行して、Apache Tomcatがシステム起動時に自動的に起動できるようにします。
sudo chkconfig --add tomcat sudo chkconfig tomcat on
次のコマンドを実行してApache Tomcatを起動します。
sudo service tomcat start
Apache Tomcatが開始されました。 サンプルコマンド出力:
Starting tomcat Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-2.0.1.1.al8.x86_64 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started. Tomcat is running with pid: 4517
で実行されています
手順4: テストプロジェクトをデプロイして、Java web環境がデプロイされているかどうかを確認する
Java webプロジェクトファイルのWARパッケージをwebサイトのルートディレクトリにアップロードします。 ファイル転送機能を提供するリモート接続ツールを使用するか、FTPサイトを構築してプロジェクトファイルをアップロードできます。
この例では、Webサイトのルートディレクトリは /data/wwwroot/defaultです。 次の操作を実行して、WebサイトのルートディレクトリにApache Tomcatテストページを作成し、そのページにアクセスします。
次のコマンドを実行して、Webサイトのルートディレクトリを作成します。
sudo mkdir -p /data/wwwroot/default
次のコマンドを実行して、テストファイルを作成します。
sudo sh -c 'echo Tomcat test > /data/wwwroot/default/index.jsp; echo "${vSGX_ip_addr} grpc.tf-serving.service.com" >> /etc/hosts'
コンピューターでブラウザーを開き、アドレスバーに
http:// <インスタンスのパブリックIPアドレス>:8080
を入力して、Java web環境がデプロイされているかどうかを確認します。次の図に示すページは、Java web環境がデプロイされていることを示しています。
よくある質問
Java web環境にアクセスできない場合は、次の操作を実行して問題のトラブルシューティングを行います。
Apache Tomcatポート8080でのトラフィックを許可するルールがインスタンスのセキュリティグループに追加されているかどうかを確認します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
JDKのインストールパスが正しく設定されているかどうかを確認します。 find /usr/lib/jvm -name 'java-1.8.0-openjdk-1.8.0 * 'コマンドを実行して、JDKのインストールパスを確認できます。 2つの設定には、JDKインストールパスが含まれます。 詳細については、このトピックのステップ2.5とステップ3.5を参照してください。