Nextcloudは多層的なWebアプリスイートであるため、ログがたちまち肥大化します。
そのため、設定後、ログローテーションの設定を行います。
動作確認環境
- Ubuntu 20.04
- Nextcloud 27.02
- Apache2.4経由で稼働
- PHP 8.1
さっくりとした手順
- logrotate.dにファイルを追加します。
- 動作を確認します。
- logrotateサービスを再起動します。
ファイルの追加
以下の通り、ファイルを追加します。【】内は設定したログファイルの格納ディレクトリにしてください。
cat <<- __EOF__ | sudo tee -a /etc/logrotate.d/nextcloud
【/var/log/nextcloud/】*.log {
daily
dateext
dateformat -%Y%m%d
rotate 10
missingok
notifempty
su www-data www-data
create 640 www-data www-data
sharedscripts
compress
delaycompress
postrotate
if invoke-rc.d apache2 status > /dev/null 2>&1; then \
invoke-rc.d apache2 reload > /dev/null 2>&1; \
fi;
endscript
}
__EOF__
それぞれの内容
- /var/log/nextcloud/*.log: /var/log/nextcloud/ ディレクトリ内の全ての .log ファイルを対象にしてログローテーションが行われます。
- daily: 日ごとにログをローテートします。
- dateext: ログファイル名に日付が追加されます。
- dateformat -%Y%m%d: 日付のフォーマットが "年4桁月2桁日2桁" の形式で指定されます。
- rotate 10: ログファイルは10世代まで保持され、古いファイルは削除されます。
- missingok: ログファイルが存在しない場合でもエラーを出さずに処理を続行します。
- notifempty: ログファイルが空の場合、ローテーションを行わずにスキップします。
- su www-data www-data: ローテーション操作時にログファイルの所有者とグループを www-data ユーザーに変更します。
- create 640 www-data www-data: 新しいログファイルが作成される際、所有者 www-data とグループ www-data、パーミッション 640 で作成されます。
- sharedscripts: ローテーションの前後に prerotate および postrotate セクション内のコマンドを共有します。
- compress および delaycompress: ローテート後にログファイルを圧縮し、以前のファイルを圧縮しないようにします。
- postrotate: ローテーションが完了した後、Apache2サーバーが起動している場合にApache2をリロードします。
設定確認
sudo logrotate -v /etc/logrotate.d/nextcloud
エラーがないことを確認します。
設定反映
sudo systemctl restart logrotate.service
これで設定は完了です。後日、アクセスログが圧縮されていることを確認します。
すぐ確認したい場合は
sudo logrotate -f /etc/logrotate.d/nextcloud
で、強制的にローテートさせます。