スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

Nginx+Wordpressで固定ページをTOPにしたら403になった件

CentOS上のLEMP環境でWordpressを練習がてら動かしててドハマったはなし。
CentOS6.6 Nginx 1.6.2 MySQL 5.1.3 PHP5.3.3
Wordpressは/var/www/wordpress
Nginxのrootは/var/wwwで/var/www以下にはDrupal baserCMS concrete5などが動いていたりする。
Wordpressは4.1.1。

現象1.パーマネントリンク設定したら404頻発
現象2.固定ページをTOPに設定したらTOPだけ403

ちょっと作業が前後してるのでどっちがどっちの原因かよくわからないけどとりあえず解決したのでメモ。

1.パーマネントリンクの変更にはrewrite有効設定が必要
パーマネントリンクの設定をカスタムにしたら404頻発になった方の解決法。
Nginxでのエラー情報ってまだちょっと少ない感じですかね?(俺の検索力なのか)
Apacheだと.htaccessの書き換えとかが必要になったり自動でやってくれてたりするみたいですけど、Nginxには.htaccessはないので設定ファイルに書かなきゃいけません。なまじ今までphp-fpmの設定だけで動くには動いちゃってたもんだから。。。
Nginx+WordPress パーマリンク設定をすると404NotFoundに飛ばされる
Nginx: nginxでWordPressのパーマリンク設定をカスタム構造に変更する
Nginx+PHP-FPMでWordPressを動かすときの設定(パーマリンク・アクセスログ対策)
はい。Nginxの設定です。

$ sudo emacs /etc/nginx/sites-enabled/〜〜.conf



try_files $uri $uri/ /wordpress/index.php?q=$uri&$args;
のとこでファイルがない場合にTOPに戻るんですけど、うちの構成の場合Nginxのrootは/var/wwwになってるので、明示的に/wordpress/index.phpとすることで通ります。WordpressのディレクトリをNginxのrootにしてる場合はここは/index/phpでいいと思います。

2.TOPが403になるのはNginxでパスを明示してやればよい
404はファイルが見つかりません、403は閲覧権限がありません、ですね。

$ sudo cat /var/log/nginx/error.log

[error] 14019#0: *10 directory index of "/var/www/wordpress/" is forbidden, client: 192.168.0.6, server: localhost, request: "GET /wordpress/ HTTP/1.1", host: "192.168.0.2", referrer: "http://192.168.0.2/wordpress/wp-admin/edit.php?post_type=page"


だらーっとforbiddenが並んで出てきます。
この時の状態はTOP(http://サーバーIP/wordpress/)がForbiddenなんですけど、それ以外のページはちゃんと表示されてます。試しにプラグイン全停止、固定ページ削除、固定ページをTOPのチェック外すなどしてみましたが改善せず。どころかパーマネントリンク設定をいじると他のページまで403になっちゃったりします。(index.php 〜〜みたいなURLを書き換えてる?から当然?)
というわけでいろいろ調べてみましたが、Apacheの.htaccessとか権限の問題っぽいのばかり引っかかってしまう。
半ばやけになってNginxの設定ファイルを書き換えたらうまく行きました。

location /wordpress {
   root /var/www/wordpress;
index index.php index.html index.htm;


多分wordpress/index.phpを見失ってるんだろうということで/wordpressのリクエストの時はrootを/var/www/wordpressとしとけ、ってことですね。
しかしこれだとTOPは表示されたのですが、CSSもimgも読み込めていません。
Screenshot from 2015-02-20 16:40:15 ガタガタですね。
これはchromiumのdeveloper toolsとかで読みこめば分かるのですが、wordpress/wp-includes/とかwordpress/wp-content/へのパスが違っていて、取ってこれなくてCSSもimgも404Not Foundになっている状態です。
ならば、/wordpress/へのアクセスにaliasをかけてやれば解決しそうです

location /wordpress {
alias /var/www/wordpress;



これ、上記の  root /var/www/wordpress;と同時に書いていると今度はNginxがreloadないしrestartするときにエラーを吐きます。

nginx: [emerg] "root" directive is duplicate, "alias" directive was specified earlier in /etc/nginx/sites-enabled/php.conf:32
nginx: [emerg] "alias" directive is duplicate, "root" directive was specified earlier in /etc/nginx/sites-enabled/php.conf:32


rootディレクティブが重複、aliasは仕様上おかしいよ(下は順序入れ替えた時でエラーも入れ替わっただけです)
というわけでroot指定を削ってaliasを書いてみます。
エラー無しで起動、http://サーバーIP/wordpressにアクセスすると・・・
Screenshot from 2015-02-20 16:44:45 どうやらうまく行きましたね。

WordPress を専用ディレクトリに配置する
少し参考になりました。
結局Nginxの設定ファイルはこんな感じ。(concrete5、baserCMS用の部分は削ってあります)
パスが違ったりしてそのままじゃ動かないかもだけど、そのへんは適当に書き換えてやればだいたい動くんじゃないかな?


関連記事
CentOS 6.5でnginx+php-fpmでPHPを動かしてみる
Cent OS 6.5でNginx+php-fpm+mysqlでFC2オープンソース版とWordPress
Concrete5.7.0が正式にリリースされたので早速CentOSサーバーに入れて動かしてみたよ
CentOS6.6のLEMP環境のconcrete5とWordPressのちゅーにんぐ(MySQL編)
CentOS+LEMPでbaserCMS
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

CentOS6.6+Nginx+muninでサーバー監視〜その2 FCGI+監視対象追加

CentOS6.6+Nginx+muninでサーバー監視の続き。
FCGIで動的にグラフ生成+監視対象を追加してみます。

一応FCGI設定でグラフ表示はできたんだけど、ズームとか効いてないからどっか間違ってるかもですね。

参考
Muninでサーバーのリソースを可視化しよう
Muninによるサーバ監視システムを構築する(CentOS 6.5)
munin 3分間インストール – CentOS6にmuninをインストールしnginxで表示する – グラフの動的生成もするよ!その2
muninでグラフをFCGIで動的に生成する

1.cronからfcgiに変更のためのNginx設定
muninはデフォルトではcronで5分おきにグラフを生成して表示しています。なので、別に5分おきにcronでの結果を表示するのでも基本的に問題はないのですが、5分おきの画像生成よりもアクセスがあった時に(見たいときに)cgiで描画するほうが効率が良いです。まぁmuninサーバーに使うサーバー機のスペックにもよりますが。
なんか画層が表示されなかったり色々あったけど、結果的にはパッケージ同梱の設定ファイルをちょっといじったもので行けたみたい。

Nginx+fcgiで動かすためのパッケージを導入。

$ sudo yum install munin-nginx spawn-fcgi


munin-nginxにはNginx用の設定ファイルが同梱されています。場所は/etc/nginx/conf.d/munin.conf
spawn-fcgiはcgiをfcgiとして動かすためのパッケージですね。
うちの環境では/etc/nginx/conf.d/以下はincludeしてなくて、/etc/ngunx/sites-enableのみをinclude、sites-avaibal以下に設定ファイル書いて、sites-enable以下の該当の設定ファイルにリンクをはる形にしているので、munin.confを /etc/nginx/sites-available/にコピーしてsites-enabled/以下からリンクを貼ります。
このあたりですごくハマったんだけど、結果的にはデフォルトのconfigファイルのrootディレクトリだけ変更するとうまく行きました。


2.グラフをfcgiで動かすためのmunin設定ファイル変更
設定ファイルは/etc/munin/munin.conf

$ sudo emacs /etc/munin/munin.conf


基本的にはmunin 3分間インストール – CentOS6にmuninをインストールしnginxで表示する – グラフの動的生成もするよ!その2で紹介されている部分をいじればよいのだけれど、cgi-binのパスがちょっとおかしかったので変更。
CentOS6.6では/var/www/html/munin以下にmuninのページ表示本体、それとは別に/var/www/cgi-bin/以下にmunin-cgi-graphとmunin-cgi-htmlが生成されています。
のでそれも指定したほうが良かろうとのことで書き換え。

# If the automatic CGI url is wrong for your system override it cgiurl_graph
/var/www/cgi-bin/munin-cgi-graph


あとはコメント外す
#dbdir /var/lib/munin -> dbdir /var/lib/munin
#htmldir /var/www/html/munin -> htmldir /var/www/html/munin
#logdir /var/log/munin -> logdir /var/log/munin
#rundir /var/run/munin -> rundir /var/run/munin
cronからcgiに変更
graph_strategy cron -> graph_strategy cgi
html_strategy cron -> html_strategy cgi

ここまでやったらmunin-node、munin-fcgi-graph、munin-fcgi-html、nginxをそれぞれ起動or再起動。

$ sudo service munin-node restart
$ sudo service munin-fcgi-graph restart
$ sudo service munin-fcgi-html restart
$ sudo service nginx reload (or restart)



ブラウザからhttp://サーバーIP/html/munin にアクセスしてグラフが表示されていればおっけー。
Screenshot from 2015-02-19 11:56:28 でけた。

ここに辿り着くまでにグラフが表示されなくってNginxの方でaliasかけたり、munin.confの方でパス指定してどうこうって色々やったんだけど、基本的に同梱パッケージをちょっといじるだけってのが正解でした。デストリによってパス違ったりするから、うまく動かない時はmuninへのパスとか、fcgiのsockへのパスとか見直すといいと思います。
あと公式のチュートリアルも目を通しとくといいかも知れません。
Welcome to the Munin Guide

3.監視対象を追加するためのクライアント設定
今までの設定ではサーバーで自身を監視対象としています。他の管理対象サーバーも入れたいですね。
クライアント側ではmunin-nodeを入れて走らせておきます。
Raspberry Piでサーバリソースを監視する
Muninでサーバーのリソースを可視化しよう
今回追加したいのは外部のさくらVPS。
ちなみに今までmuninサーバーとして構築してたのはおうちサーバーのCentOS。

同一のネットワーク内だと簡単みたいですが、外部なのでmuninがsshで接続できるようにしよう。
外部サーバー(被監視側)

$ sudo yum install munin-node


設定ファイルでmuninサーバーのIPを許可。

$ sudo emacs /etc/munin/munin-node.conf

allow ^127\.0\.0\.1$
allow ^::1$


このへんにallow サーバーIP



muninサーバー側
sshの鍵ペアを作ってパス無しでログインできるようにする。しかもユーザーmunin。
ssh-keygenで鍵生成。すべて空Enter。

$ sudo -u munin ssh-keygen
$ sudo cat /var/lib/munin/.ssh/id_rsa.pub


/var/lib/muninがユーザーmuninのホームディレクトリになるとか。

もっかい外部サーバー側
muninユーザーのログインシェルをbashに変更、ホームディレクトリになる/var/lib/muninを作成、/var/lib/munin./ssh/以下にさっきcatしたid_rsa.pubをauthorized_keysとして保存。

$ sudo chsh -s /bin/bash munin
$ sudo install -d -m 755 -o munin -g munin /var/lib/munin
$ sudo -u munin -i
$ mkdir -p /var/lib/munin/.ssh
$ emacs /var/lib/munin/.ssh/authorized_keys ←ここにさっきのid_rsa.pubをコピペ。
$ chmod 700 /var/lib/munin/.ssh
$ chmod 600 /var/lib/munin/.ssh/authorized_keys



もっかいmuninサーバー側

$ sudo -u munin -i
$ ssh サーバーIP


でパス無しでログインできれば成功。

muninの設定ファイルに追加して監視したいサーバーのとこ追記。

$ sudo emacs /etc/munin/munin.conf


[localhost]
address 127.0.0.1
use_node_name yes

[sakura1]
address ssh://サーバーIP/bin/nc localhost 4949
use_node_name yes




これで動くはずなんだけど、実際sshでmuninユーザーがログインはできるんだけど/var/www/html/munin/以下に設定したサーバーのディレクトリができない。もしかしてfcgiうまく動いてなくてcgi-htmlが反映されてないのかなぁ?
と思って一回cronに戻してみたけど変わらなかった。うまく通信できてないっぽい。

関連記事
CentOS6.6+Nginx+muninでサーバー監視
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

CentOS6.6+Nginx+muninでサーバー監視

Sensuでサーバーのリソースを可視化しよう
面白そうだなーと思ったけどうまくインストールできなかった。
のでmunin。

CentOS6.6+Nginx。

参考
Muninでサーバーのリソースを可視化しよう
CentOS6.4でmuninをインストールすると、Transaction Check Error
Muninによるサーバ監視システムを構築する(CentOS 6.5)
munin 3分間インストール – CentOS6にmuninをインストールしnginxで表示する – グラフの動的生成もするよ!その2
nginx で サーバ監視ツール、munin を動かす

1.muninインストール
yumで一撃!!と思ったらトランザクションエラー。

$ sudo yum --enablerepo=epel -y install munin munin-node
Transaction Check Error:
file /usr/share/man/man3/XML::SAX::Base.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
file /usr/share/man/man3/XML::SAX::Exception.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch


CentOS6.4でmuninをインストールすると、Transaction Check Error
Munin version 2.0.6
perl-XML-SAX-0.96-7が足りなかったらしい。

$ sudo yum install perl-XML-SAX-0.96-7.el6.noarch
$ sudo yum --enablerepo=epel -y install munin munin-node


今度こそ一撃。(二撃?)

2.設定
/etc/nginx/conf.d/munin.conf と/etc/nginx/conf.d/munin.confで監視対象とかを設定。
でも今はとりあえず自分を監視する感じで動かすので設定必要なし。

3.Nginxの設定
Nginxですでにいくつか動いてるんですけど。
munin-nodeの方でNginxで動かすための設定追記。

$ sudo emacs /etc/munin/plugin-conf.d/munin-node

[nginx]
env.url http://localhost/nginx_status


Nginx自体の設定。
$ sudo emacs /etc/nginx/sites-available/virtual.conf

いつものようにsites-availableに設定ファイル書いて/sites-enabled/にリンクを貼ります。
$ sudo ln -s /etc/nginx/sites-available/virtual.conf /etc/nginx/sites-enabled/

このへんほぼ nginx で サーバ監視ツール、munin を動かす の丸パクリです。ありがとうございました。
ちょっと補足するとmuninはデフォルトで/var/www/html/munin以下にファイル群を作るので、Nginx的にはそこへのパスをかいてあげればおっけ。

4.サービススタート

$ sudo service munin-node start


ついでにさっきNginxの設定変更したのでNginxも再起動。

$ sudo service nginx restart
nginx: [warn] conflicting server name "_" on 0.0.0.0:80, ignored
nginx を停止中: [ OK ]
nginx を起動中: nginx: [warn] conflicting server name "_" on 0.0.0.0:80, ignored
[ OK ]


servername _;がかぶってるけど無視するよ、ってメッセージがが。これ何とかしたいなぁ。スマートじゃないもんなぁ。
ちょっと時間たってhttp://サーバーIP/muninにアクセスすると・・・404 Not Found。
http://サーバーIP/html/muninにアクセスすると・・・
Screenshot from 2015-02-16 14:04:19 来ましたね。
でも認証も効いてないしおっかしーなー。
まぁあとで考える感じで先行きましょー。

あとはfcgi使って動的にグラフ表示するのと監視サーバーを追加する感じですかね。
fcgi使ったらグラフが読み込めなくて404になってるからパスが違うヨーな感じで解決できてないのでこれまたそのうち。
munin 3分間インストール – CentOS6にmuninをインストールしnginxで表示する – グラフの動的生成もするよ!その2
muninでグラフをFCGIで動的に生成する
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

tmin

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。