Debian 9 stretch にowncloudをインストールしたメモ

jessieからstretchに更新した際にアップデートではなくクリーンインストールした為、稼働していたowncloudの再構築&データ移行を実施した。
以下、私的に覚えておきたい点をいくつか書き残す。


config.phpの基本設定

タイムゾーンの設定

'logtimezone' => 'Asia/Tokyo',  

ログ出力レベルの設定

'loglevel' => 1,  
設定したレベルより上位の物が記録される。
ある程度セットアップが済めばlevel2で問題ないかも。
  • 0 = Debug
  • 1 = Info
  • 2 = Warning
  • 3 = Error
  • 4 = Fatal

ログファイルの出力先設定

'logfile' => '/var/log/owncloud/owncloud.log',  

logrotateの設定

ログの異常な肥大化を避けるため、ログローテートの設定を行う。
config.phpの設定にもlog_rotate_sizeがあるが、ここではシステムのlogrotate.dを使用する。
/etc/logrotate.d/owncloudの名で下記内容のファイルを作成する。
/var/log/owncloud/owncloud.log  #ログファイルの指定  
{  
        rotate 5        #ローテート回数  
        weekly          #ローテート周期  
        missingok       #ログファイルが無くてもエラーにしない  
        notifempty      #ログが空ならローテートしない  
        compress        #ローテートされたログをgzip圧縮する  
        delaycompress   #圧縮を1周期遅らせる  
        create 0640 www-data www-data   #新しく作成する空ログのパーミッション設定  
}  

dataディレクトリのパス指定

'datadirectory' => '/datadirectory/path/',  
dataディレクトリはセキュリティ上、owncloudのインストールパスから外に出すのが望ましい。

メンテナンスモードの設定

'maintenance' => false, #trueで有効  

mpm_event + PHP7.0-FPM + FastCGI

webで検索するとmod_fastcgiやmod_fcgidを用いた例が数多くヒットするが、どうも現在はmod_proxy_fcgiを用いた方が簡単なよう。
stretchでは基本の設定がすべて用意されているので、難しい設定はなにも無く動作させる事が出来た。

必要パッケージ

  • php-fpm (php7.0-fpm)

php-fpmを利用する設定

もしApache Handlerでphpを動作させていたのならモジュールを無効化する。
sudo a2dismod php7.0  
必要なモジュールと設定を有効にする。
sudo a2enmod proxy_fcgi  
sudo a2enconf php7.0-fpm  
この例では、VirtualHost等の設定に別途ExecCGIを追加したり、あるいはAddHandlerを追加したりする必要は無かった。

mpm_eventを利用する設定

stretchの標準パッケージからapache2をインストールした場合、デフォルトのmpmはpreforkのはず。
せっかくPHPをapache2から外に出したのだからここはeventを使いたい。
sudo a2dismod mpm_prefork  
sudo a2enmod mpm_event  
apache2を再起動した後、ちゃんとeventで動作しているかを確認する。
sudo apachectl -V  
(...省略...)  
Server MPM:     event  
(...省略...)  
ちゃんと切り替わっていれば完了。

APCuでメモリキャッシュの設定

必要パッケージ

  • php-apcu
  • php-apcu-bc

phpの設定

/etc/php/7.0/apache2/conf.d/20-apcu.iniを編集
apc.enabled = 1  
apc.enable_cli = 1  
apc.shm_size = 64M  
apc.ttl = 7200  

config.phpの設定

'memcache.local' => '\OC\Memcache\APCu',  
'memcache.locking' => '\OC\Memcache\APCu',  

cronジョブの設定

Ajaxやwebcronではなくcronで実行する方がパフォーマンス的に良いようだ。
cronジョブはapache2の実行ユーザーで登録する。
stretchの場合デフォルトではwww-dataユーザーとなる。
sudo crontab -u www-data -e  
www-dataユーザーのcrontabにジョブを記述する。
*/15  *  *  *  * /usr/bin/php -f /var/www/owncloud/cron.php  
15分置きに実行、cron.phpはowncloudのインストールディレクトリにあるものを指定する。

各エラーログとその対策

"You are using a fallback implementation of the intl extension. Installing the native one is highly recommended instead. at \/var\/www\/html\/lib\/composer\/patchwork\/utf8\/src\/Patchwork\/Utf8\/Bootup\/intl.php#18"

  • php-intlをインストールする。

"Memcache \OC\Memcache\APCu not available for local cache"

  • apc.enable_cli = 1が設定されていないと発生。phpの設定を再確認。

"Memcache \OC\Memcache\APCu not available for distributed cache"}

  • apc.enable_cli = 1が設定されていないと発生。phpの設定を再確認。

コメント