jessieからstretchに更新した際にアップデートではなくクリーンインストールした為、稼働していたowncloudの再構築&データ移行を実施した。
以下、私的に覚えておきたい点をいくつか書き残す。
ある程度セットアップが済めばlevel2で問題ないかも。
config.phpの設定にもlog_rotate_sizeがあるが、ここではシステムのlogrotate.dを使用する。
/etc/logrotate.d/にowncloudの名で下記内容のファイルを作成する。
stretchでは基本の設定がすべて用意されているので、難しい設定はなにも無く動作させる事が出来た。
せっかくPHPをapache2から外に出したのだからここはeventを使いたい。
cronジョブはapache2の実行ユーザーで登録する。
stretchの場合デフォルトではwww-dataユーザーとなる。
以下、私的に覚えておきたい点をいくつか書き残す。
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_eventapache2を再起動した後、ちゃんと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 -ewww-dataユーザーのcrontabにジョブを記述する。
*/15 * * * * /usr/bin/php -f /var/www/owncloud/cron.php15分置きに実行、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の設定を再確認。
コメント
コメントを投稿