Jira Server の起動が Tomcat の構成ミスのエラーによって失敗する
After upgrading Apache Tomcat to version 8.5.32 (see JRASERVER-68058 - Getting issue details... STATUS ), we’ve added new properties to the server.xml
file that allow Tomcat to accept requests with special characters. Depending on the version you’re upgrading from, you might need to add these properties to your server.xml
file.
症状
ご利用の server.xml
ファイルでこれらの構成プロパティが不足している場合は次のような問題が発生します。
- 詳細検索パネル (JQL) が表示されない
- Jira で特定のページへのアクセスに失敗する (404 エラー)
- Jira の起動時にエラーが表示され、起動が完了しない
- Tomcat の構成ミスに関するエラーがログ ファイルに記載されている
影響バージョン
- Jira をゼロからインストールしている場合、新しい
server.xml
ファイルには適切なプロパティが含まれるため、ご利用のバージョンにかかわらずそのまま進めてかまいません。 - Jira 7.12.1 以前からそれ以降の任意のバージョンにアップグレードする場合、古い
server.xml
ファイルを新しいバージョンに単純にコピーするのではなく必須プロパティを追加するようにしてください (後述)。
問題の詳細
Jira で利用される web サーバーである Apache Tomcat サーバーは、特殊文字を含むリクエストを除外しています。これは、Tomcat がほとんどのブラウザとは異なるエンコーディングおよび URI 標準を採用しているためです。この問題は、多くの特殊文字 ([]<> など) を使用する JQL 検索でもっともよく見られますが、Jira の他のページにも影響を与える可能性があります。
詳細については Apache Tomcat 8.5 http ドキュメントもご確認ください。
relaxedPathChars:
The HTTP/1.1 specification requires that certain characters are %nn encoded when used in URI paths. Unfortunately, many user agents including all the major browsers are not compliant with this specification and use these characters in unencoded form. To prevent Tomcat rejecting such requests, this attribute may be used to specify the additional characters to allow. If not specified, no additional characters will be allowed. The value may be any combination of the following characters:
" < > [ \ ] ^ ` { | }
. Any other characters present in the value will be ignored.
ソリューション
<Jira-installation-directory>/conf
に移動し、server.xml
ファイルを編集します。- アプリケーションで使用中のすべてのコネクタを見つけます。ファイルで Connector を検索するか、以下の例をご覧ください。ここでは、プロトコルが HTTP または HTTPS に設定されているコネクタのみが必要です (AJP は不要)。
server.xml
のプロパティで、すべての HTTP\S コネクタにrelaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>"
を追加します。
例:<Connector port="8080" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`"<>" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true" bindOnInit="false"/>
上記の例では、アプリケーションでポート 8080 が利用されていると見なしています。ご利用の構成によっては別のコネクタに変更を適用する必要がある場合があります。
- Jira を再起動します。
- (Data Center) これらの手順を各ノードで繰り返します。