Nextcloud Nginx 初期設定・チューニング編
Nextcloudの警告対策
Nextcloud>設定>管理>概要 を開くと、セキュリティ&セットアップ警告が表示されます。
1.PHPのメモリ制限は推奨値512MBを下回ります。
パフォーマンス向上のためには次の設定を行った。
上の参照サイトを参考にNextcloudサーバーのPHPの設定をしてみた
# vi /etc/opt/rh/rh-php72/php.ini
以下を編集した。
memory_limit = 512M post_max_size = 20480M upload_max_filesize = 20480M
これをやってもダメだった。
PHPのメモリ制限は推奨値512MBを下回ります。
上で/etc/opt/rh/rh-php72/php.ini を編集してもだめだったので、
Nextcloudサーバーの /etc/php.ini の下記を変更してみた
;memory_limit = 128M memory_limit = 512M # systemctl restart httpd
これで 「PHPのメモリ制限は推奨値512MBを下回ります。」 は解消!
2.メモリキャッシュが設定されていません。可能であれば・・・
参照サイトを参考にNextcloudサーバーの APCuの設定をしてみた。
# vi /var/www/html/nextcloud/config/config.php
‘memcache.local’ => ‘\OC\Memcache\APCu’, ← 追加してみた
<?php $CONFIG = array ( 'instanceid' => 'ocpdajlkefwz', 'passwordsalt' => '1BCohF46WbFgJcxJKaOt6YZJOu1R+r', 'secret' => 'wM6YKJ8T1Rna2s7QxI22+AZV1sBZh+m1EcRBJk4MFJI4cpOe', 'trusted_domains' => array ( >0 => 'storage.example.com', ), 'datadirectory' => '/var/www/html/nextcloud/data', 'dbtype' => 'mysql', 'version' => '16.0.1.1', 'overwrite.cli.url' => 'http://storage.example.com/', 'dbname' => 'nextcloud', 'dbhost' => 'localhost', 'dbport' => '', 'dbtableprefix' => 'oc_', 'dbuser' => 'nextcloud', 'dbpassword' => 'password', 'installed' => true, 'memcache.local' => '\OC\Memcache\APCu', ← 追加 );
とりあえずこれはこれで良いみたいだ。
3.PHP OPcacheモジュールがロードされていません。より・・・・
参照サイトを参考にNextcloudサーバーの以下を編集してみた
# vi /etc/opt/rh/rh-php72/php.d/10-opcache.ini
ファイルが無いので作成した。
opcache.enable=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
NextcloudサーバーのApache を再起動
# systemctl restart httpd PHP OPcacheモジュールがロードされていません。
[root@nextsv php.d]# cp -p /etc/opt/rh/rh-php72/php.d/10-opcache.ini /etc/php.d/
NextcloudサーバーのApache を再起動したが改善されず
/etc/php.ini の最後に 以下を追加してみた。
[opcache] opcache.enable=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
NextcloudサーバーのApache を再起動したが改善されず
PHP OPcacheモジュールがロードされていません。よりパフォーマンスを向上させるには、PHPインストールにロードすることをお勧めします。
ダメなので /etc/php.ini を戻す
opcacheがインストールされてないみたいだ。
rh-php72-php-opcache をインストールしてみた。
[root@nextsv ~]# yum install -y rh-php72-php-opcache 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.tsukuba.wide.ad.jp * centos-sclo-rh: ftp.tsukuba.wide.ad.jp * centos-sclo-sclo: ftp.tsukuba.wide.ad.jp * epel: my.fedora.ipserverone.com * extras: ftp.tsukuba.wide.ad.jp * remi-safe: mirrors.thzhost.com * updates: centos.usonyx.net 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ rh-php72-php-opcache.x86_64 0:7.2.10-3.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ===================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ===================================================================================================================== インストール中: rh-php72-php-opcache x86_64 7.2.10-3.el7 centos-sclo-rh 207 k トランザクションの要約 ===================================================================================================================== インストール 1 パッケージ 総ダウンロード容量: 207 k インストール容量: 444 k Downloading packages: rh-php72-php-opcache-7.2.10-3.el7.x86_64.rpm | 207 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction 警告: RPMDB は yum 以外で変更されました。 インストール中 : rh-php72-php-opcache-7.2.10-3.el7.x86_64 1/1 warning: /etc/opt/rh/rh-php72/php.d/10-opcache.ini created as /etc/opt/rh/rh-php72/php.d/10-opcache.ini.rpmnew 検証中 : rh-php72-php-opcache-7.2.10-3.el7.x86_64 1/1 インストール: rh-php72-php-opcache.x86_64 0:7.2.10-3.el7 完了しました!
[root@nextsv ~]# systemctl restart httpd ブラウザから https://mydomain.xxx/
結果改善されず
ハマって来た。php関係のモジュールを念の為再インストールしてみた
[root@nextsv ~]# yum install -y rh-php72 rh-php72-php rh-php72-php-gd rh-php72-php-mbstring rh-php72-php-intl rh-php72-php-pecl-apcu rh-php72-php-mysqlnd rh-php72-php-pecl-redis rh-php72-php-opcache rh-php72-php-imagick 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.tsukuba.wide.ad.jp * centos-sclo-rh: ftp.tsukuba.wide.ad.jp * centos-sclo-sclo: ftp.tsukuba.wide.ad.jp * epel: sg.fedora.ipserverone.com * extras: ftp.tsukuba.wide.ad.jp * remi-safe: rpms.remirepo.net * updates: centos.usonyx.net パッケージ rh-php72-1-2.el7.x86_64 はインストール済みか最新バージョンです パッケージ rh-php72-php-7.2.10-3.el7.x86_64 はインストール済みか最新バージョンです パッケージ rh-php72-php-gd-7.2.10-3.el7.x86_64 はインストール済みか最新バージョンです パッケージ rh-php72-php-mbstring-7.2.10-3.el7.x86_64 はインストール済みか最新バージョンです パッケージ rh-php72-php-intl-7.2.10-3.el7.x86_64 はインストール済みか最新バージョンです パッケージ rh-php72-php-pecl-apcu-5.1.12-1.el7.x86_64 はインストール済みか最新バージョンです パッケージ rh-php72-php-mysqlnd-7.2.10-3.el7.x86_64 はインストール済みか最新バージョンです パッケージ rh-php72-php-opcache-7.2.10-3.el7.x86_64 はインストール済みか最新バージョンです 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ sclo-php72-php-pecl-imagick.x86_64 0:3.4.4-1.el7 を インストール --> 依存性の処理をしています: libMagickWand.so.5()(64bit) のパッケージ: sclo-php72-php-pecl-imagick-3.4.4-1.el7.x86_64 --> 依存性の処理をしています: libMagickCore.so.5()(64bit) のパッケージ: sclo-php72-php-pecl-imagick-3.4.4-1.el7.x86_64 ---> パッケージ sclo-php72-php-pecl-redis4.x86_64 0:4.3.0-1.el7 を インストール --> 依存性の処理をしています: rh-php72-php-pecl(igbinary)(x86-64) のパッケージ: sclo-php72-php-pecl-redis4-4.3.0-1.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ ImageMagick.x86_64 0:6.7.8.9-18.el7 を インストール ---> パッケージ sclo-php72-php-pecl-igbinary.x86_64 0:2.0.8-1.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================================================= Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================================================= インストール中: sclo-php72-php-pecl-imagick x86_64 3.4.4-1.el7 centos-sclo-sclo 117 k sclo-php72-php-pecl-redis4 x86_64 4.3.0-1.el7 centos-sclo-sclo 191 k 依存性関連でのインストールをします: ImageMagick x86_64 6.7.8.9-18.el7 base 2.1 M sclo-php72-php-pecl-igbinary x86_64 2.0.8-1.el7 centos-sclo-sclo 76 k トランザクションの要約 ================================================================================================================= インストール 2 パッケージ (+2 個の依存関係のパッケージ) 総ダウンロード容量: 2.5 M インストール容量: 9.0 M Downloading packages: (1/4): sclo-php72-php-pecl-imagick-3.4.4-1.el7.x86_64.rpm | 117 kB 00:00:00 (2/4): sclo-php72-php-pecl-igbinary-2.0.8-1.el7.x86_64.rpm | 76 kB 00:00:00 (3/4): sclo-php72-php-pecl-redis4-4.3.0-1.el7.x86_64.rpm | 191 kB 00:00:00 (4/4): ImageMagick-6.7.8.9-18.el7.x86_64.rpm | 2.1 MB 00:00:00 ----------------------------------------------------------------------------------------------------------------- 合計 5.0 MB/s | 2.5 MB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : ImageMagick-6.7.8.9-18.el7.x86_64 1/4 インストール中 : sclo-php72-php-pecl-igbinary-2.0.8-1.el7.x86_64 2/4 インストール中 : sclo-php72-php-pecl-redis4-4.3.0-1.el7.x86_64 3/4 インストール中 : sclo-php72-php-pecl-imagick-3.4.4-1.el7.x86_64 4/4 検証中 : sclo-php72-php-pecl-imagick-3.4.4-1.el7.x86_64 1/4 検証中 : sclo-php72-php-pecl-igbinary-2.0.8-1.el7.x86_64 2/4 検証中 : sclo-php72-php-pecl-redis4-4.3.0-1.el7.x86_64 3/4 検証中 : ImageMagick-6.7.8.9-18.el7.x86_64 4/4 インストール: sclo-php72-php-pecl-imagick.x86_64 0:3.4.4-1.el7 sclo-php72-php-pecl-redis4.x86_64 0:4.3.0-1.el7 依存性関連をインストールしました: ImageMagick.x86_64 0:6.7.8.9-18.el7 sclo-php72-php-pecl-igbinary.x86_64 0:2.0.8-1.el7 完了しました!
NextcloudサーバーのApache を再起動
[root@nextsv ~]# systemctl restart httpd PHP OPcacheモジュールがロードされていません。よりパフォーマンスを向上させるには、PHPインストールにロードすることをお勧めします。
結果改善されず
[root@nextsv php.d]# cp -p /etc/opt/rh/rh-php72/php.d/10-opcache.ini /etc/php.d/ [root@nextsv ~]# systemctl restart httpd
改善されず
PHP OPcacheモジュールがロードされていません。よりパフォーマンスを向上させるには、PHPインストールにロードすることをお勧めします。
/etc/php.ini に opcacheの記述を追加してみる
[root@nextsv etc]# vi /etc/php.ini [opcache] opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
NextcloudサーバーのApache を再起動 確認
改善されず
いい加減疲れてきた
[root@nextsv ~]# php -v PHP 7.2.23 (cli) (built: Sep 25 2019 07:38:48) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
ここに
with Zend OPcache v7.
のように表示されないと駄目っぽい ロードされていない
モジュールのリスト表示してみた。OPcache が無い
opcache.so の所在を確認してみた
[root@nextsv ~]# php -m
[Zend Modules]
Zend OPcache ← OPcache がない
[root@nextsv sbin]# find / -name opcache.so
/opt/rh/rh-php72/root/usr/lib64/php/modules/opcache.so ← /etc/php.ini にこれが必要
[root@nextsv sbin]# find / -name php_opcache.so
なし
opcache.so の所在を確認したので /etc/php.ini に追記
[opcache]
zend_extension=/opt/rh/rh-php72/root/usr/lib64/php/modules/opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
参考までにphp.iniのオリジナルと比較しておく
[root@nextsv etc]# diff php.ini php.ini.org 406,407c406 < ;memory_limit = 128M < memory_limit = 512M --- > memory_limit = 128M 1691,1700d1689 < < [opcache] < zend_extension=/opt/rh/rh-php72/root/usr/lib64/php/modules/opcache.so < opcache.enable=1 < opcache.enable_cli=1 < opcache.interned_strings_buffer=8 < opcache.max_accelerated_files=10000 < opcache.memory_consumption=128 < opcache.save_comments=1 < opcache.revalidate_freq=1
phpのバージョン情報に with Zend OPcache v7. が追加されたか確認。OK。
[root@nextsv ~]# php -v PHP 7.2.23 (cli) (built: Sep 25 2019 07:38:48) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.10, Copyright (c) 1999-2018, by Zend Technologies ←追加されている!
[root@nextsv ~]# systemctl restart httpd
ようやく
PHP OPcacheモジュールがロードされていません。よりパフォーマンスを向上させるには、PHPインストールにロードすることをお勧めします。
この警告は解消された!
4.セキュアではないHTTP経由でアクセスしています。 ・・・
これは リバースプロキシー(https通信)経由で nextcloudに http接続なので警告が出るのかもしれない。
とりあえずこれでやろう。対策は?
残ってるのは2つだが 致命的ではなさそうなので後日対応する
Webサーバーは適切にホスト名 "/.well-known/caldav" が引けるように設定されていません。より詳しい情報については、ドキュメントを参照ください。 Webサーバーは適切にホスト名 "/.well-known/carddav" が引けるように設定されていません。より詳しい情報については、ドキュメントを参照ください。
リバースプロキシ Nginx の調整
数メガ位のファイルでもアップロードすると失敗する
リバプロを通さない場合のアップロードは問題ない。
設定値の確認方法
Nextcloudのサイトページにアクセスして
「設定」→「モニタリング」で 「PHP」に「最大アップロードサイズ」で確認できる
とりあえず Nextcloudサーバーと同様に下記を設定してみた
/etc/php.ini 下記編集
memory_limit = 512M post_max_size = 2048M ;8→2048 upload_max_filesize = 2048M ;2→2048
リバプロNginxの /etc/nginx/nginx.conf に 設定追加
#### mydomain.xxx nextcloud server { listen 80; listen 443 ssl; server_name mydomain.xxx; ssl_certificate /etc/letsencrypt/live/mydomain.xxx/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mydomain.xxx/privkey.pem; location ^~ /.well-known/acme-challenge/ { root /usr/share/nginx/html/.well-known; } location / { proxy_set_header X-Real-IP $remote_addr; index index.html index.htm; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://NextcloudサーバーのIP/; } } charset UTF-8; client_header_timeout 10; client_body_timeout 10; client_max_body_size 2048m; ← 512kbより大きいファイルもアップできる様に追加した。 }
[root@nginxsv nginx]# service nginx restart nginx を停止中: [ OK ] nginx を起動中: [ OK ]
ちなみにNextcloud 12.0.11 の時は「ファイル操作 最大アップロードサイズ」の設定があった
まとめ
PHPがらみの設定はやっかい。慣れないせいかもしれないが。
リバースプロキシー経由でのNextcloudへのアクセスなので設定が複雑。
やっぱりシンプルな構成が良い
コメント