apache Nextcloud Nginx 未分類

Nextcloud 16 + Nginx(リバプロ) 初期設定・チューニング

apache

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のデフォルトの設定ではアップロードが512kbしかできないらしい

リバプロ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へのアクセスなので設定が複雑。
やっぱりシンプルな構成が良い

コメント