このブログを検索

2012-07-22

WordPressインストールしてみた

いままで個人的にMovableTypeを使っていたけど
とにかく重くてその上再構築が面倒で・・・ということで
WordPressに変更してみた。

結果、なかなか良かったのでインストールのポイントをメモする。
まず、インストール先がxreaサーバー(有料)で色々詰まった。
どうやらxreaはphpの動作モードがセーフモードというモードらしく、なかなかうまく動かないらしい。
本来ならhtaccessを自動更新してくれたりするらしいができなかった。
その辺を忘れないようにメモできたらと思う。
# 思い出し書きや前後関係の入れ替えによって必ずしもこの通りではないかもしれない
# パーミッションの設定は普通じゃない可能性があるので識者の方がいたらご指摘願いたいところ・・・

まずWPのインストール自体は簡単だった。

最初にサーバーの管理画面からDBを作成しておく。ここではMySQLで作成し、bloggerという名前とする。
注意すること
・作成の際にUNICODEを選択する
・今後メンテする再はphpmyadminを使用することになる
phpmyadminはDB管理画面からインストール可能
そのままでは入れなかったのでネットで拾ってきた情報を試してみた。
/log/phpmyadmin/config.inc.phpをテキストエディタで編集して
コンフィグ記載が並んでいるところに↓を追記

$cfg['PmaAbsoluteUri'] = 'http://●●/log/phpmyadmin/';

で、ログインするには最初にBASIC認証でログイン情報はログ閲覧用アカウント。phpmyadminのインストールボタン近くの記載の通り。
次にphpmyadminのログイン画面があり、そこではDBのユーザー名とパスワードを使用する。

http://ja.wordpress.org/
から日本語版とやらをダウンロードしてきて解凍する。


wp-config.phpをテキストエディタで編集して
DB_NAME、DB_USER、D_PASSWORDを記述。
table_prefixを別のものに変更、ここでは'blogspot_'とする。
「* 認証用ユニークキー」とかかれたところの8行を編集する。
編集内容は
https://api.wordpress.org/secret-key/1.1/salt/
にアクセスして表示された値をそのままコピペする。
このサイトはアクセス毎にユニークな値を表示するようになっているようだ。
このユニークキーがなんなのかはよくわかってないが、不正アクセス防止に役立つらしい。

サーバーの入れたいフォルダにアップロード。
ここでは仮に /wordpress/以下に入れたものとする。
ルートであるhttp://●●●.com/などで繋がるようにはあとでする。

パーミッションをある程度うまいことやる。
正直パーミッションの正しい設定方法はわかっていないが試行錯誤したところ以下のような感じになった。
参考:http://codex.wordpress.org/Hardening_WordPress

【ファイル】
特別記述の無いファイル 644


【ディレクトリ】
/wordpress/ 705
/wordpress/.htaccess 604 ※無いので作った
/wordpress/index.php 604
/wordpress/wp-admin/ 705
/wordpress/wp-admin/以下 705
/wordpress/wp-content/ 705
/wordpress/wp-content/cache/ 705
/wordpress/wp-content/uploads/ 755
/wordpress/wp-content/以下それ以外 705
/wordpress/wp-includes/ 705
/wordpress/wp-includes/以下 705
特にuploadsは権限がある程度ないと画像のアップロードができないので注意。
あと、この設定だとpluginの手動編集とかはできないみたいなので、テキストエディタで編集する必要がある。

.htaccessファイルは予め

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

というのを記述しておく。
#コメントはこう書いておくと、WPが自動更新する範囲を限定できるらしい
中身は設定項目のパーマリンクという箇所を更新すると自動更新される。
もしパーミッションやセーフモードの関係で更新できないときは、この記述のコピペ用のメッセージが表示されるので更新すること。

さらに.htaccessには次の記述を入れておく。


# BEGIN WordPress Remedy for PHP SafeMode
#AddHandler application/x-httpd-phpcgi .php

<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<files update.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<files plugins.php>
AddHandler application/x-httpd-phpcgi .php
</files>
# END WordPress Remedy for PHP SafeMode


PHPのセーフモードというのがONになっていると、PHPは強い権限を持つアクションを起こせないらしい。それによってディレクトリ作成やファイル編集ができなかったり。そこでこの既述で強い権限が必要なPHPのみ権限を持たせることができる。CGIモードというので動作するようになるらしいが、CGIモードだと動作が重くなるらしいので必要なファイルにのみ権限を与えている。
今後、プラグインが増えたりするとこの問題にぶつかることがあり、その場合は関連するファイルを追記する必要がある。もしよくわからなくて重くてもいいって場合は、コメントアウトしてあるAddHandlerのみ記載しておけば、全てのPHPを対象にCGIモードで動作させることができる。

で、httpから/wordpress/wp-admin/install.phpを実行することでインストールが可能。
インストールしたらhttp://●●/wordpress/wp-admin/から管理画面にアクセスできる。
初期設定やその他設定項目を適当に変更する。

ここでトップページのアドレスをサーバーのルートにする
一般設定
「WordPress アドレス (URL)」にhttp://●●/wordpress
「サイトアドレス (URL)」にhttp://●●
を入れる。
/wordpress/index.phpを/にコピーする。

SSL化したかったがエラーが出るようになってしまいだめだった。

テーマにSimploBlackを入れたところ、右のサイドバーにガジェットを登録してもガジェットのタイトルが表示されなくなってしまった。どうやらこのテーマで使用しているcufonというライブラリが日本語に対応していないようだ。
というわけで外観のテーマ編集からヘッダーを選択し
src="<?php bloginfo('template_directory'); ?>/js/cufon-yui.js"という行をコメントアウトする

<!-- <script language="JavaScript" type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/cufon-yui.js"></script> -->


管理画面にBASIC認証をかける
本当ならログイン画面のところにかけたかったがうまくいかなかったのでwp-adminフォルダ以下にかけることにした
/wp-admin/.htaccessを作成し、パーミッション604とする。
中には


AuthUserFile /virtual/アカウント名/public_html/wordpress/wp-admin/.htpasswd
AuthType Basic
AuthName “restricted”
Order Deny,Allow
Deny from all
Require valid-user
Satisfy any


と記述し、/wp-admin/.htpasswdを作成、パーミッション604とする。
こちらの中にはhttp://www.htaccesstools.com/htpasswd-generator/で作成した文字列を一行記述する。

特定ファイルへの不必要なアクセスを拒絶する。.htaccessファイルに次の記述をする。

order allow,deny
allow from all
<FilesMatch "^\.ht">
deny from all
</FilesMatch>
<Files wp-config.php>
deny from all
</Files>
# allowには自分のグローバルIPのレンジを指定する
<Files wp-login.php>
order deny,allow
deny from all
allow from ●.●.●.●/●
</Files>

●には自分のプロバイダなどのグローバルIPのレンジを指定する。
whoisサイトなんかで自分の今のグローバルIPを検索すれば、その会社のレンジが表示されるのでだいたい把握可能。もしそれ以外になったときはアクセスできないので、その時に設定を追加すればよさそう。これで管理画面には少なくとも自分と同じプロバイダの人しかアクセスできなくてだいぶ制限できるはず。(よくわかっていません)



クローラーボットに対して不要なファイルを拒絶する。但しそれで退くかは向こうの判断なので気持ち程度。
/robots.txtを作成しパーミッション644とする。
中には


User-agent: *
Disallow: /wordpress/
#Disallow: /wordpress/index.php
#Disallow: /wordpress/xmlrpc.php
#Disallow: /wordpress/wp-*
Allow: /wordpress/wp-content/online
Allow: /wordpress/wp-content/uploads

#Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
#Disallow: /*.css$
Disallow: /*.gz$
Disallow: /*.wmv$
Disallow: /*.cgi$
Disallow: /*.xhtml$
User-agent: ia_archiver
Disallow: /

User-agent: duggmirror
Disallow: /
#Sitemap: http://●●/sitemap.xml.gz


のように記述する。onlineフォルダは未確認だけど一応残す。
Sitemap行は今は必要ないけど一応残す。

ia_archiverはインターネットアーカイブで、結構うざったいので拒絶。

でもって.htaccessの方でもクローラーボットの指定拒絶をする。
まず先程記述したorder allow,deny/allow from allより下に


deny from env=DenyUA
deny from env=DenyADDR


を記述する。さらに、order allow,denyより上に


#検索サイト
#SetEnvIf User-Agent "Googlebot" DenyUA
SetEnvIf User-Agent "Mozilla/2.0 \(compatible; Ask Jeeves\)" DenyUA
#SetEnvIf User-Agent "Hatena Antenna" DenyUA
SetEnvIf User-Agent "ia_archiver" DenyUA
SetEnvIf User-Agent "ArchitextSpider" DenyUA
SetEnvIf User-Agent "Mozilla/3.0 \(Slurp.so/" DenyUA
SetEnvIf User-Agent "Mercator-2.0" DenyUA
SetEnvIf User-Agent "Mozilla/4.0 \(compatible; MSIE 5.0; Windows NT; Girafabot;" DenyUA
SetEnvIf User-Agent "Charlotte" DenyUA
SetEnvIf User-Agent "QuepasaCreep" DenyUA
#SetEnvIf User-Agent "MSNBOT" DenyUA
#研究
SetEnvIf User-Agent "DiaGem" DenyUA
SetEnvIf User-Agent "SlySearch" DenyUA
SetEnvIf User-Agent "Steeler" DenyUA
SetEnvIf User-Agent "OpenTextSiteCrawler" DenyUA
SetEnvIf User-Agent "TurnitinBot" DenyUA
# E-Mail Collector
SetEnvIf User-Agent "Indy Library" DenyUA
SetEnvIf User-Agent "sitecheck.internetseer.com" DenyUA
SetEnvIf User-Agent "Internet Explore 5\.x" DenyUA
SetEnvIf User-Agent "Mail Sweeper" DenyUA
SetEnvIf User-Agent "\(compatible; MSIE 5\.0; Windows NT; DigExt; DTS Agent" DenyUA
SetEnvIf User-Agent "Microsoft Internet Explorer/4\.40\.426 (Windows 95)" DenyUA
SetEnvIf User-Agent "^Zeus 2" DenyUA
SetEnvIf User-Agent "hhjhj@yahoo\.com" DenyUA
SetEnvIf User-Agent "Microsoft URL Control" DenyUA
SetEnvIf User-Agent "^MailPickUp/" DenyUA
# NAVER
SetEnvIf User-Agent "^NABOT" DenyUA
SetEnvIf User-Agent "^nabot" DenyUA
SetEnvIf User-Agent "dloader\(NaverRobot\)" DenyUA
SetEnvIf User-Agent "user-agent=Mozilla/4\.0 \(compatible; MSIE 5.5; Windows 98; DigExt\)" DenyUA
SetEnvIf User-Agent "^GoogleBot$" DenyUA
# 絨毯爆撃系
SetEnvIf User-Agent "Openbot/" DenyUA
SetEnvIf User-Agent "^Gaisbot" DenyUA
SetEnvIf User-Agent "FAST-WebCrawler" DenyUA
# その他
SetEnvIf User-Agent "Netprospector JavaCrawler" DenyUA
SetEnvIf User-Agent "Mozilla/3\.0 \(compatible\)" DenyUA
SetEnvIf User-Agent "Mozilla/3\.01 \(compatible;\)" DenyUA
SetEnvIf User-Agent "MSProxy/2\.0" DenyUA
SetEnvIf User-Agent "HyperRobot" DenyUA
SetEnvIf User-Agent "larbin@unspecified\.mail" DenyUA
SetEnvIf User-Agent "mogimogi/" DenyUA
SetEnvIf User-Agent "bumblebee" DenyUA
SetEnvIf User-Agent "^moget/" DenyUA
SetEnvIf User-Agent "^Scooter/" DenyUA
SetEnvIf User-Agent "cosmos" DenyUA
SetEnvIf User-Agent "larbin" DenyUA
SetEnvIf User-Agent "W3CRobot/" DenyUA
SetEnvIf User-Agent "Java\(TM\) 2 Runtime Environment, Standard Edition" DenyUA
SetEnvIF User-Agent "Java/1.4.1" DenyUA
SetEnvIf User-Agent "Mozilla/4\.0 \(compatible; MSIE 6\.0; Win32\)" DenyUA
SetEnvIf User-Agent "ZyBorg/1\.0" DenyUA
SetEnvIf User-Agent "InternetLinkAgent" DenyUA
SetEnvIf User-Agent "PerMan Surfer" DenyUA
SetEnvIf User-Agent "NPBot" DenyUA
# 検閲系ソフト
SetEnvIf REMOTE_ADDR "61.115.195.179" DenyADDR
SetEnvIf REMOTE_ADDR "61.115.195.180" DenyADDR
SetEnvIf REMOTE_ADDR "61.115.195.181" DenyADDR
SetEnvIf REMOTE_ADDR "61.115.195.182" DenyADDR
# NAVER
SetEnvIf REMOTE_ADDR "202.234.172.[0-9]$"       DenyADDR
SetEnvIf REMOTE_ADDR "202.234.172.[1-9][0-9]$"  DenyADDR
SetEnvIf REMOTE_ADDR "202.234.172.1[01][0-9]$"  DenyADDR
SetEnvIf REMOTE_ADDR "202.234.172.12[0-7]$"     DenyADDR
# 偽装UAでDDoSしてくるWebContentInternational
SetEnvIf REMOTE_ADDR "65.102.17." DenyADDR
SetEnvIf REMOTE_ADDR "65.102.12." DenyADDR
SetEnvIf REMOTE_ADDR "65.102.23." DenyADDR
# そのた。
SetEnvIf REMOTE_ADDR "133.9.62.173"     DenyADDR
SetEnvIf REMOTE_ADDR "61.78.61.193"   DenyADDR
SetEnvIf REMOTE_ADDR "202.108.221.97"   DenyADDR
SetEnvIf REMOTE_ADDR "203.141.154.5"    DenyADDR
SetEnvIf REMOTE_ADDR "64.140.48.27"     DenyADDR
SetEnvIf REMOTE_ADDR "219.96.221.135"   DenyADDR
SetEnvIf REMOTE_ADDR "216.123.202.196"  DenyADDR
SetEnvIf REMOTE_ADDR "202.220.171.157" DenyADDR
SetEnvIf REMOTE_ADDR "12.148.209.196"   DenyADDR
SetEnvIf REMOTE_ADDR "218.43.21.223" DenyUA
SetEnvIf REMOTE_ADDR "61.42.24." DenyADDR
SetEnvIf REMOTE_ADDR "63.148.99.233"    DenyADDR
SetEnvIf REMOTE_ADDR "63.148.99.232"    DenyADDR
SetEnvIf REMOTE_ADDR "^68.33.19[2-9]."  DenyADDR
SetEnvIf REMOTE_ADDR "202.214.69.189"   DenyADDR
SetEnvIf REMOTE_ADDR "219.184.44.19"    DenyADDR
SetEnvIf REMOTE_ADDR "66.108.156.74"    DenyADDR
SetEnvIf REMOTE_ADDR "195.115.172.39"   DenyADDR


を記述する。これで不要なクローラーボットを強制的に拒絶できるはず。GoogleとHatenaは通すようにしている。
但しこの一覧は情報が古いので最新版を見つけて更新したほうがいいかもしれない。
これは2chから拾ってきた一覧。

加えて海外のアクセスを制限する。
今回は中国韓国台湾からのアクセスを禁止とする。
http://akionweb.com/myobjects/adl/apache/
のサイトからhtaccessの記述をコピーしてきて
先程と同じようにorder allow,deny/allow from allより下に記述する。
何千行とあるのでここには記述しない。


アイキャッチ画像表示について。
アイキャッチというのは、サイトのヘッダー部分に表示する画像のことで、WPではこれを投稿記事毎に変更することができる。
ただ、今回使用したSimploBlackでは対応していなかったため、テーマを編集する必要があった。
テーマの編集→ヘッダーを開き

<!-- END HEADER -->

<!-- BEGIN TOP MENU -->
の間にタグを記述する。

<!-- END HEADER -->
<div style="margin-left:auto;margin-right:auto;width:10em;border:red;">
<?php echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' ); ?>
</div>
<!-- BEGIN TOP MENU -->
(2012/7/24追記)
ロボットタグについて
htmlのheadセクションにロボット用の命令を記述することで、「インデックス張らないで」「ページ内のリンクを辿らないで」「キャッシュしないで」などとお願いすることができる。
今回はキャッシュしないようにお願いする。

<meta name="robots" content="noarchive">

以上でWordPressの初期設定を完了とする。
実際にはちょっと設定しては色々動作確認したほうが良い。記事が投稿できるか、管理画面にログインできるか、画像がアップロードできるか、テーマが編集できるか、プラグインのインストールと削除ができるか、など。
特に、プラグインの削除時にFTPパスワードが求められる場合は権限が不足している証拠なのでよく見なおしたほうがメンテが楽でよい。


参考:
http://wpdocs.sourceforge.jp/%E3%82%BB%E3%83%BC%E3%83%95%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AB%E3%82%88%E3%82%8B%E5%88%B6%E9%99%90%E3%81%A8%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95#XREA.E3.83.BBCORESERVER.JP_.E3.81.AB.E3.81.A6_CGI.E3.83.A2.E3.83.BC.E3.83.89.E3.81.A7.E5.8B.95.E3.81.8B.E3.81.99.E5.A0.B4.E5.90.88.EF.BC.88.E3.81.BE.E3.81.A8.E3.82.81.EF.BC.89
http://csspro.digitalskill.jp/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%97%E3%83%AC%E3%82%B9/wordpress%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E5%BC%B7%E5%8C%96/
http://etwas.wolfish.org/blog/p2009031802/ http://www.df-cue.com/wp/2009/06/20/ktai-entry/
http://kilin.clas.kitasato-u.ac.jp/howto/wordpress.html
http://www.amamoba.com/wordpress/twitter-tools2.html
http://plime.s329.xrea.com/plime/tech/2010/10/11/167/

0 件のコメント:

コメントを投稿