ownCloud 初期設定

ownCloud と MariaDB のインストール後の初期設定です。ここまで来ると FreeNAS とか h2o とか無関係ですね。

# 環境

過去に投稿した通りです。
[FreeNAS 9.3 jail + h2o + PHP に ownCloud をインストール](http://qiita.com/katz_engineer/items/6c68bdb83a869e953931)
[FreeNAS 9.3 jail に MariaDB をインストール](http://qiita.com/katz_engineer/items/b7277bdceb482599bd4e)

名前解決に関する環境は下記。
[自宅サーバを立てる際の家庭内名前解決の落とし穴](http://qiita.com/katz_engineer/items/26c4718b3c3fc0164130)

https を使う為の電子証明書に関する環境というか設定は下記。
[FreeNAS 9.3 jail + h2o でオレオレ認証局](http://qiita.com/katz_engineer/items/9895f0f56c0976f382eb)

ようやく役者が揃いました…:raised_hands:

# データベース用意

MariaDB をインストールしたマシンのコンソール画面で作業します。

* データベース名: owncloud
* ユーザ名: owncloud
* パスワード: Naish0!

なお過去記事の通り、ownCloud をインストールしたマシンの名前は  jiro.machine.example.com です。ここから MariaDB にアクセスします。

```
root@maria:/ # mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.0.22-MariaDB-log FreeBSD Ports

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database owncloud default character set utf8;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on owncloud.* to 'owncloud'@'jiro.machine.example.com' identified by 'Naish0!';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye
```

# ownCloud 初期設定

過去記事の通り、ownCloud には https://owncloud.example.com/ でアクセスします。初期画面が表示されますが、ごく普通の ownCloud 設定です。画面の入力欄に必要な情報を入力するだけで、難しい事は何もありません。

* 管理者の名前とパスワード。適当に決めて入力。
* データフォルダーはデフォルトが嫌なら適当に決めて入力。我が家は ```/media/www/owncloud``` とした。
* データベースとして MySQL/MariaDB を選択。
* すると MariaDB の接続情報の入力欄が表示される。上記で作成した通りに入力。
 * ユーザ名: owncloud
 * パスワード: Naish0!
 * データベース名: owncloud
 * データベースホスト: maria

完了ボタンを押してしばらく待つと… https://owncloud.example.com/index.php/apps/files/ が表示されました！やった！:+1:

# 追記
色々と、調整が必要なようです。メンドクサイなぁ…:sweat: ownCloud を設定して見つかった調整内容を適宜追記します。簡単な内容はコメントに追記するかも知れません。ご注意ください。

## 最大アップロードファイルサイズ
2MB？なにそれ？なんでそんなに小さいの？しかもownCloudの設定画面では変更できない？どうなってんのPHP？:angry:

この件、かなり根が深いみたいです。調べれば調べるほど設定項目が増えていく…。どうなってんでしょうねPHP:rage: これだからPHPは（以下略）

* 参考文献 [owncloud7で513MBしかアップロードできない](http://roserogue.blogspot.jp/2014/08/owncloud7513mb.html)

※追記。参考文献 [Uploading big files > 512MB - ownCloud 8.2 Server Administration Manual](https://doc.owncloud.org/server/8.2/admin_manual/configuration_files/big_file_upload_configuration.html) これは英語ですが、公式サイトの公式文献です。情報は可能な限り一次情報に当たりましょう。これに基づいて、下記内容を修正予定です。

```
# cd /usr/local/etc
# vi php.ini
《修正内容は下記diff結果を参照》
# diff php.ini-development php.ini
372c372
< max_execution_time = 30
---
> max_execution_time = 3600
382c382
< max_input_time = 60
---
> max_input_time = 3600
393c393
< memory_limit = 128M
---
> memory_limit = -1
660c660
< post_max_size = 8M
---
> post_max_size = 3G
810c810
< upload_max_filesize = 2M
---
> upload_max_filesize = 3G
```

設定を変更したら h2o を再起動。

```
# /usr/local/etc/rc.d/h2o restart
```

# PhotoSync との相性

私は iPhone や iPad の写真を同期するのに [PhotoSync](https://itunes.apple.com/jp/app/photosync-xie-zhenyabideowowaiyaresude/id415850124?mt=8) を使っています。便利なんですよ、帰宅した途端に自宅の Wifi 経由で自動的に転送してくれて。値段も缶ジュース3本分って所ですしね、ケチる理由はありません。

ですが ownCloud と連動させるには WebDAV 経由しかありません。そして ownCloud WebDAV の最後の地雷。

* [巨大なファイル - ownCloud - ArchWiki](https://wiki.archlinuxjp.org/index.php/OwnCloud#.E5.B7.A8.E5.A4.A7.E3.81.AA.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB)

最終的には、別の手段でファイルを転送して該当ディレクトリに配置し、コマンドラインツールを使って ownCloud に読み込ませるしかないのかも知れません。

* [File Operations - Using the occ Command - ownCloud 8.2 Server Administration Manual](https://doc.owncloud.org/server/8.2/admin_manual/configuration_server/occ_command.html#file-operations)

# 諦めました！

この環境と設定で ownCloud の WebDAV に対してファイルを書き込むと、150MB弱のファイルの転送終了間際（80〜90%くらいか？いつも同じ頃）でエラーが発生してしまいます。FreeNASのプラグインで ownCloud を導入すると、300MB超でも何の問題もありませんでした。状況から見て PHP の設定がマズいのだと考えていますが、どこをどういじれば解決するのかわかりません。プラグインの ownCloud の設定も少しチェックしたのですが、php.ini はあの分量だし phpinfo() 出力もあの分量だし、とてもとても全部チェックする気にはなれません。httpサーバを h2o から変えてみるとか、色々実験してみたい所ではありますが、とっとと実用に供さないと私のスケジュール管理（カレンダー機能を使用）もままならず、試行錯誤の時間がありません。というわけで発想を変えて、ファイル転送は FreeNAS の WebDAV を使用して、 ownCloud の外部ストレージ機能を利用する事にしました。詳細は別稿にて。

## 追記

出来ました。結論から言うと、h2oの設定で、http処理時間の上限が10秒に設定されていたのでした。

参考: [Configure > HTTP/1 Directives "http1-request-timeout"](https://h2o.examp1e.net/configure/http1_directives.html#http1-request-timeout)

1時間（=3600秒）にします。

```/usr/local/etc/h2o/h2o.conf
http1-request-timeout: 3600
```

これで、長大なファイルも転送できるようになりました。やった :+1: