問題
Liferayをインストールし、すべてのユーザーを作成した後、お客様はLiferayインスタンスとすべてのユーザーがデフォルトのタイムゾーン(UTC)で構成されていることに気づきましたが、それは正しいもの(例えば:ヨーロッパ/パリ)に更新する必要があります。
Liferayインスタンスのデフォルトタイムゾーンの変更は、 Locales and Encoding Configurationページ で説明されていますが、この変更は既存のユーザーのタイムゾーンを更新するものではありません。
既存ユーザーのタイムゾーンを一括更新する必要があります。
環境
- DXP 7.0
- DXP 7.1
- DXP 7.2
- ポータル6.0
- ポータル6.1
- ポータル6.2
解像度
全ユーザーのタイムゾーンとLiferayインスタンスのデフォルトタイムゾーンの一括更新を実行するためです:
- portal.properties ファイルの "time.zones" property から有効な timeZoneId を選びます: https://github.com/liferay/liferay-portal/blob/70f2da48ea1b13794016df044dce38ecdc63ce75/portal-impl/src/portal.properties#L2826-L2867 (例えば Europe/Paris)
- すべてのLiferayサーバーノードを停止する
- 変更を行う前にデータベースとLiferay環境をバックアップすること
- 次のSQLアップデートを実行します ( Europe/Paris を自分のタイムゾーンに置き換える)。
-
update User_ set timeZoneId = 'Europe/Paris'
update Calendar set timeZoneId = 'Europe/Paris'
-
- すべてのLiferayサーバーノードを起動する
重要な注意事項
- Liferayサポートサービスから依頼がない限り、SQLアップデートを直接データベースに実行してはいけません。
- カスタム開発では、必ずLiferay APIを使用してデータベースを更新する必要があります。
追加情報
Liferayのインスタンスやユーザーレベルでタイムゾーンを設定し、JVMは常にUTCタイムゾーンで設定する必要があります。
JVMのタイムゾーンはUTCであるべきだと説明する記事が2つあります:
ログのタイムゾーンを変更したい場合、JVMのタイムゾーンを変更せずに変更することが可能です: