Liferay CEをPostgreSQL連携して構築したメモ


# 前提情報
macOS Mojave上に[別途作成していたvagrant用のイメージ](https://qiita.com/shinyafukumura1977/items/a40aea731da855e0ebd0)でCentOSを2ノードプロビ済み

# バージョン情報
[CentOS](https://www.centos.org/) **7.6-1810**
[Liferay](https://www.liferay.com/en/downloads-community) **7.1.2 GA3**
[Oracle JDK](https://www.oracle.com/technetwork/jp/java/javase/downloads/index.html) **11.0.3**
[PostgreSQL](https://www.postgresql.org/) **9.6.12**
[PostgreSQL JDBC Driver](https://jdbc.postgresql.org/) **42.2.5**

# Liferayを構築するサーバ上での作業

## 7z拡張子を展開するためのp7zipインストール

```
# yum install p7zip
```

## Reverse Proxyとして動作させるhttpdのインストールと自動起動有効化

```
# yum install httpd
# systemctl enable httpd.service
```

## JDKのインストール

```
# cd
# cp /vagrant/shared/jdk-11.0.3_linux-x64_bin.rpm .
# rpm -ivh jdk-11.0.3_linux-x64_bin.rpm
# java -version
java version "11.0.3" 2019-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)
```

## Liferayのインストール

```
# cp /vagrant/shared/liferay-ce-portal-tomcat-7.1.2-ga3-20190107144105508.7z /var
# cd /var
# 7za x liferay-ce-portal-tomcat-7.1.2-ga3-20190107144105508.7z
# mv ./liferay-ce-portal-7.1.2-ga3 ./liferay
```

## PostgreSQL JDBC Driverのインストール

```
# cp /vagrant/shared/postgresql-42.2.5.jar /var/liferay/tomcat-9.0.10/lib/
```

## liferayの起動

```
# /var/liferay/tomcat-9.0.10/bin/startup.sh
```

## httpdにtomcat向けReverse Proxyの設定

```
# echo "ProxyPass / ajp://localhost:8009/" > /etc/httpd/conf.d/proxy.conf
# cat /etc/httpd/conf.d/proxy.conf
ProxyPass / ajp://localhost:8009/
```

## httpdの起動

```
# systemctl start httpd.service
```

# PostgreSQLを構築するサーバ上での作業

## PostgreSQLのインストールと自動起動有効化

```
# yum install -y https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-redhat96-9.6-3.noarch.rpm
# yum install -y postgresql96-server postgresql96-contrib
# psql --version
psql (PostgreSQL) 9.6.12
# /usr/pgsql-9.6/bin/postgresql96-setup initdb
# systemctl enable postgresql-9.6.service
```

## PostgreSQLの起動

```
# systemctl start postgresql-9.6.service
```

## Liferay用のDBとなるlportal作成およびpostgresユーザのパスワード変更（パスワード*password*はテキトー）

```
# passwd postgres
# su - postgres
$ psql
postgres=# create database lportal;
postgres=# ALTER USER postgres WITH PASSWORD 'password';
postgres=# \q
$ exit
```

## 外部サーバからlportaにアクセスできるようにPostgreSQLの設定

```
# cp /var/lib/pgsql/9.6/data/postgresql.conf /vagrant/shared/
# vi /var/lib/pgsql/9.6/data/postgresql.conf
# diff /var/lib/pgsql/9.6/data/postgresql.conf /vagrant/shared/postgresql.conf 
59c59
< listen_addresses = '*'		# what IP address(es) to listen on;
---
> #listen_addresses = 'localhost'		# what IP address(es) to listen on;
# cp /var/lib/pgsql/9.6/data/pg_hba.conf /vagrant/shared/
# vi /var/lib/pgsql/9.6/data/pg_hba.conf
# diff /var/lib/pgsql/9.6/data/pg_hba.conf /vagrant/shared/pg_hba.conf
82,83c82
< #host    all             all             127.0.0.1/32            ident
< host    lportal             postgres             10.168.33.10/32            trust
---
> host    all             all             127.0.0.1/32            ident
```

## PostgreSQLの再起動

```
# systemctl restart postgresql-9.6.service
```

# ブラウザでのLiferay設定

## アクセス直後の画面
![アクセス直後の画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/220ae015-2236-2db9-bc9f-e54850f57a7f.png)

## 言語を日本語にした画面（姓・名・メールアドレスはよしなに）
![言語を日本語にした画面1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/9593bae3-647a-40d8-7c6e-00010a05110a.png)
![言語を日本語にした画面2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/a84ffa5f-64d8-778b-8194-4707c384c8f2.png)

## 設定終了ボタン押下後の画面
![設定終了ボタン押下後の画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/96d359fe-fa25-1db5-8f98-01baf607f65f.png)

# PostgreSQLを構築するサーバ上での作業

## 登録ユーザのパスワードを*test*に変更（メールアドレスがxxx@liferay.comの場合・・・デフォルトパスワードは深く調べていない・・・）

```
# su - postgres
$ psql -d lportal
lportal=# UPDATE User_ SET password_='qUqP5cyxm6YcTAhz05Hph5gvu9M=' WHERE emailAddress='xxx@liferay.com';
lportal=# \q
$ exit
```

# Liferayを構築するサーバ上での作業

## Liferayの再起動と初期設定プロパティの確認

```
# /var/liferay/tomcat-9.0.10/bin/shutdown.sh 
# cat /var/liferay/portal-setup-wizard.properties 
admin.email.from.address=xxx@liferay.com
admin.email.from.name=XXX XXX
company.default.locale=ja_JP
company.default.web.id=liferay.com
default.admin.email.address.prefix=xxx
default.admin.first.name=XXX
default.admin.last.name=XXX
jdbc.default.driverClassName=org.postgresql.Driver
jdbc.default.password=password
jdbc.default.url=jdbc:postgresql://10.168.33.11:5432/lportal
jdbc.default.username=postgres
liferay.home=/var/liferay
setup.wizard.add.sample.data=on
setup.wizard.enabled=false
# /var/liferay/tomcat-9.0.10/bin/startup.sh
```

# ブラウザでのLiferay設定

## Liferay再起動直後のアクセス画面
![Liferay再起動直後のアクセス画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/e5f70164-bf49-3327-4c88-a7ffc8d93c1d.png)

## ログイン画面
![ログイン画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/8a531231-09c2-1778-aa51-c45fec1dd305.png)

## ログイン直後の設定画面（質問と回答はテキトーに）
![ログイン直後の設定画面1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/ab9ad875-27bf-dbe6-3757-be8077b1411f.png)
![ログイン直後の設定画面2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/0a9624e2-87f3-32d5-620a-a466c5acad8a.png)

## ログイン成功画面
![ログイン成功画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409722/3d65c127-6caa-45f1-f11f-7a7aa7cf21d4.png)

# 参考

Vagrantファイルの内容

```
$ cat Vagrantfile 
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos76minimal"
  config.vbguest.auto_update = false

  config.vm.define "liferay_ap" do |server|
    server.vm.hostname = "node01"
    server.vm.network "forwarded_port", guest: 22, host: 2222, auto_correct: true
    server.vm.network "forwarded_port", guest: 80, host: 2280, auto_correct: true
    server.vm.network "private_network", ip: "10.168.33.10", virtualbox__intnet: true
  end

  config.vm.define "liferay_db" do |server|
    server.vm.hostname = "node02"
    server.vm.network "forwarded_port", guest: 22, host: 2222, auto_correct: true
    server.vm.network "private_network", ip: "10.168.33.11", virtualbox__intnet: true
  end

end
```