ry0ta.ma2da
フォーラムへの返信
-
フォーラム: インストール
返信が含まれるトピック: 初回のアクセスの表示が遅い質問させて頂いていた本問題ですが、(はっきりとした原因は不明のまま)一まず解決しましたので、記載させて頂きます。
▼対応
WPで作成したBlogサイトへのアクセスは、proxyを経由してWP設置サーバへ転送しているが、そのWP設置サーバを別のサーバにリプレースした。▼結果
初回アクセス含め、表示もデータ登録・更新も全く問題ない表示速度になった。▼原因
旧サーバの具体的にどこが悪かったのかは不明。ハードウェア障害?▼判断の経緯
- proxy経由なしで、複数回に分け時間をおいて、直接WP設置サーバへアクセスしてみたが、表示速度はやはり遅かった。
- その旧サーバの管理者がサーバにSSHでログイン、確認作業でcdやlsといった大した負荷のないコマンドを入力したが、管理者の経験・感覚からして、その応答が帰ってくる速度が異常に遅かった。
- 一度リブートを実行したが、なかなか始まらない終わらないで、リブート作業も異常に時間がかかった。
などの事象が見られたため、WordPressとか、Proxy経由とかのアプリケーション・ネットワークの問題ではなく、サーバ筐体そのものが問題と判断し、サーバをリプレースした。
jim912さん、podspodさん
アドバイスなど、ありがとうございました。致命的な問題が(とりあえず)解決し、ようやくサービスが開始できそうです。フォーラム: インストール
返信が含まれるトピック: 初回のアクセスの表示が遅いpodspodさん
情報ありがとうございます。
1.可能でしたらproxyを介さずにアクセスしてみる
これは1度やってみました。問題ない速さでした。ただその時はproxy経由で数回アクセス後の徐々に速くなった後の検証でしたので、原因の切り分けにはなりませんでした。
表示遅延が発生しているタイミングで、また再度確認してみます。2.ApacheのエラーログでWarningも含め、何か思い当たるものがないか
確認してみました。私の知識・調査不足でよく分かっていないエラーログは出ているのですが、表示遅延の発生タイミングで必ず出力されているものではなく、今のところ直接的な原因ではないのでは、と考えています。
3.WordPressを最新版にしてみる
・PHP:5.1.6 –> 5.3.3
・WordPress:3.1.4 –> 3.3.2
にアップデートしてみましたが、変化なしでした。また、調べていると「WordPressでリバースプロキシすると無限ループする」という情報があったので、情報の通り「Disable Canonical URL Redirection」をインストールしてみましたが、変化なしでした。
それと、これはフォーラム内の別の方の質問ですが、「wordpressのバージョン更新確認時にproxyに阻まれることが原因」とありましたので、「Disable WordPress Updates」をインストールしてみました。
まだインストールしたばかりなので、時間をおいてアクセスするなど、しばらく様子を見てみます。フォーラム: インストール
返信が含まれるトピック: 初回のアクセスの表示が遅いjim912さん
情報ありがとうございます!
「2.Debug Barのソースを一部書き換える」で表示されました!ただ、複数ページにアクセス・Debugで「Queries」を確認していますが、同じページで同じクエリでも、複数回アクセスしていると、時間がかかっていたクエリが次第に速くなったり、そもそも発行されなくなったりと結果がまちまちで、まだ遅延の箇所や傾向がつかめていません。
※100ミリ秒以上かかっていたクエリの例:
↓は、作成した固定ページTOPにアクセスした際のクエリの1つ、2度目以降、このクエリは発行されなくなった?
UPDATE wp_options SET option_value = '1336700006' WHERE option_name = '_transient_doing_cron' do_action, wp_cron, spawn_cron, set_transient, update_option #2 (278.3ms)
↓は、ダッシュボード内の[更新]にアクセスした際のクエリ2つ
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes' wp_not_installed, is_blog_installed, wp_load_alloptions #1 (804.1ms) UPDATE <code>wp_options</code> SET <code>option_value</code> = 'O:8:\"stdClass\":1:{s:12:\"last_checked\";i:1234567890;}' WHERE <code>option_name</code> = '_site_transient_update_themes' do_action, wp_update_themes, set_site_transient, update_site_option, update_option #8 (269.3ms)
しばらくアクセスを止め、時間を置いて再度アクセスするなど、引き続き確認していきます。
Debugで確認するべきメニュー、ポイント、やり方などありましたら、教えて頂ければと思います。フォーラム: インストール
返信が含まれるトピック: 初回のアクセスの表示が遅いjim912さん
アドバイスありがとうございます。また質問させて頂きたいのですが、Debug Bar、Debug-Bar-Extenderをインストール、有効化したのですが、管理バーに「Debug」メニューが表示されません。
以下のサイトを参考に、wp-config.phpにも以下のコードを追加しています。
define('SAVEQUERIES', true); define('WP_DEBUG', true); define('WP_DEBUG_DISPLAY', false);
・参考にしたサイト
http://dogmap.jp/wckobe2011/
http://www.warna.info/archives/1239/利用中のWPは2つのプラグインに対応しているバージョンのはずなのですが、2プラグインのインストール、有効化、wp-config.phpにコード追加、以外に何か設定が必要かご存知でしょうか?
お手数ですが、よろしくお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: ダッシュボード内のリンク、ボタン押下時に404エラーが発生ご報告が遅くなってしまいましたが、404エラーの件、解決しました。
そもそも最初に書いた私の情報に不足があったのですが、
今回設置したWPへのアクセスで以下のように1度リバースプロキシサーバを経由する、ということが漏れておりました。このリバースプロキシサーバからの転送URLを以下のように修正することで404エラーが解消しました。
●修正前
以下URLでリバースプロキシサーバにアクセスし、
→ http://hogehoge.jp/eblogそこから、WPを設置した別のサーバの仮想ホストに以下URLで転送。
→ http://hogehoge-virual.jp/この転送形式では、$_SERVER[‘REQUEST_URI’] に以下のパスが取得されるため、404エラーとなっておりました。
※以下のパスは404発生箇所の一例で、ダッシュボードの一般設定の変更ボタンのPOST先のパス$_SERVER[‘REQUEST_URI’] に取得されるパス
→ /wp-admin/options-general.php○修正後
対策として、仮想ホストに転送するリクエストを以下のように「/eblog」を付けた形に変更すると、
正しくパスは取得され404エラーは解消しました。変更後の仮想ホストへの転送URL
→ http://hogehoge-virual.jp/eblog$_SERVER[‘REQUEST_URI’] に取得されるパス
→ /eblog/wp-admin/options-general.php>nobitaさん、CyberCypherさん、Hikari Aoiさん、
こちらの情報が不足していたために、お手間を取らせてしまい、申し訳ありませんでした。
多くのアドバイスを頂き、ありがとうございました。フォーラム: プラグイン
返信が含まれるトピック: 日本語に対応したドキュメント管理Pluginについて「WP-Filebase」というPluginで解決できました。
フォーラム: 使い方全般
返信が含まれるトピック: ダッシュボード内のリンク、ボタン押下時に404エラーが発生Hikari Aoiさん
詳細な情報ありがとうございます。参考リンク内「httpd -Mコマンドでmod_rewriteがHTTPDに読み込まれているか確認しよう。」
httpdはyumでインストールすると/usr/sbin/httpdにあります。コマンドの詳細ありがとうございます。確認しました。
「rewrite_module (shared)」となっており、問題ないようです。httpd.conf及び/etc/httpd/conf.dの中の設定ファイルに対してAllowOverrideで検索をかけてチェックされることをお勧めします。
どちらも問題ないようです。
wp-configでWP_DEBUGをtrueにしてデバッグ情報を確認する。
エラーや警告情報は表示されませんでした。
/var/log/httpdのApacheログ
確認しましたが、疑わしい不明なエラーなどはありませんでした。
皆さんの環境だと$_REQUEST[‘_wp_http_referer’]が
「http://example.com/wp-admin/」「http://example.com/wp/wp-admin/」のように
「httpからwp-admin」までのパスを取得できているようですが、
なぜ私の環境の場合、「/wp-admin/…….php?…」なのか。nobitaさんに教えて頂いたリライトルールを調べる
「AskApache RewriteRules Viewer」をインストールしてみましたが、
あまり詳細に時間をかけて確認できてませんが、ちょっと使い方が分かりませんでした。引き続き、確認してみます。
フォーラム: 使い方全般
返信が含まれるトピック: ダッシュボード内のリンク、ボタン押下時に404エラーが発生Hikari Aoiさん、nobitaさん
アドバイスありがとうございます。どうもApacheの設定の問題のような気がします。
新規の環境を作成していて、まだ正常動作していないということであれば、お役にたてるかもしれません。ダッシュボード内の設定関連メニューだけでなく、投稿時のメディア追加箇所でも発生していることから、
私もApacheの設定ファイルなど全体に関わるところに問題がある気がしています。インストール完了時点から既にこの状態(=404エラー)で、未解決のままのため、
インストールからその後の各サーバ上の設定がWP用に正しくできていない部分があるのかもしれません。LAMP環境にWPをインストールする際の参考サイトなどご存知でしたら教えて頂けないでしょうか?
Linuxを扱うこと自体、今回が初で、色々なサイトを参考にトライアンドエラーを繰り返したため、序盤の設定でどこをどう変えたか・・・かなり不安です。
現在、リリースしているサイトではないため、(根本的な解決にはなりませんが)全て最初からインストールも一つの方法かと考えています。ファイルの所有者がnobody/apacheとなっていますが、ソースファイルからコンパイルインストールしたのでしょうか?
yumでインストールしました。
mod_rewriteが使えるようにコンパイルされていますか?
httpd.confの「oadModule rewrite_module modules/mod_rewrite.so」は
コメントアウトされていないため大丈夫かと思います。httpd.confのAllowOverrideの設定はされていますか?Noneのままだと.htaccessによるOverrideがされません。
WPインストールディレクトリは「AllowOverride All」で設定していますので、こちらも問題ないかと考えています。
参考リンク内「httpd -Mコマンドでmod_rewriteがHTTPDに読み込まれているか確認しよう。」
このコマンドをどのパスで実行したらよいかわからず、こちらは確認できませんでした。
Apache再起動時と同じパスで「/etc/rc.d/init.d/httpd -m」なのかなと思いましたが、
そんなオプションはない、というメッセージが出てしまいます。
yumインストールの場合、パスをどのように指定して実行するかご存知でしょうか?
少し調べたのですが、分かりませんでした。wp_get_referer();が取れていない?
ご指摘の通り一般設定変更時に wp_get_referer() は、本来
/eblog/wp-admin/options-general.php
を返すはずが、
/wp-admin/options-general.php
という「/eblog」部分が取れていないまさにこの wp_get_referer() 部分が発生の原因のようです。function wp_get_referer() { $ref = false; if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) // ←こちらの分岐を通過 $ref = $_REQUEST['_wp_http_referer']; else if ( ! empty( $_SERVER['HTTP_REFERER'] ) ) $ref = $_SERVER['HTTP_REFERER']; if ( $ref && $ref !== $_SERVER['REQUEST_URI'] ) return $ref; return false; }
↑の $_REQUEST[‘_wp_http_referer’] が、
プログラム内でどのような流れでどこから取得されているのか、
私のPHPスキルが乏しく、一般設定部分のソース(※)が理解できていません。
※wp-admin/options-general.phpとoptions.phpソース改変が必要ということはないと思っているので、
上述したようにサーバ側の設定部分が問題かとは思うのですが、
それがどこかを特定するにあたり、この$_REQUEST[‘_wp_http_referer’]について、
教えて頂けませんでしょうか?度々となり、申し訳ありませんが、よろしくお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: ダッシュボード内のリンク、ボタン押下時に404エラーが発生CyberCypherさん、nobitaさん
アドバイスありがとうございます。一度プラグインをオフにしてみることをお勧めします
オフにしてみましたが、アクセスできませんでした。
admin_url()とnetwork_admin_url()のURLは正しく取得できていますか?
「admin_url()」「network_admin_url()」ともに
「http://hogehoge.jp/eblog/wp-admin/」が取得されていました。
これらは正しく動いている?と思われます。今回問題箇所の一つの
一般設定画面(wp-admin/options-general.php)の変更を保存ボタンを押下すると、
まず「options.php」に対してPOST、更新処理を行い、
パラメータを付与して元の一般設定画面(wp-admin/options-general.php?settings-updated=true)に戻る流れのようですが、
この「options.php」内で/** * Redirect back to the settings page that was submitted */ $goback = add_query_arg( 'settings-updated', 'true', wp_get_referer() ); wp_redirect( $goback ); exit;
としている「$goback」を画面出力してみると
「/wp-admin/options-general.php?settings-updated=true」
が取得されていました。現状、ここまでしかコードを追えていないため、
このadd_query_arg()の結果が正しいのか分かっていません。この時点で$gobackはこの結果でよいのか、それとも
「http://hogehoge.jp/eblog/wp-admin/options-general.php?settings-updated=true」
のように、完全なURLとしてドメイン+WPディレクトリ名まで取得できているべきなのか。正しければ、次はwp_redirect()の処理内の問題なのか何なのか、引き続き確認しようと思っています。
もしお気づきの点がありましたら、ご指摘をお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: ダッシュボード内のリンク、ボタン押下時に404エラーが発生nobitaさん、CyberCypherさん
アドバイスありがとうございます。・パーマリンクの設定を、デフォルトに戻してみてください。
・パーマリンク設定をやり直すか元に戻して設定し直した方がいいですパーマリンクの設定をデフォルトに戻してみても、.htaccessファイルを削除してみても
404エラーは変化なしでした。なお.htaccessファイルは以下の状態です。
▼対象:パーミッション/所有者/グループ
.htaccess:-rw-rw-rw-(666)/root/root※もともとパーマリンクの設定を変更していた経緯は、
サイトの表示遅延対策として「WP Super Cache」をインストールし、
このPluginの設定を変更しようとメニューにアクセスすると
「パーマリンク構造エラー」となったことから、設定を数字ベースに変更していました。だめなら、.htaccessを貼り付けてみてください。
WPインストール時点では.htaccessは存在していませんでした。
Basic認証導入とパーマリンク変更対応のために作成した.htaccessの内容は以下の通りです。### Basic認証設定のために.htaccess(と.htpasswd)を新規作成 ###
<Files ~ “^\.(htaccess|htpasswd)$”>
deny from all
</Files>
AuthUserFile /var/xxx/yyy/eblog/.htpasswd
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user### パーマリンク設定変更で「.htaccess を更新する必要があります」対応、変更画面下部に出力されたコードをそのまま追加 ###
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /eblog/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /eblog/index.php [L]
</IfModule>あと例外としてhtaccessの拡張子を間違って付けている場合もアクセスできなくなってしまうので気をつけて下さい
拡張子は問題ありませんでした。.htaccessをファイルごと削除しても、404エラーは解消されませんでしたので、.htaccessとは別の問題なのかと考えています。
フォーラム: 使い方全般
返信が含まれるトピック: ダッシュボード内のリンク、ボタン押下時に404エラーが発生nobitaさん、ご回答ありがとうございます。
.htaccessの更新を行っていますでしょうか?
更新ボタン押下後、画面下部に表示されるコードを.htaccessに追記しましたが、
同じメッセージが表示され、404も解消されず、変化なしでした。この.htaccessの問題に関しては、「http://ja.forums.wordpress.org/topic/808」あたりを参考に
.htaccessのパーミッションを「644 → 666」に変更したところ、
メッセージは「パーマリンク構造を更新しました。」となりました。
ただ、他設定メニューの404エラーは変化無しでした。現在404エラーが発生している設定メニュー系と投稿画面のメディアを追加のタブリンクでは、
以下のように、
http://hogehoge.jp/eblog/wp-admin/…..
となってほしいリンク先のURLが、リンク、ボタン押下前の画面のソース確認時点で
http://hogehoge.jp/wp-admin/…..
というようにWPソースを配置しているディレクトリ名部分のパスが
出力されていないことから、そんなパスは存在しない(=404)となっており、
パーミッションは関係ないのかな、と今のところ考えています。ただ、WPやパーミッションについて、まだよく分かっていないため確認・質問させて頂きたいのですが、
wp-adminディレクトリとその配下のファイル群のパーミッションはどのように設定されていることが望ましいのでしょうか?現在は以下の状態です。
▼対象:パーミッション/所有者/グループ
ディレクトリ:drwxr-xr-x(766)/nobody/apache
ファイル:-rw-rw-r–(664)/nobody/apachewp-adminディレクトリについて、WP CODEXのファイルパーミッションの変更の要件は満たしていると思っているのですが、、。
httpd.conf内のドキュメントルートの設定とか、そもそも全く別問題なのかもしれません。度々で申し訳ありませんが、何かご存知の情報がありましたら、アドバイスをよろしくお願いします。