Pydio 7.0.4をCentOS7上にインストールしてみる

# Pydioって

[Pydio](https://pydio.com/)は、[ownCloud](http://owncloud.jp/)や[Nextcloud](https://nextcloud.com/)などとよく比較されることがあるDropbox類似のファイル共有ソフトウェアです。AGPLにもとづいて公開されるコミュニティ版とEnterprise Licenseによる商用版があります。
第三者とファイル交換するための基盤として考えた場合、Pydioには次のような機能や特徴があります。

- ファイル単位あるいはディレクトリ丸ごとに名前を付けて公開できる。
- アクセスのためのパスワードを指定することも、パスワードなしの一般公開も設定できる。
- 公開期間やダウンロード回数で制限することもできる
- Pydioのローカルストレージだけでなく、CIFSなどで既存ファイルサーバのファイルを公開できる。
- ブラウザでプレビューすることも可能なので、ダウンロードしなくても内容を確認できる(PDFなどファイルタイプ制限あり)。
- ビジュアル的にかっこいい。
- ビジネス用途ではActive Directory連携できる。
- ThunderbirdのPydio for Filelinkアドオンを使うと、メールに添付したファイルをPydioにアップロードして、そのURLをメールに挿入して送れるようになる。

ここでは、コミュニティ版の[Administration Guide](https://pydio.com/en/docs/v7)を参考にして、CentOS 7.3上にPydioをインストールする手順を説明します。

## 想定する読者

以下の説明では、次のような知識を持っている人を対象にして、簡潔に説明しています。ご了承ください。

- GUIインストーラを使ってCentOS 7をインストールできること
- yumを使ったリポジトリ操作やパッケージインストールができること
- firewalldやsystemdの基本概念を知っていてと基本操作ができること
- MySQL (MariaDB)やApacheの基本操作ができること
- シェル(bash)を使ってLinuxの基本的な操作がひととおりできること

# CentOS 7.3のインストール

GUIインストーラを使ってインストールします。

- [Pydio Requirements](https://pydio.com/en/docs/v7/pydio-requirements)に書いてある条件を満たす機器(あるいは仮想マシン)が必要
- ディスクのパーティショニングは、パーティションベースでもLVMベースでもどちらでもかまわない。
- パッケージ選択はデフォルトのまま、最小限でインストール
- ネットワークは固定IPでもDHCPでもいいので、利用環境に合わせて適切に設定すること

## インストール後の初期設定

以下のような初期設定を、好みやポリシーに応じて実行する。

- いろいろな紛れをなくすため、SELinuxはとりあえずOffにする。
- リモート作業する方はsshログインなどの環境を整備する
- `yum update -y`を実行してパッケージを最新にアップデート
- 再起動する

## 追加パッケージのインストール

次のようなパッケージを好みやニーズに応じて追加インストールする。もちろん追加インストールしなくてもいいけど、私はインストールした。

`yum install -y wget bash-completion telnet tcpdump mlocate`

# いよいよPydioインストールだ！

Pydioに必要なリポジトリをAdministration Guideの[CentOS/RHEL Systems](https://pydio.com/en/docs/v7/centosrhel-systems)の記載のとおりに追加する。そして必要なパッケージをインストールする。詳しくはこの記事を読んでほしいが、実際に実行するコマンドシーケンスは次のとおり。

Pydioのパッケージをインストーするとき、pydio-allではなくpydio-coreを指定してもよい。この場合には最小限のコアパッケージだけがインストールされ、アドオンモジュールは後日ひとつずつ追加インストールすることになる。


```
yum install -y epel-release scl-utils
yum install -y centos-release-scl
rpm -Uvh https://www.softwarecollections.org/en/scls/remi/php56more/epel-7-x86_64/download/remi-php56more-epel-7-x86_64.noarch.rpm
rpm -Uvh https://download.pydio.com/pub/linux/centos/7/pydio-release-1-1.el7.centos.noarch.rpm
yum clean all
yum update
yum install -y pydio-all
```

CentOS7.3のデフォルトのApacheやPHPではないバージョンをインストールしているため、次のようにApache 2.4はPHP 5.6を有効化する必要がある。

```
systemctl enable httpd24-httpd
systemctl start httpd24-httpd
source /opt/rh/rh-php56/enable
source /opt/rh/httpd24/enable
```
Administration Guideには書いていないが、従来のApacheやPHPのパスに慣れている人は、以下のようにシンボリックリンクを張っておくといいだろう。

```
ln -sf /opt/rh/httpd24/root/etc/httpd /etc/httpd
ln -sf /var/log/httpd24 /var/log/httpd
ln -sf /etc/opt/rh/rh-php56/php.ini /etc/
ln -sf /opt/rh/httpd24/root/var/www /var/
```

## 必須の追加パッケージのインストール

これもAdministration Guideには書いていないが、データベースや昨今の流れでは常時https化が必要。そこで、次のようにパッケージを追加して自動起動を設定しておく。

```
yum install -y mariadb-server
yum install -y httpd24-mod_ssl
systemctl enable mariadb
systemctl start mariadb
```

# Pydioそのものの初期化の前にやること

## ファイアウォール設定

デフォルトではネットワーク経由でWebサーバにアクセスできないので、http (80/tcp)とhttps (443/tcp)へのアクセスを許可しておく。

```
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
systemctl restart firewalld.service
```

## データベースの初期設定

Pydio用データベースを作成してアクセス用のユーザとパスワードを登録しておく。ここでは以下のような名前を使うことにした。

- データベース名は`pydiodb`
- アクセスするユーザ名は`pydiouser`

```
mysql_secure_installation
mysqladmin -u root -p create pydiodb
mysql -u root -p mysql
MariaDB [(none)]> grant all on pydiodb.* to pydiouser@localhost identified by 'password';
MariaDB [(none)]> quit
```

# いよいよPydioそのものの初期設定だ！

手元の適当なマシンのブラウザからPydioにアクセスする。

URLは`http://<ホスト名>/pydio`。

初回のアクセス時は、Pydio Diagnostic Toolが表示され、設定の問題点を指摘してくれる。

## php.iniの修正

PHP Output Buffer disabledという見出しの警告が表示されていたら、`/etc/opt/rh/rh-php56/php.ini`の`output_buffering`を`Off`に変更する。httpd24-httpd.serviceを再起動後ブラウザ画面を再読み込みする。

## httpdのSSL設定

Server charset encodingという見出しの警告が表示されていたら、昨今はやはりhttpsアクセスが事実上必須になりつつあるので、ApacheのSSL設定を作成する。httpd24-httpd.serviceを再起動後ブラウザ画面を再読み込みする。URLを"https://..."に変更してこの警告が消えることを確認する。

## Pydioの文字セット設定

Server charset encodingという見出しの警告が表示されていたら、`/etc/pydio/bootstrap_conf.php`の
```
//define("AJXP_LOCALE", "");
```
という行を
```
define("AJXP_LOCALE", "ja_JP.UTF-8");
```
に変更してブラウザ画面を再読み込みする。

すべての警告が解決されたら、初期設定ウィザードが表示される。

## Pydio初期設定ウィザードの実行

![pydio_setup_wizard01.png](https://qiita-image-store.s3.amazonaws.com/0/178083/ccc6f84a-5f59-ce49-e78f-2f645ab378b8.png)

初期設定ウィザードが表示されたら、言語設定で日本語を指定して`Start Wizard`をクリックしてウィザードを開始する。

![pydio_setup_wizard02.png](https://qiita-image-store.s3.amazonaws.com/0/178083/066e0c85-31e1-65c3-f4ea-b4ecc652cef9.png)

Application TitleとWelcome Messageには適切な名前やメッセージを登録する。日本語メッセージなども利用できる。
Admin Loginには管理者ユーザ名を指定して、そのフルネームとパスワードを登録する。

![pydio_setup_wizard03.png](https://qiita-image-store.s3.amazonaws.com/0/178083/89e14681-f8b3-aaf1-b3eb-1fdf29665ff7.png)

データベースを登録する。前述のデータベースの初期化で指定したデータベース名、アクセス用ユーザ名とパスワードを指定する。

Test Connexionをクリックして"Connexion established"と表示されたら次の画面に進む。

![pydio_setup_wizard04.png](https://qiita-image-store.s3.amazonaws.com/0/178083/dc7964db-cf1a-db4c-d701-1f65427b0174.png)

メール設定などは後で変更することにして、Default Languageを日本語に変更してInstall Pydioをクリックする。

しばらく待つとPydioのログイン画面が表示される。管理者ユーザでログインできることを確認する。

![pydio_login.png](https://qiita-image-store.s3.amazonaws.com/0/178083/96a09426-57f7-e58d-1ab0-fd47edf50605.png)

*おしまい*