Alfrescoのインストール作業をコマンド単位で丁寧に記載します




# Alfrescoとは


AlfrescoはCMS（コンテンツマネジメントシステム）です。
詳しくは前回記事を参考にしてください。
[脱ファイルサーバ！！個人でも会社でも使えるOSSのドキュメント管理システム！その名も「Alfresco」！](http://qiita.com/sadayuki-matsuno/items/f57b5f01789080cfc1a0)


# 今回の構成

今回は以下のような構成でいきます！
![スクリーンショット 2015-07-19 7.29.34.png](https://qiita-image-store.s3.amazonaws.com/0/55672/87ffb0c4-06f1-35c9-e65e-92d322b68d5e.png "スクリーンショット 2015-07-19 7.29.34.png")

* Alfrescoの5.0.dは2015/07/19現在の最新です。
* DBをMySQLにしたのは、他のOSSで使っているので、同居できるからです。
* OSに関してはもはや個人の好みでしかないですね。
* UBUNTUが好きです。
* Nginxを入れる理由は、コンテンツキャッシュが優秀なのと、アクセス制御やログを取ろうかなと思ったからです。

# ubuntu環境整備

## ホスト名の変更

* hosts編集

```bash:/etc/hosts
127.0.0.1 localhost
127.0.0.1 [hostname] [hostname].localdomain

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

```

* hostname編集

```bash:/etc/hostname
[hostname] 
 
```

* hostname確認

```bash
$ hostname

[hostname]
```

# リポジトリアップデート
* aptのアップデートとaptitudeのインストール

```bash
$ sudo apt-get update
$ sudo apt-get install -y aptitude
$ sudo aptitude -y update
```

# MySQL

* Alfrescoで使用するDBをはじめに作成します

参考:[ubuntuにdebパッケージでMySQL5.6をインストール･アンインストール](http://qiita.com/ledsun@github/items/b1c7fdf756593c87f67a)

## インストール

*今回は5.6.19をインストールする*

* インストール

```bash
$ sudo aptitude install -y mysql-server-5.6
```
*インストールの途中でrootパスワードを求められるので、「[pass]」を入力*

* 確認

```bash
# mysql -V

mysql  Ver 14.14 Distrib 5.6.19, for debian-linux-gnu (x86_64) using  EditLine wrapper
```

## MySQL設定

* my.cnf編集

```bash
$ sudo vim /etc/mysql/my.cnf

slow_query_log_file     = /var/log/mysql/mysql-slow.log
long_query_time = 60


bind-address		= 0.0.0.0

................
character-set-server    = utf8
default-storage-engine  = InnoDB
innodb_buffer_pool_size = 512M
innodb_log_file_size    = 128M
innodb_log_files_in_group       = 2
innodb_flush_log_at_trx_commit  = 1
innodb_file_per_table   = 1
innodb_buffer_pool_dump_at_shutdown     = ON
innodb_buffer_pool_load_at_startup      = ON
```

## mysqlユーザのHOME作成

*起動時のエラーをなくすために必要な作業*

* HOMEディレクトリ作成

```bash
$ sudo mkdir /home/mysql
```

* 権限付与

```bash
$ sudo chown mysql /home/mysql/
```

* mysqlにHOMEディレクトリを追加

```bash
$ sudo usermod -d /home/mysql/ mysql
```

* 確認

```bash
$ sudo getent passwd mysql

mysql:x:103:106:MySQL Server,,,:/home/mysql/:/bin/false
```

## MySQLの起動

* 起動

```bash
$ sudo /etc/init.d/mysql start
```

## テーブルの設定

* MySQLにログイン

```bash
mysql -u root -p
```
*パスワード入力*

* テーブル確認

```sql
mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
```

* データベース作成

```sql
mysql> create database alfresco character set utf8;
Query OK, 1 row affected (0.00 sec)
```

* データベースの所有者設定

```sql
mysql>  grant all privileges on alfresco.* to 'alfresco'@'%' identified by '[pass]' with grant option;
Query OK, 0 rows affected (0.00 sec)
```

* ユーザ確認

```sql
mysql> SELECT host,user FROM mysql.user;

+--------------+------------------+
| host         | user             |
+--------------+------------------+
| %            | alfresco         |
| 127.0.0.1    | root             |
| ::1          | root             |
| c8a18cfc871b | root             |
| localhost    | debian-sys-maint |
| localhost    | root             |
+--------------+------------------+
6 rows in set (0.00 sec)
```

* 権限確認

```sql
mysql> SHOW GRANTS FOR alfresco;

+-----------------------------------------------------------------------------------------------------+
| Grants for alfresco@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON **.** TO 'alfresco'@'%' IDENTIFIED BY PASSWORD '***************' |
| GRANT ALL PRIVILEGES ON `alfresco`.* TO 'alfresco'@'%' WITH GRANT OPTION                             |
+-----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
```

* データベース確認

```sql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| alfresco        |
+--------------------+
4 rows in set (0.00 sec)
```

## MySQLドライバー

* ダウンロード

```bash
$ sudo wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.34.tar.gz -P /opt
```
**こちらも説明の便宜上/optに配置**

* 解凍

```bash
$ tar -xzvf mysql-connector-java-5.1.34.tar.gz
```



# Alfresco

## ダウンロード

[公式ページ](https://www.alfresco.com/jp)からCommunityEditionをダウンロードして任意のディレクトリに配置
**今回は説明の便宜上、/opt/に配置したものとする**

## LibreOffice依存ライブラリのインストール

```bash
$ sudo apt-get install -y libice6 libsm6 libxt6 libxrender1 libfontconfig1 libcups2
```


## インストール

* 実際にインストールする前に何をインストールするか決めましょう。

* 今回は以下のようにしました。

|項目|インストールするか|説明|
|:-:|:-:|:-:|
|Java|⚪︎|javaが入っているならいりません。| 
|PostgreSQL|×|MySQLを使うので、インストールしない|
|Alfresco|⚪︎|もちろん入れる|
|Solr1|×|Solr4が選択できるので、これは入れない|
|Solr4|⚪︎|検索エンジンがなければ入れる|
|SharePoint|⚪︎|WindowsでのOffice編集がいい感じになるからいれる。|
|Web Quick Start|⚪︎|ドキュメントの共有に使える。|
|Google Docsの統合|×|GoogleDocでオンライン編集ができる！でも個人的にGoogleDocは使わないので入れない。便利なので、インストール推奨|
|LibreOffice|⚪︎|Officeのプレビューで必要|

* インストーラー起動

```bash
$ sudo /opt/alfresco-community-5.0.d-installer-linux-x64.bin

Language Selection

Please select the installation language
[1] English - English
[2] French - Francais
[3] Spanish - Espanol
[4] Italian - Italiano
[5] German - Deutsch
[6] Japanese - 日本語
[7] Dutch - Nederlands
[8] Russian - Русский
[9] Simplified Chinese - ?体中文
[10] Norwegian - Norsk bokmal
[11] Brazilian Portuguese - Portugues Brasileiro
Please choose an option [1] : 6   #← 日本語がいいよね。。
----------------------------------------------------------------------------
ようこそ Alfresco Community セットアップウィザードへ。

----------------------------------------------------------------------------
インストールの種類

[1] 簡易 - サーバーをデフォルトの設定でインストールします。
[2] アドバンスド - サーバーのポートとサービスのプロパティを設定します。: 追加でインストールするコンポーネントも選択できます。
オプションを選択してください [1] : 2 #← カスタマイズするので、2

----------------------------------------------------------------------------
インストールするコンポーネントを選択してください。準備ができたら“次へ“をクリックしてください。

Java [Y/n] :Y 

PostgreSQL [Y/n] :n

Alfresco : Y (Cannot be edited)

Solr1 [y/N] : N

Solr4 [Y/n] :Y

SharePoint [Y/n] :Y

Web Quick Start [y/N] : N

Google Docsの統合 [Y/n] :n

LibreOffice [Y/n] :Y

上記選択部分が正しいことを確認してください。 [Y/n]: Y

----------------------------------------------------------------------------
インストールフォルダ

Alfresco Communityをインストールするフォルダを選択してください。

インストール先フォルダ: [/opt/alfresco]: #← 便宜上、/opt/alfrescoにインストール

----------------------------------------------------------------------------
データベースの設定

JDBCのURL： [jdbc:mysql://localhost:3306/alfresco?useUnicode=yes&characterEncoding=UTF-8]: #← MySQLのドライバーはこのように設定

JDBCドライバー： [org.gjt.mm.mysql.Driver]:  #← こちらもこのまま貼り付けて設定してください。

データベース名： [alfresco]:  #← 今回作成したDB名

ユーザー名： [alfresco]: #← 今回作成したユーザ名

パスワード： [********] : #← 今回作成したパスワード
確認： [********] :
----------------------------------------------------------------------------
Tomcatのポート設定

Tomcatで使用する設定パラメータを入力してください。

Webサーバードメイン: [127.0.0.1]:  #← ポート各自設定

Tomcatサーバー用ポート： [8080]: #← ポート各自設定

Tomcatのシャットダウン用ポート： [8005]: #← ポート各自設定

TomcatのSSLポート [8443]: #← ポート各自設定

TomcatのAJPポート： [8009]: #← ポート各自設定

----------------------------------------------------------------------------
Alfresco FTPのポート

統合されたAlfresco FTPサーバーに使用するポート番号を選択してください。

ポート： [21]: #← ポートは各自設定

----------------------------------------------------------------------------
管理者パスワード

Alfresco管理者アカウントのパスワードを入力してください。

管理者パスワード: [**********] : #← 「admin」ユーザのパスワード
パスワードの再入力： [**********] :
----------------------------------------------------------------------------
Alfresco SharePointのポート

SharePointプロトコル用のポート番号を選択してください。

ポート： [7070]:  #← ポートは各自設定

----------------------------------------------------------------------------
サービスとしてインストール

必要に応じて、Alfresco Communityをサービスとして登録できます。サービスとして登録すると、コンピュータを起動するたびに、Alfresco 
Communityが自動的に開始されます。

Alfresco Communityをサービスとしてインストールしますか? [Y/n]: Y #← 特にこだわりがなければサービスにしましょう。


----------------------------------------------------------------------------
LibreOfficeサーバーのポート

LibreOFFICEサーバーがデフォルトでリッスンするポートを入力してください。

LibreOfficeサーバーのポート [8100]: #← ポートは各自設定

----------------------------------------------------------------------------
お使いのコンピュータに Alfresco Community をインストールする準備が整いました。

続けますか？ [Y/n]: Y 
```
 
 * MySQLドライバーの設置

```bash
$ sudo cp /opt/mysql-connector-java-5.1.34/mysql-connector-java-5.1.34-bin.jar /opt/alfresco/tomcat/lib/
```
 
**これでインストール作業は完了**

**ブラウザで http://localhost:8080/share にアクセスできるばず。**

# Nginx

リバプロとファイルキャッシュのため、Nginxをいれる。
このレイヤーでログをとったり、アクセス制御できるので、便利

## インストール

参考
[How To Install The Latest Version Of Nginx On Ubuntu 14.10](https://www.liberiangeek.net/2014/10/install-latest-version-nginx-ubuntu-14-10/)

* デフォルトパッケージのバージョン確認

```
$ sudo aptitude show nginx

Package: nginx                           
State: not installed
Version: 1.4.6-1ubuntu3.2
Priority: optional
Section: web
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
```
**1.4.6は低すぎるので、最新を探す**

* keyのダウンロード

```bash
$ cd /tmp/ && wget http://nginx.org/keys/nginx_signing.key
```

* apt設定ファイル作成

```bash:/etc/apt/sources.list.d/nginx.list

deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx
```

* aptアップデート

```bash
$ sudo aptitude update
```

* バージョン確認

```
$ sudo aptitude show nginx

Package: nginx                           
State: not installed
Version: 1.9.0-1~trusty
Priority: optional
Section: httpd
Maintainer: Sergey Budnevitch <sb@nginx.com>
Architecture: amd64
Uncompressed Size: 1,105 k
Depends: libc6 (>= 2.14), libpcre3, libssl1.0.0 (>= 1.0.1), zlib1g (>= 1:1.2.0), lsb-base, adduser
Provides: httpd
Provided by: nginx-core, nginx-extras, nginx-full, nginx-light, nginx-naxsi
Description: high performance web server
 nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server.
Homepage: http://nginx.org
```
**完璧です**

* インストール

```bash
$ sudo aptitude install -y nginx
```

* バージョン確認


```bash
$  nginx -v

nginx version: nginx/1.9.0
```

**nginxの設定は長くなるので、省略**

参考記事を貼っておきます。
[quota exceed msg when no quotas are set](https://forums.alfresco.com/forum/end-user-discussions/alfresco-share/quota-exceed-msg-when-no-quotas-are-set-04222011-1400)
[NGINXのLOCATION設定について、優先順位の基本と意外な罠](http://moortz.jp/nginx-location-directive/)
[インストール nginx + OpenSSL（新規・更新）](https://jp.globalsign.com/support/server/533.html)
[nginxの設定、その4 - TLS/SSLの設定](http://heartbeats.jp/hbblog/2012/06/nginx06.html)



# Alfrescoの設定

## 再起動

**設定反映のためにはもちろん再起動が必要なので、先に再起動の方法を書きます。**
**Solrのインデックス作成に時間がかかるので、再起動時間及び、起動後利用できるようになるまで時間がかかる。**

```$ sudo service alfresco restart```

## LDAP設定

参考
[AlfrescoのLDAP連携](http://aegif-labo.blogspot.jp/2012/02/alfrescoldap.html) 

```bash:/opt/alfresco/tomcat/shared/classes/alfresco-global.properties

ldap.authentication.userNameFormat=%s@[domain]
ldap.authentication.java.naming.provider.url=ldap://[domain]:389
ldap.authentication.defaultAdministratorUserNames=Administrator,alfresco
ldap.synchronization.java.naming.security.principal=[user]@[domain]
ldap.synchronization.java.naming.security.credentials=[pass]
```
**ファイルの後ろの方にこんな感じで書けばいける**

## メール設定

* hostを編集（メールのURLに関連するので。）

```bash:/opt/alfresco/tomcat/shared/classes/alfresco-global.properties

alfresco.context=alfresco
#alfresco.host=127.0.0.1 ← コメントアウト
alfresco.host=[Domain] #← ドメイン記入。なければIP
alfresco.port=443 #← HTTPSにした
alfresco.protocol=https #← HTTPSにした

share.context=share
#share.host=127.0.0.1 #← コメントアウト
share.host=[Domain] #← ドメイン記入。なければIP
share.port=443 #← HTTPSにした
share.protocol=https #← HTTPSにした

```

* メール設定の追加

```bash:/opt/alfresco/tomcat/shared/classes/alfresco-global.properties

mail.host=[fqdn] #← メールサーバ
mail.port=25
mail.username=[user]
mail.password=[pass]
mail.encoding=UTF-8
mail.from.default=[address]
mail.from.enabled=false
mail.smtp.auth=false
mail.smtp.timeout=30000
```

## Libre Office設定

**この設定はやらないとうまいことOfficeのプレビューができない**

* 設定ファイル編集

```bash:/opt/alfresco/libreoffice/scripts/libreoffice_ctl.sh

# Libre Office
SOFFICE_PATH="/opt/alfresco/libreoffice/program"
SOFFICE_PORT="8100"
SOFFICEBIN=/opt/alfresco/libreoffice/program/.soffice.bin
SOFFICEWRAPPER=/opt/alfresco/libreoffice/program/soffice.bin
#SOFFICE="$SOFFICEWRAPPER --nofirststartwizard --nologo --headless --accept=socket,host=localhost,port=$SOFFICE_PORT\;urp\;StarOffice.ServiceManager"   #← コメントアウト
SOFFICE="$SOFFICEWRAPPER --nofirststartwizard --nologo --headless --accept=socket,host=localhost,port=$SOFFICE_PORT;urp;StarOffice.ServiceManager" #← 追加
SOFFICE_STATUS=""
```

* ファイル名変更

```bash
$ sudo cp /opt/alfresco/libreoffice/scripts/libreoffice_ctl.sh /opt/alfresco/libreoffice/scripts/ctl.sh
```

* 依存ライブラリインストール

```bash
$ sudo aptitude install -y libxinerama1 libcups2 libdbus-glib-1-2 libfontconfig1
```

## データディレクトリの変更（必要であれば。）

**１つのディスクにMySQLもファイルデータもSolrのインデックスも置いちゃえば、バックアップが簡単でいいよねw**
**ということで、全て寄せる。これはやらなくてもいい作業です。**
**今回は/dataという場所にディスクをマウントして、ディレクトリを作成したという前提で話を進めていきます。**

* Alfrescoの停止

```bash
$ sudo service alfresco stop
```

* MySQLの停止

```bash
$ suo service mysql stop
```

**データの移行を行うので、サービスの停止はお忘れなく**

### データの移行

```bash
$ sudo cp -a /opt/alfresco/alf_data/ /data/
```

### Alfresco

* ファイル場所の設定変更

```bash:/opt/alfresco/tomcat/shared/classes/alfresco-global.properties

#dir.root=/opt/alfresco/alf_data
dir.root=/data/alf_data
```

### Solr

* Rootディレクトリ場所設定変更

```xml:/opt/alfresco/tomcat/conf/Catalina/localhost/solr4.xml

<?xml version="1.0" encoding="utf-8"?>
<Context debug="0" crossContext="true">
  <Environment name="solr/home"        type="java.lang.String" value="/data/solr4" override="true"/>
  <Environment name="solr/model/dir"   type="java.lang.String" value="/data/alf_data/solr4/model" override="true"/>
  <Environment name="solr/content/dir" type="java.lang.String" value="/data/alf_data/solr4/content" override="true"/>
</Context>

```

* アーカイブディレクトリ場所設定変更

```bash:/opt/alfresco/solr4/archive-SpacesStore/conf/solrcore.properties

#
# solrcore.properties - used in solrconfig.xml
#
# data is in ${data.dir.root}/${data.dir.store} 

#data.dir.root=/opt/alfresco/alf_data/solr4/index
data.dir.root=/data/alf_data/solr4/index
data.dir.store=archive/SpacesStore
enable.alfresco.tracking=true
```

* ワークスペース場所設定変更

```bash:/opt/alfresco/solr4/workspace-SpacesStore/conf/solrcore.properties

#
# solrcore.properties - used in solrconfig.xml
#
# data is in ${data.dir.root}/${data.dir.store} 

#data.dir.root=/opt/alfresco/alf_data/solr4/index
data.dir.root=/data/alf_data/solr4/index
data.dir.store=workspace/SpacesStore
enable.alfresco.tracking=true
```

* server.xml編集

```xml:/opt/alfresco/tomcat/conf/server.xml

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" URIEncoding="UTF-8" protocol="AJP/1.3" redirectPort="8443" />

    <Connector port="8443" URIEncoding="UTF-8" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" keystoreFile="/data/alf_data/keystore/ssl.keystore" keystorePass="kT9X6oe68t" keystoreType="JCEKS"
 secure="true" connectionTimeout="240000" truststoreFile="/data/alf_data/keystore/ssl.truststore" truststorePass="kT9X6oe68t" truststoreType="JCEKS"
               clientAuth="want" sslProtocol="TLS" allowUnsafeLegacyRenegotiation="true" maxHttpHeaderSize="32768" />
```

### MySQL

参考
[Ubuntu の MySQL を標準以外のディレクトリで動かす](http://tmtms.hatenablog.com/entry/2014/06/14/ubuntu-mysql-datadir)
[AppArmor を使ってみる](http://www.usupi.org/sysad/221.html)

**ubuntuは実ファイルをそのまま移行するだけだとダメらしいね**


* データ格納場所設定変更

```bash:/etc/mysql/my.cnf

#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
#datadir                = /var/lib/mysql
datadir         = /data/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
```

* 権限設定

```bash:/etc/apparmor.d/local/usr.sbin.mysqld

# Site-specific additions and overrides for usr.sbin.mysqld.
# For more details, please see /etc/apparmor.d/local/README.

/data/mysql/ r,
/data/mysql/** rwk,

```

*  apparmor再起動

```bash
$ sudo service apparmor restart
```

* MySQL起動

```bash
$ sudo service mysql start
```

* 元のディレクトリをみているものがないことを確認

```bash
$ mysql -uroot -p -e "show variables" | grep /var/lib
```

## ログファイルの出力先変更
**デフォルトだとAlfrescoのホームディレクトリに吐かれてしまって、邪魔なので。**

* ログファイル出力先のディレクトリ作成

```bash
$ sudo mkdir /data/log/alfresco
```

* alfresco.log

```bash:/opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties

###### File appender definition #######
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.File.File=alfresco.log                   #← コメントアウト
log4j.appender.File.File=/data/log/alfresco/alfresco.log  #← 追加
log4j.appender.File.Append=true
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] [%t] %m%n
```

* share.log

```bash:/opt/alfresco/solr4/log4j-solr.properties

###### File appender definition #######
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.File.File=solr.log #← コメントアウト
log4j.appender.File.File=/data/log/alfresco/solr.log #← 追加
log4j.appender.File.Append=true
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd} %d{ABSOLUTE} %-5p [%c] %m%n
```



# 最後に

長々と書きましたが、以上です。
本当はまだまだ書きたいことがあるのですが、この辺でやめておきます

ここまで設定できれば、普通に使えると思いますので、是非チャレンジしてみてください。
Let's Enjoy Alfresco!!