Page tree

Contents

ご注意ください

必ず環境のバックアップを行い、元の状態に復元できる事を確認の上、手順の実施をお願い致します。


はじめに

このページでは、Linux環境にインストールしたConfluenceでよく発生するトラブルについて、解決方法を説明します。Windows版Confluenceのトラブルについては、こちらのページをご確認ください。

ファイル名に全角のアルファベット、ローマ数字、ギリシア文字を含むファイルを添付できない

データベースにPostgreSQLを使用するように設定したConfluenceで、ファイル名に以下の全角文字を含むファイルを添付しようとすると、エラー画面が表示されたり、添付したファイルが表示されなくなることがあります。

全角アルファベット大文字ABCDEFGHIJKLMNOPQRSTUVWXYZ
全角ローマ数字ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ
全角ギリシア大文字ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ

再現手順

Confluenceで任意のページを開き、右上の「追加」から「添付ファイル」を選択します。

ファイル名に全角アルファベット大文字、ローマ数字を含むファイルを添付します。

エラー画面が表示されて、ファイルを添付できません。
(↓下の画面はInternet Explorerの場合の例です) 

お使いの環境やファイルを添付する手順によっては、違う内容のエラー画面が表示されたり、またはエラー画面が表示されずファイルが添付されないだけのこともあります。

原因

この現象は、PostgreSQLを使用するように設定されたConfluenceでのみ発生します(MySQLでは現象は発生していません。Oracle、SQL Serverでは未確認です)。

Confluenceの添付ファイル機能は、ファイル名の大文字・小文字を区別しないように設計されています。具体的には、アップロードされたファイルを保存するときに、ファイル名の大文字を小文字に変換しています。
しかし、Confluence側がファイルを保存するときのファイル名変換ルールとデータベースがファイル名を保存するときの変換ルールが異なっているため、保存したファイルの情報を正しく読み取れなくなることがあります。
このためエラー画面が表示されたり、ファイルが添付されないなどの不具合が発生します。

ご参考

この現象は、CONF-20722 「NPE - when attaching a file that the filename contains full-width alphabet character using PostgreSQ」としてAtlassianに報告済みです。
Confluence ver.6.7.2で解決されています。

対策

ご注意ください

Confluence ver.6.7.2以降の場合は、不具合が発生しないため、以下の操作は行わないでください。

Confluenceとデータベースでファイル名の大文字・小文字変換ルールを揃えることで、添付ファイルの情報を正しく取得できるようにします。

手順1 データベースの言語設定を確認

以下のコマンドを実行し、lannameに「plpgsql」が登録されているか確認します。
(これは登録されていないときの例です) 

# su - postgres
-bash-4.1$ psql -h 127.0.0.1 -U conf_db_usr conf_db
ユーザ conf_db_usr のパスワード:

psql (8.4.13)
"help" でヘルプを表示します.
conf_db=> SELECT * FROM pg_language;
lanname | lanowner | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl
----------+----------+---------+--------------+---------------+--------------+--------
internal | 10 | f | f | 0 | 2246 |
c | 10 | f | f | 0 | 2247 |
sql | 10 | f | t | 0 | 2248 |
(3 行)

plpgsql」が存在しないときは、「手順2 plpgsqlの追加」を行なってください。
存在しているときは、「手順3 rs_lower関数の作成」に進みます。

手順2 plpgsqlの追加

次の添付ファイル confluence_patch_A.sql をダウンロードして、適当なディレクトリに保存します。
保存したディレクトリをカレントディレクトリにして、以下のコマンドを実行します。

# su - postgres
-bash-4.1$ cd (confluence_patch_A.sqlの保存先)
-bash-4.1$ psql -f confluence_patch_A.sql conf_db
ユーザ postgres のパスワード:
psql:confluence_patch_A.sql:1: NOTICE: language "plpgsql" does not exist, skipping
DROP LANGUAGE
psql:confluence_patch_A.sql:2: NOTICE: function plpgsql_call_handler() does not exist, skipping
DROP FUNCTION
CREATE FUNCTION
psql:confluence_patch_A.sql:5: NOTICE: using pg_pltemplate information instead of CREATE LANGUAGE parameters
CREATE LANGUAGE

以下のコマンドを実行し、lannameに「plpgsql」が登録されたことを確認します。

# su - postgres
-bash-4.1$ psql -h 127.0.0.1 -U conf_db_usr conf_db
ユーザ conf_db_usr のパスワード:
psql (8.4.13)
"help" でヘルプを表示します.
conf_db=> SELECT * FROM pg_language;

 lanname  | lanowner | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl
----------+----------+---------+--------------+---------------+--------------+--------
 internal |       10 | f       | f            |             0 |         2246 |
 c        |       10 | f       | f            |             0 |         2247 |
 sql      |       10 | f       | t            |             0 |         2248 |
 plpgsql  |       10 | t       | t            |         18850 |        18851 |
(4 行)

手順3 rs_lower関数の作成

添付ファイル confluence_patch_B.sql をダウンロードして、適当なディレクトリに保存します。
保存したディレクトリをカレントディレクトリにして、以下のコマンドを実行します。

# su - postgres
-bash-4.1$ cd /var/atlassian/application-data/
-bash-4.1$ psql -f confluence_patch_B.sql conf_db
パスワード:
psql:confluence_patch_B.sql:1: NOTICE: function rs_lower(pg_catalog.varchar) does not exist, skipping
DROP FUNCTION
CREATE FUNCTION

手順4-A lower関数のマッピングを編集(Confluence 5.10.x ~ Confluence 6.7.1)

ご注意ください

Confluence 5.9.x以前をご利用の場合は、手順4-Bを実行してください。

続いて、rs_lower関数を使用するための設定を行います。以下のコマンドは管理者権限を持つユーザーで実行してください。

編集対象の AttachmentQueries.hbm.xml ファイルは、 confluence-6.4.x.jar ファイル内に圧縮して格納されています。
以下のコマンドでは、圧縮ファイルをホームディレクトリのworkディレクトリに解凍し、含まれているファイルをviコマンドで編集します。

# cd /opt/atlassian/confluence/confluence/WEB-INF/lib
# mkdir ~/work
# cp confluence-6.4.x.jar ~/work
# cd ~/work
# mv confluence-6.4.x.jar confluence-6.4.x.jar.zip
# unzip confluence-6.4.x.jar.zip

Archive: confluence-6.4.x.jar.zip
creating: META-INF/
inflating: META-INF/MANIFEST.MF
creating: xhtml/
creating: templates/
creating: templates/email/

 (中略)

creating: META-INF/maven/
creating: META-INF/maven/com.atlassian.confluence/
creating: META-INF/maven/com.atlassian.confluence/confluence/
inflating: META-INF/maven/com.atlassian.confluence/confluence/pom.xml
inflating: META-INF/maven/com.atlassian.confluence/confluence/pom.properties

# cd com/atlassian/confluence/pages/
# vim AttachmentQueries.hbm.xml

AttachmentQueries.hbm.xml ファイルは、以下の「※この行を編集します」の部分を二箇所編集します。前後は省略していますので「lowerTitle」をキーに検索してください。

<query name="confluence.attachment_findByContentFileNameAndVersion"><![CDATA[
    from Attachment attachment
    left join fetch attachment.originalVersion as originalAttachment
    where attachment.containerContent.id = :contentId
    and ((originalAttachment is null and attachment.contentStatus = 'current') or originalAttachment.contentStatus = 'current')
    and rs_lower(attachment.lowerTitle) = :fileName     ※この行を編集します。
    and attachment.version = :version
]]></query>

<query name="confluence.attachment_findLatestByContentAndFileName"><![CDATA[
    from Attachment attachment
    left join fetch attachment.contentProperties
    where attachment.containerContent.id = :contentId
    and attachment.contentStatus = 'current'
    and rs_lower(attachment.lowerTitle) = :fileName     ※この行を編集します。
    and attachment.originalVersion is null
]]></query>

最後に、編集したファイルをConfluenceが参照できるように配置します。

編集したファイルをjarファイルに圧縮する必要はありません。以下のようにWEB-INFディレクトリ内にディレクトリを作成し、ファイルを配置することでConfluenceが参照するようになります。

mkdir /opt/atlassian/confluence/confluence/WEB-INF/classes/com/atlassian/confluence/pages
cp AttachmentQueries.hbm.xml /opt/atlassian/confluence/confluence/WEB-INF/classes/com/atlassian/confluence/pages/


手順4-B lower関数のマッピングを編集(Confluence 5.9.x以前)

ご注意ください

Confluence 5.10.x以降をご利用の場合は、手順4-Aを実行してください。

以下のコマンドを実行し、Confluenceでのlower関数のマッピングを編集します。このコマンドは管理者権限を持つユーザーで実行してください。

編集対象の Attachment.hbm.xmlファイルは、confluence-4.3.x.jarファイル内に圧縮して格納されています。
以下のコマンドでは、圧縮ファイルをホームディレクトリのworkディレクトリに解凍し、含まれているファイルをviコマンドで編集します。 

Confluence ver.5.7以降をご利用の場合

編集対象のファイルは、 confluence-x.x.x.jar/com/atlassian/confluence/pages/AttachmentQueries.hbm.xml です。
Attachment.hbm.xmlを AttachmentQueries.hbm.xml へ読み替えて、コマンドの実施をお願いします。

# cd /opt/atlassian/confluence/confluence/WEB-INF/lib
# mkdir ~/work
# cp confluence-4.3.7.jar ~/work
# cd ~/work
# mv confluence-4.3.7.jar confluence-4.3.7.jar.zip
#
unzip confluence-4.3.7.jar.zip

Archive:  confluence-4.3.7.jar.zip
   creating: META-INF/
  inflating: META-INF/MANIFEST.MF
   creating: com/
   creating: com/atlassian/
   creating: com/atlassian/confluence/
   creating: com/atlassian/confluence/userstatus/
   creating: com/atlassian/confluence/userstatus/listeners/
   creating: com/atlassian/confluence/userstatus/actions/
   creating: com/atlassian/confluence/userstatus/tag/

(中略)
 
  inflating: embeddedCrowdContext.xml
  inflating: wikiToXhtmlMigrationContext.xml
  inflating: productionDatabaseContext.xml
  inflating: preferences-default.xml
  inflating: velocityContext.xml
   creating: META-INF/maven/
   creating: META-INF/maven/com.atlassian.confluence/
   creating: META-INF/maven/com.atlassian.confluence/confluence/
  inflating: META-INF/maven/com.atlassian.confluence/confluence/pom.xml
  inflating: META-INF/maven/com.atlassian.confluence/confluence/pom.properties

# cd com/atlassian/confluence/pages/
# vi Attachment.hbm.xml

Attachment.hbm.xmlファイルは、次の二箇所を変更します。
ファイルの前後は省略していますので、該当部分を検索して変更してください。いずれも「lower」を「rs_lower」に変更します。

    <query name="confluence.attachment_findByContentFileNameAndVersion"><![CDATA[
        from Attachment attachment
        where attachment.content.id = :contentId
        and lower(attachment.fileName) = :fileName    (この行の lower を rs_lower に置換してください)
        and attachment.attachmentVersion = :version
    ]]></query>
    <query name="confluence.attachment_findLatestByContentAndFileName"><![CDATA[
        from Attachment attachment
        where attachment.content.id = :contentId
        and lower(attachment.fileName) = :fileName    (この行の lower を rs_lower に置換してください)
        and attachment.originalVersion is null
    ]]></query>

最後に、編集したファイルをConfluenceが参照できるように配置します。

編集したファイルをjarファイルに圧縮する必要はありません。
以下のようにWEB-INFディレクトリ内にディレクトリを作成し、ファイルを配置することでConfluenceが参照するようになります。

# mkdir /opt/atlassian/confluence/confluence/WEB-INF/classes/com/atlassian/confluence/pages
# cp Attachment.hbm.xml /opt/atlassian/confluence/confluence/WEB-INF/classes/com/atlassian/confluence/pages/

手順5 設定内容の反映

設定を反映するためにConfluenceを再起動します。

# service confluence restart
executing using dedicated user
If you encounter issues starting up Confluence Standalone, please see the Installation guide at http://confluence.atlassian.com/display/DOC/Confluence+Installation+Guide
Server startup logs are located in /opt/atlassian/confluence/logs/catalina.out
Using CATALINA_BASE: /opt/atlassian/confluence
Using CATALINA_HOME: /opt/atlassian/confluence
Using CATALINA_TMPDIR: /opt/atlassian/confluence/temp
Using JRE_HOME: /opt/atlassian/confluence/jre/
Using CLASSPATH: /opt/atlassian/confluence/bin/bootstrap.jar
Using CATALINA_PID: /opt/atlassian/confluence/work/catalina.pid
Killing Tomcat with the PID: 2058
To run Confluence in the foreground, start the server with start-confluence.sh -fg
executing using dedicated user: confluence
If you encounter issues starting up Confluence Standalone, please see the Installation guide at http://confluence.atlassian.com/display/DOC/Confluence+Installation+Guide
Server startup logs are located in /opt/atlassian/confluence/logs/catalina.out
Using CATALINA_BASE: /opt/atlassian/confluence
Using CATALINA_HOME: /opt/atlassian/confluence
Using CATALINA_TMPDIR: /opt/atlassian/confluence/temp
Using JRE_HOME: /opt/atlassian/confluence/jre/
Using CLASSPATH: /opt/atlassian/confluence/bin/bootstrap.jar
Using CATALINA_PID: /opt/atlassian/confluence/work/catalina.pid

対応結果確認

再現手順と同様に、ファイル名に全角アルファベット大文字、ローマ数字を含むファイルを添付します。

エラーなどが発生せず、添付ファイルのリストにファイルが表示され、内容を参照できれば対応完了です。 

グラフなどの動的に生成される画像の日本語が正しく表示されない

ページに追加したグラフマクロなど、動的に画像を生成、表示するときに、日本語文字が「」(四角)で表示されることがあります。
この現象は、ConfluenceをLinux環境にインストールした場合に発生します。

再現手順

任意のページを開き、編集モードに切り替えます。
右上の方にある「挿入」をクリックし「その他のマクロ」を選択します。

左側のカテゴリーから「ビジュアルと画像」を選択し、右側の「グラフ」を選択します。

右側の設定欄の一番上にある「タイプ」を「bar」に変更します。

同じく設定欄の「グラフのタイトル」「グラフのサブタイトル」「横軸のラベル」「縦軸のラベル」に任意の日本語文字列を入力します。
「更新」をクリックすると、左側にプレビューが表示されます。設定できたら「挿入」ボタンをクリックします。

ページを保存すると、以下の画面のようにグラフを含むページが表示されます。
このとき、日本語の文字列は「」になっています。 

原因

画像の生成時に日本語を含むTrueTypeフォントを使用していないため、日本語の文字を描画できないことが原因です。
これは、Confluenceに起因する問題ではなく、Confluenceの実行に使用しているJava(JRE、JDK)やオペレーティングシステム(OS)に依存する問題です。 

対策

日本語を含むフォントを使用できるように設定して、日本語の文字を描画できるようにします。

手順1 フォント構成ファイルのコピー

JRE(Java Runtime Environment)が使用するフォント構成ファイルをOSバージョンにあわせてコピーし、日本語フォントを利用できるように設定します。

まず以下のコマンドを実行して、OSのバージョンを確認します。

# cat /etc/`ls /etc -F | grep "release$\|version$"`
CentOS release x.x (Final)

続いて以下のコマンドでフォント構成ファイルをコピーします。
コマンド中の「x.x」の部分は、上のコマンドで表示されたOSのバージョン番号に置き換えてください。 
(この例ではConfluenceに同梱されているJREを使用しています。他のJavaを使用しているときはパスを読み替えてください) 

# cd /opt/atlassian/confluence/jre/lib
# cp -p fontconfig.RedHat.6.0.bfc fontconfig.RedHat.x.x.bfc
# cp -p fontconfig.RedHat.6.0.properties.src fontconfig.RedHat.x.x.properties.src

手順2 設定内容の反映

service confluence restart」コマンドを実行し、Confluenceを再起動し設定内容を反映させます。

# service confluence restart
executing using dedicated user
If you encounter issues starting up Confluence Standalone, please see the Installation guide at http://confluence.atlassian.com/display/DOC/Confluence+Installation+Guide
Server startup logs are located in /opt/atlassian/confluence/logs/catalina.out
Using CATALINA_BASE: /opt/atlassian/confluence
Using CATALINA_HOME: /opt/atlassian/confluence
Using CATALINA_TMPDIR: /opt/atlassian/confluence/temp
Using JRE_HOME: /opt/atlassian/confluence/jre/
Using CLASSPATH: /opt/atlassian/confluence/bin/bootstrap.jar
Using CATALINA_PID: /opt/atlassian/confluence/work/catalina.pid
To run Confluence in the foreground, start the server with start-confluence.sh -fg
executing using dedicated user: confluence
If you encounter issues starting up Confluence Standalone, please see the Installation guide at http://confluence.atlassian.com/display/DOC/Confluence+Installation+Guide
Server startup logs are located in /opt/atlassian/confluence/logs/catalina.out
Using CATALINA_BASE: /opt/atlassian/confluence
Using CATALINA_HOME: /opt/atlassian/confluence
Using CATALINA_TMPDIR: /opt/atlassian/confluence/temp
Using JRE_HOME: /opt/atlassian/confluence/jre/
Using CLASSPATH: /opt/atlassian/confluence/bin/bootstrap.jar
Using CATALINA_PID: /opt/atlassian/confluence/work/catalina.pid

対応結果確認

「再現手順」で作成したページを開いて、グラフの文字列が正しく表示されていることを確認します。


  • No labels

This page has no comments.