Plask12でパッケージソフトの復元機能でエラー

らら
らら

はじめに

Movable TypeやWordpressのインポート・エクスポート時のはなしです。

インポート時ファイルをアップロード時、Nginxの413 Request Entity Too Largeが出た。

あれ?apacheで動かしているのに・・なぜNginx・・

どうもPlaskでは、Nginxでproxy経由でapacheに接続する設定になっているよう・・

たぶん、Plaskでphp-fpm とかFastCGI,CGIモードの切り替えがサイト毎にできるのできっとその兼ね合いかな・・

Plask管理画面で Apache & nginx 設定ってあるのでなんでかなと思っていたのですが・・

解決方法

nginxのclient_max_body_sizeを変更をすればよいとわかったので

Pleskで該当ドメインで、 Apache & nginx 設定でnginx 追加ディレクティブ で


client_max_body_size 500m;

とか


server {
client_max_body_size 500m
}

やってみたがだめで

Plaskサイトで下記の設定を直接変える方法があったので

SSHでログインして、下記のディレクトリーにあるnginx.confを修正する。


/var/www/vhosts/system/あなたのドメイン/conf/nginx.conf

client_max_body_sizeの値を実際アップロードするファイルサイズ+アルファして設定します。

plesk12では128Mになっていました。

2か所あったので筆者は2か所とも修正しました。

nginx.confイメージ


server {
なにか・・
        client_max_body_size 128m;
なにか・・
}

上記の128mを筆者のファイルは450mぐらいだったので500mにして

Plask管理のサービスでnginxを再起動しました。

できましたーー

ただ、手動でnginx.conf修正しても、pleskで設定し直すと元に戻ります。。

Plesk Obsidian 18でやってみた。


413 Request Entity Too Large
nginx

上記が出たので前回同様 下記を修正


/var/www/vhosts/system/あなたのドメイン/conf/nginx.conf

client_max_body_size 128m;

インポート初めて40秒ぐらいして


申し訳ございません。このページに到達できませんhttps://xxxxxxx の Web ページに問題が発生しているか、新しい Web アドレスに完全に移動された可能性があります。
ERR_HTTP2_PROTOCOL_ERROR

とか


502 Bad Gateway 
nginx

エラーログは

proxy_error_log


*1 upstream prematurely closed connection while reading response header from upstream,

error_log


(32)Broken pipe: [client xxx.xxx.xxx.1:57252] AH02651: Error writing request body to script 
(104)Connection reset by peer: [client xxx.xxx.xxx.1:57252] AH00574: ap_content_length_filter: apr_bucket_read() failed,

Apache & nginx 設定のApache 追加ディレクティブ

HTTP 用追加ディレクティブ

HTTPS 用追加ディレクティブ


FcgidBusyTimeout 300
FcgidIOTimeout 250

fastcgiもオフしてみたり。。

Pleskで該当ドメインで、 Apache & nginx 設定でnginx 追加ディレクティブ で


proxy_read_timeout 300;

など追加してみたが変わらず・・

Pleskでツールと設定で

MPM モード EventからPreFork変更して動作した。。

Pleskでツールと設定→Apache ウェブサーバ→Apache モジュール

MPM モード PreFork

動いた・・うーむ。よくわからん・・・

あとこちらの設定は仮想サイト全体に影響するので、インポート完了後はもとに戻したほうがいいのかな・・

Movable Typeが動かない

ちなみにMovable TypeのCGIを動作させるには

Apache & nginx 設定のApache 追加ディレクティブ

HTTP 用追加ディレクティブ

HTTPS 用追加ディレクティブ

SSL利用かどうかでどちらかに。下記を記載するとMovable Typeが動作します。


AddHandler cgi-script .cgi

さいごに

Plaskは便利なんですけど、規模の小さいなものとか静的データとかにした方がいいですね。

新規導入時は楽ですけど。引っ越しとかデータが大きくなるものはデフォルトが128Mなので使用できないですね。

追記

Apache & nginx 設定でnginx 追加ディレクティブでclient_max_body_size が設定できない件は Pleskサイトに記載があり、

直接nginx.conf設定を変更しなくてもよい方法がありました。Plesk内部の問題の様で2021年10月現在時点の回避策です。アップデートで修正予定らしいです。


Invalid nginx configuration: nginx: [emerg] "client_max_body_size" directive is duplicate in /var/www/vhosts/system/domain.com/conf/vhost_nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed

方法

/usr/local/psa/admin/conf/panel.iniに記述を追加します。筆者の環境では、存在しなかったので新規作成しました。

nginxClientMaxBodySizeの値を設定しない定義です。


[webserver]
nginxClientMaxBodySize =

追記した内容を反映させる。


plesk sbin httpdmng --reconfigure-all

NGINX を再起動する pleskからでも問題ありませんでした。


service nginx restart

Apache & nginx 設定でnginx 追加ディレクティブで追加します。


client_max_body_size 600m

こちらで対応することにより、pleskで変更しても元に戻りません。。

関連記事