Alfresco 6.x を war ファイルベースでセットアップする

Alfresco の最新バージョンは Docker イメージで提供されるようになりました。お試しでやる分には簡単ですし、 Kubernetes とか使うのであればいいのですが、昔ながら war 配置によるセットアップもやりたいときは多いはず。

参考になるのは [公式のインストール案内](http://docs.alfresco.com/community/concepts/install-community-intro.html)です。

というわけでやってみましょう。

個人的な趣味により CentOS ではなく Ubuntu 18.04 を使います。JRE 8 と Tomcat 8.5 の組み合わせでいきます。

### ファイルの準備

distribution zip を入手する必要があります。[参考](http://docs.alfresco.com/community/concepts/download-community.html)

名前や所属を入れるとダウンロードページに遷移します。

> 6.1 - General Release: 201901
>
> Manual Deployment:
> Distribution .zip | Alfresco Search Services 1.3.0.1.zip
> Alfresco File Transfer Receiver 6.2.1.zip | Instructions
> Containerized Deployment:
> Docker | Instructions

ここから、

* Distribution .zip（alfresco-content-services-community-distribution-6.1.2-ga.zip）
* Alfresco Search Services 1.3.0.1.zip（alfresco-search-services-1.3.0.1.zip）

を入手します。

### Java 8

最初はJava 12とか入れようかと思ったんですが新しすぎるとなぜかTomcatがこけることがわかったのでおとなしく8を入れることにします。後方互換どうなってるの。まあそこは本質じゃないのでいいとしましょう、とりあえず apt-get で入れていきましょう。

```
$ sudo apt-get install openjdk-8-jre
```
入りました

```
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
```

### PostgreSQL 11
plist 追加。

```
$ echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
```

認証キー

```
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
```

apt-get更新からインストールへ

```
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install postgresql-11
```

できたかチェック

```
$ sudo su - postgres
$ psql -V
psql (PostgreSQL) 11.3 (Ubuntu 11.3-1.pgdg18.04+1)
```

alfrescoからつながるように外部接続を許可します。またAlfrescoの[文書](https://docs.alfresco.com/6.0/tasks/postgresql-config.html)で指定されていた最大接続数を増やす作業を行います。

```
$ sudo vi /etc/postgresql/11/main/postgresql.conf
```


* listen_addresses = '*'
* max_connections = 275

を設定。

```
$ sudo vi /etc/postgresql/11/main/pg_hba.conf
```

ここに

```
host    all             all             192.168.1.1/24         md5
host    all             all 127.0.0.1/32 password
```

を追加して、再起動

```
sudo service postgresql restart
```

ユーザ alfresco と データベース alfresco　を作成する。


### Tomcat 8.5

Tomcat を入れます。

Alfresco文書で言うと[こちら](http://docs.alfresco.com/community/tasks/configfiles-change-path.html)です

まずはアーカイブを取ってきます。Tomcat はもっとあたらしいものがありますが、Alfresco 6.0.1 サポート対象の Tomcat は 8.5.35 です（2019/4/23現在）ので、そのバージョンを取ってきましょう（8.5.xの最新でも動くような気はしますが）

```
$ wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
```
解凍して /opt 以下に移動します

```
$ sudo tar xzvf ~/apache-tomcat-8.5.35.tar.gz
```

```
$ sudo mv ~/apache-tomcat-8.5.35 /opt
```
tomcatユーザとtomcatグループを作って、tomcatのホームディレクトリの所有者を変更。

```
$ sudo useradd -M tomcat
$ sudo chown -R tomcat:tomcat /opt/apache-tomcat-8.5.35
```
Alfrescoのインストールに必要なディレクトリを掘っておきます。

```
$ sudo mkdir /opt/apache-tomcat-8.5.35/shared/
$ sudo mkdir /opt/apache-tomcat-8.5.35/shared/classes
$ sudo mkdir /opt/apache-tomcat-8.5.35/shared/lib
```

設定を追加します

```
sudo vi /opt/apache-tomcat-8.5.35/conf/catalina.properties
```
中ほどにあるshared.loaderを次のように修正。

```
shared.loader=${catalina.base}/shared/classes,${catalina.base}/shared/lib/*.jar
```

保存。

次にDBドライバを入れます。今回はPostgreSQLなのでこれ

```
$ wget https://jdbc.postgresql.org/download/postgresql-42.2.5.jar
$ sudo mv postgresql-42.2.5.jar /opt/apache-tomcat-8.5.35/lib/
```

次は server.xml を編集します。

```
sudo vi /opt/apache-tomcat-8.5.35/conf/server.xml
```
Connecter要素を以下に置き換え

```
<Connector port="8080" 
protocol="HTTP/1.1" 
URIEncoding="UTF-8" 
connectionTimeout="20000" 
scheme="https" 
secure="true"
redirectPort="8443" 
maxHttpHeaderSize="32768"/> 
```

### Alfrescoインストール

上の方で手に入れた alfresco-content-services-community-distribution-6.1.2-ga.zip を使います。wgetで直接落とせないので、ちょっとめんどう。

回答するといっぱいファイルがあります。中身は[こちら](http://docs.alfresco.com/community/tasks/alf-war-install.html)を参照のこと。

/alf_data を /opt/alfresco 以下へコピーする
```
sudo mkdir /opt/alfresco
```



<TOMCAT_HOME>/webapps 以下のディレクトリをいったん全部消しておいて、/webapps にある WAR ファイルを  から <TOMCAT_HOME>/webapps へ移動します。

/web-server 以下にある /conf　/lib /shared を <TOMCAT_HOME> に上書きします。


/shared/classes/alfresco-global.properties.sample をもとに alfresco-global.properties を作成して 
 <TOMCAT_HOME>/shared/classes 以下に配置。

```
# Sample custom content and index data location
dir.root=/opt/alfresco/alf_data
#dir.keystore


# Solr indexing
index.subsystem.name=solr6
solr.secureComms=none
solr.port=8983

# Sample database connection properties 
db.name=alfresco
db.username=alfresco
db.password=alfresco
db.host=localhost
db.port=5432
db.pool.max=100

# PostgreSQL connection
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://${db.host}:${db.port}/${db.name} 

# URL Generation Parameters
#alfresco.context
#alfresco.host
#alfresco.port
#alfresco.protocol
#
#share.context
#share.host
#share.port
#share.protocol
```
### Alfresco Search Services を入れる
インストール方法は[こちら](http://docs.alfresco.com/search-community/tasks/solr6-install-withoutSSL.html)にあります。


### 追加設定

最後にTomcatの起動設定を書いておきます。

```
$ sudo touch /etc/systemd/system/tomcat.service
$ sudo vim /etc/systemd/system/tomcat.service
```

中身はこんな感じ。

```
[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/apache-tomcat-8.5.35/tomcat.pid
RemainAfterExit=yes

ExecStart=/opt/apache-tomcat-8.5.35/bin/startup.sh
ExecStop=/opt/apache-tomcat-8.5.35/bin/shutdown.sh
ExecReStart=/opt/apache-tomcat-8.5.35/bin/shutdown.sh;/opt/apache-tomcat-8.5.35/bin/startup.sh

[Install]
WantedBy=multi-user.target
```
権限付与してから有効化

```
$ sudo chmod 755 /etc/systemd/system/tomcat.service
$ sudo systemctl enable tomcat
```

早速起動します。

```
sudo systemctl start tomcat
```
http://127.0.0.1:8080/ にアクセスして起動を確認。