20 Raspberry Piに WordPress最新版(3.9)を導入

WEBサーバーの構築が終わったのでRaspberry Piにブログサーバー(WordPress)を導入します。
このブログが動いているのがまさにこの記事のWordPress君です。
せっかくなので WordPress最新版(3.9)を導入 してみたいと思います。(5/10現在3.9.1がリリースされてます)

一番初めにWordPressをインストールしたとき、設定をいじったら文字化けしたりプラグインが使えなくなったり、最後はサイトが真っ白になってしまったりと大変でした。
(この時はパーミッションの設定をいい加減に設定して自動アップデートでカタストロフィーというのが実情。)
今回はそうならないように比較的慎重に設定してます。

さて、最新の日本語バージョン(3.9)の要件を確認すると
PHPバージョン:5.2.4以上
MySQLバージョン:5.0以上
とのことなので、Raspberry Piにも導入できそうです。
apt-getで提供されているWordPressは旧バージョンなので今回は手動でインストールします。

今回の流れ
1.WordPressインストール
2.MySQLデータベース作成
3.WordPressの設定
4.Apacheの設定
5.WordPress初期設定画面へアクセスして設定

参考URL
WordPressディレクトリのパーミッションをセキュアに
上記サイトが参考してる本家のsecurity記事
CentOSで自宅サーバー
WordPressフォーラム
WordPress スタートガイド

スポンサーリンク
レクタングル(大)広告

【1.WordPressインストール】

所有権とパーミッションの設定がきもになる。
方針としては、
・セキュリティを高める為に基本は一般ユーザーに所有権を与えてWEBサーバーの書き込みは必要なファイルに限定する。
・上記必要なファイルは公式ページの設定指針に従う。
(http://codex.wordpress.org/Hardening_WordPress#File_Permissions)
・プラグインやテーマのインストールやプラグインの動作に不具合が生じることがあるのでその場合は都度対応する。

WordPressをインストールします。
WEBサーバーのドキュメントルートへ移動
cd /var/www/yourdomain
wget http://ja.wordpress.org/latest-ja.zip

WordPressを解凍します。
unzip latest-ja.zip

この状態でwordpress/ディレクトリが作成されて、所有者・グループは作業ユーザー、パーミッションは644(所有者は書き込み可、他は読み取りのみ)になっているはず。(ディレクトリは755)

wordpress/ディレクトリ内に空の.htaccess作成
vi wordpress/.htaccess
なんも書かずに保存終了

始めにwordpress/以下のパーミッションとグループをまとめて変更します。
ファイルは640、ディレクトリは750、グループはwww-dataにする。
find ./wordpress/ -type f -print | xargs chmod 640
find ./wordpress/ -type d -print | xargs chmod 750
chown -R username:www-data wordpress/

続いて必要なファイルとディレクトリにApacheによる書き込みを許可します。

.htaccess
パーマネントリンク設定などで自動編集させることがある。
chmod 660 wordpress/.htaccess

wp-content/
wordpressからいじられる。
chmod 770 wordpress/wp-content/

wp-content/themes/
wordpressのテーマエディタでいじれるようにするには全ファイルがApacheから書き込みできる必要がある。使う人は以下実行(私はやってないので検証できてないです)
find ./wordpress/wp-content/themes -type f -print | xargs chmod 660
find ./wordpress/wp-content/themes -type d -print | xargs chmod 770
※新しいテーマを入れたときは所有権・グループとパーミッションの設定を忘れない。

wp-content/plugins/
プラグインが自分のフォルダ内をいじることがある。
find ./wordpress/wp-content/plugins -type f -print | xargs chmod 660
find ./wordpress/wp-content/plugins -type d -print | xargs chmod 770
※プラグインをアップロードするときもパーミッションとグループ設定を忘れない。

ダウンロードしたZIPファイルを削除してホームディレクトリへ戻ります。
rm latest-ja.zip
cd

【2.MySQLデータベース作成】

WordPress用データベースを作成します。
このデータベースの中に記事の情報などが格納されます。

mysql -u root -p
Enter password: ←MySQLのルートパス入力
Welcome to the MySQL monitor. Commands end with ; or \g.
(中略)

mysql> create database dbname; ←wordpress用データベース作成。dbname部分は好きな名前
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on dbname.* to dbuser@localhost identified by ‘password’;
Query OK, 0 rows affected (0.01 sec)
※データベースのユーザー作成
dbnameはwordpress用データベース名
dbuserはこのデータベース用のユーザー名
passwordはこのユーザーのパスワード
localhostはホスト名。デフォはこのまま

mysql> flush privileges; ←権限情報の更新
Query OK, 0 rows affected (0.01 sec)

mysql> exit ←MySQLからログアウト
Bye

【3.WordPressの設定】

WEBサーバーのルートディレクトリへ移動
cd /var/www/yourdomain

デフォルト設定ファイルをコピーして設定ファイルを作成します。
cp wordpress/wp-config-sample.php wordpress/wp-config.php
chown username:www-data wordpress/wp-config.php

設定ファイルを編集
vi wordpress/wp-config.php

——— 編集内容 ———–
22行目付近から データベースの設定を先の設定に合わせて記載

// ** MySQL 設定 – この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define(‘DB_NAME’, ‘dbname’); ←データベース名

/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘dbuser’); ←データベースのユーザー名

/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘password’); ←データベースユーザーのパスワード

/** MySQL のホスト名 */
define(‘DB_HOST’, ‘localhost’); ←ホスト名。

50行目付近から 認証用ユニークキーの設定。
キーはhttps://api.wordpress.org/secret-key/1.1/salt/で生成できる。
(上記サイトを開いたら2・3回リロードしてからキーをコピーし、再度2・3回リロードしてから閉じる。)
/**#@+
* 認証用ユニークキー
*
* それぞれを異なるユニーク (一意) な文字列に変更してください。
* {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
* 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユー
ザーを強制的に再ログインさせることになります。
*
* @since 2.6.0
*/
ここから下8行に生成したキーをコピペ。元々あった以下の8行は削除。
define(‘AUTH_KEY’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);
define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);
define(‘NONCE_KEY’, ‘put your unique phrase here’);
define(‘AUTH_SALT’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_SALT’, ‘put your unique phrase here’);
define(‘LOGGED_IN_SALT’, ‘put your unique phrase here’);
define(‘NONCE_SALT’, ‘put your unique phrase here’);

/**#@-*/
——— ここまで ———–

【4.Apacheの設定】

新しいファイルを作成して設定を記載
cd /etc/apache2/sites-available/
sudo vi wordpress

/blogというディレクトリでWordPressフォルダへアクセスさせる場合の設定。
ルートディレクトリの設定は個人の設定に合わせて読み換えてください。
—— 以下記入 ——–
##Alias /blog /var/www/yourdomain/wordpress
Alias /blog /var/www/yourdomain/wordpress
<Directory /var/www/yourdomain/wordpress>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/yourdomain/wordpress/wp-content>
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
——— ここまで ——
保存して終了

モジュールの読み込み
これを入れないと記事が表示されない。
sudo a2enmod rewrite

サイト設定の有効化
sudo a2ensite wordpress

アパッチ再起動
sudo service apache2 restart

【5.WordPress初期設定画面へアクセスして設定】

アクセス前の事前準備
今までLAN内から自分のWEBページへアクセスするのにローカルIPアドレスを使っていましたが、WordPressの設定をするにあたって設定項目が増えて面倒なので独自ドメインでLAN内からもアクセスできるようにしておきます。

システムファイルにHOSTSというファイルがあって
これを編集することでドメイン名をローカルIPに読み換えるようOSに伝えることができます。

まず、TeraPad等のテキストエディタを管理者権限で実行します。
デスクトップアイコンを右クリックして出てくるメニューから「管理者として実行」を選択します。

20-01管理者権限でテキストエディタを実行

警告が出るけどOKで進みます。
TeraPadが立ち上がったらファイル→開くを選択。

システムファイルなので普通には見えません。
ファイル名のところに以下のファイルの場所を直接指定します。
c:\windows\system32\drivers\etc\hosts
20-02 HOSTSファイルのオープン

ファイルが開いたら最後に以下の1行を追加します。
xxx.xxx.xxx.xxx yourdomain.com
(xxxの部分にローカルIPアドレス、yourdomain.comのところに自分の独自ドメイン入れます。)

書式は”IPアドレス[スペース]ドメイン名”です。

これでブラウザで”http://yourdomain.com/”にアクセスしようとすると
内部的に”http://xxx.xxx.xxx.xxx/”に変換されてアクセスされるので
ルータの制限を回避してドメイン名でアクセスできるようになります。

それではWordPressのページへアクセスします。
http://yourdomain.com/blog/

サイトのタイトル、ユーザー名、パスワード、メールアドレスを入力してインストールボタン
一応これでインストールは終了です。

WordPressの設定ページの設定→一般からWordPressアドレスとサイトアドレスを変更しておきます。

WordPressのプラグインやテーマの更新、アップデート周りに修正が必要になると思いますが、とりあえず今回は終了です。

2014年4月30日作成
2014年5月10日公開

スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル(大)広告