Ubuntu 12.04 で WordPressを日記帳に

とにかく大げさ。大げさすぎる。だけど・・・

娘が毎日作文を書いている。学校の宿題だ。面倒なようでいて、でもこれとっても良いことだと思っている。書く行為は練習し続けないと表現力が上がらない。そう、このブログがうまく書けないのもそれが理由。



ならば楽しく書ける環境を作って提供し、その気になってもらって書いてもらい、最終的に良い感じな文章力が育ったらいいな。

なんて思い立った。


こんな感じの運用を考えた。

  • サクサク書けて、写真なんかも簡単に文中に混ぜ込みたい。
  • 家庭内+親戚程度が閲覧できればいい。全世界に日記を配信する気はない。
  • 記事自体は外出先でも書きたい。

サクサク書けるという観点、iOSなデバイスを持っていることを考えた時に、Apache Roller、WordPressと見て、対応アプリを考慮に入れてWordPressってを使おうと思った。

公開先を限定するにはそれを支援するプラグインがあるらしいのでこれを使えばいい。

そうすると、ポートを外部に公開してもよさそうだ。

以上のことから、WordPressで環境を作ることにした。

★今回の手順では最新ではないバージョンをインストールしていることに注意。最新バージョンをインストールする場合には他のページを参照されたし。


WordPressには「WordPress 日本語ローカルサイト」があり、そこで日本語環境用に色々といいことをしてくれているパッケージが提供されている。
提供されているのだが、更新は手動になるのかなー、と考えると、Ubuntuのリポジトリからインストールして環境を整えたほうがいいんじゃないかと考えた(本当はどうなんだかわからない。思い込みで考えている)。だって、 apt-get update とか簡単なんだもん。

ということで、一般的じゃなさそうな手順で環境を構築することにした。すごく情報が少ない。
で、やってみると、ちょっと作業順序を間違えると文字化けが発生したりして案外デリケート。イバラの道だなこれ。

  1. パッケージのインストール
  2. apache2の公開サイト整理
  3. WordPressのインストール
  4. WordPressのマルチサイト設定
  5. 日本語化対応プラグインの導入
  6. コマゴマした設定と家族用ブログサイト作成
  7. 公開先限定サイト化

という感じで作業を進めることにする。


■パッケージのインストール

まずは、パッケージをインストールする。

$ sudo apt-get install wordpress

次に、mysqlの設定を行う。次のスクリプトでmysqlに wordpress というデーターベースが作られ、config-hogeserver.hogeddns.jp.phpという設定ファイルが作られる。

$ sudo bash /usr/share/doc/wordpress/examples/setup-mysql -n wordpress hogeserver.hogeddns.jp
PING hogeserver.hogeddns.jp (172.16.nnn.nnn) 56(84) bytes of data.
64 bytes from hogeserver.hogeddns.jp (172.16.nnn.nnn): icmp_req=1 ttl=64 time=0.020 ms

--- hogeserver.hogeddns.jp ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.020/0.020/0.020/0.000 ms
/etc/wordpress/config-hogeserver.hogeddns.jp.php written
Trying to create upload directory: /srv/www/wp-uploads/hogeserver.hogeddns.jp
Setting up permissions
Goto http://hogeserver.hogeddns.jp to setup WordPress


■apache2の公開サイト整理

次に、apache2 に WordPress を登録する。WordPress をポータルっぽくすることを考えたので、http://hogeserver.hogeddns.jp というURLでアクセスできる環境を整えてみることにする。
SSLにしようとすると面倒なようなので割り切り。

これまでに Zarafa、mailman の環境を構築しているが、mailmanで / などベースとなる情報を設定していたので、ベースを WordPress に変更して整理する。

/etc/apache2/sites-available/maincontents
<VirtualHost *:80>
        ServerAdmin webmaster@hogeserver.hogeddns.jp
        ServerName  hogeserver.hogeddns.jp

        #--------------------------------------------------------------
        # サーバーのデフォルトページを WordPress にする
        #--------------------------------------------------------------
        DocumentRoot /usr/share/wordpress

#       <Directory />
#               Options FollowSymLinks
#               AllowOverride None
#       </Directory>

        <Directory /usr/share/wordpress>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        #--------------------------------------------------------------
        # メーリングリストも登録する
        #--------------------------------------------------------------
        # mailman の基本機能部
        ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
        <Directory /usr/lib/cgi-bin/mailman/>
                AllowOverride None
                Options ExecCGI
                AddHandler cgi-script .cgi
                Order deny,allow
                deny  from all
                Allow from 172.16.0.0/16
        </Directory>

        # mailman のアーカイバ部
        Alias /pipermail/ /var/lib/mailman/archives/public/
        <Directory /var/lib/mailman/archives/public/>
                Options FollowSymlinks
                AllowOverride None
                Order deny,allow
                deny  from all
                Allow from 172.16.0.0/16
        </Directory>

        # mailman のロゴマーク
        Alias /images/mailman/ /usr/share/images/mailman/
        <Directory /usr/share/images/mailman/>
                AllowOverride None
                Order deny,allow
                deny  from all
                Allow from 172.16.0.0/16
        </Directory>

        # 以降、mailmanのマニュアル類。
        Alias /mailman-admin /usr/share/doc/mailman/mailman-admin
        <Directory /usr/share/doc/mailman/mailman-admin>
                Options Indexes FollowSymLinks
                AllowOverride None
                Order deny,allow
                deny  from all
                Allow from 172.16.0.0/16
        </Directory>

        Alias /mailman-member /usr/share/doc/mailman/mailman-member
        <Directory /usr/share/doc/mailman/mailman-member>
                Options Indexes FollowSymLinks
                AllowOverride None
                Order deny,allow
                deny  from all
                Allow from 172.16.0.0/16
        </Directory>

        Alias /mailman-install /usr/share/doc/mailman/mailman-install
        <Directory /usr/share/doc/mailman/mailman-install>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order deny,allow
                deny  from all
                Allow from 172.16.0.0/16
        </Directory>

        Alias /mailman-member-es /usr/share/doc/mailman/mailman-member-es
        <Directory /usr/share/doc/mailman/mailman-member-es>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order deny,allow
                deny  from all
                Allow from 172.16.0.0/16
        </Directory>

</VirtualHost>

Zarafaについては、とりあえずアクセス制限のみ施しておく。いずれSSLに移行していこう。

/etc/apache2/sites-enable/zarafa-webaccess
#    Order allow,deny
#    Allow from all
    Order deny,allow
    deny from all
    Allow from 172.16.0.0/16

/etc/apache2/sites-enable/zarafa-webaccess
webaccessと同様の修正

mailmanを無効化し、maincontentsを有効化。

$ sudo a2dissite mailman
$ sudo a2ensite maincontents
$ sudo service apache2 reload

ついでに favicon.ico もコピーしておく。

$ sudo cp -a /var/www/favicon.ico /usr/share/wordpress/

これで http://hogeserver.hogeddns.jp にアクセスすると WordPress のインストール画面になるはず。It Works! ページが表示されたりもしたが、[Ctrl]+[F5]などでページを読み直せばキャッシュが消えてちゃんと表示された。


■WordPressのインストール

WordPressをインストールしていく。ブラウザの操作だし、ここだけ見ると超簡単。

まず、ブラウザで http;//hogeserver.hogeddns.jp にアクセスする。そうするとインストール画面が表示される。

  • Site Title(サイトのタイトル):
    後からでも変えられるらしい。ここでは 「ほげ」 とした。
  • Username(ユーザー名):
    最初のブログユーザーで管理者のユーザー名を入れる。ここでは hogeuser とした。
  • Password, twice(パスワード):
    最初のブログユーザーのパスワードを2回入れる。
  • Your E-mail(メールアドレス):
    最初のブログユーザーのメールアドレスを入れる。ここでは hogeuser@hogeserver.hogeddns.jp とした。
  • Privacy(プライバシー):
    他所様から検索できなくていいのでチェックをオフにした。積極的に見せたいブログならばチェックをオンにしておくべきだろう。

以上を設定して WordPressをインストール ボタンをクリックする。

これでインストールが完了し Success!(成功しました!) と表示される。

ログイン ボタンを押して設定を進める。あら、バージョンは 3.3.1 だ。最新は 3.5.2 だったりするのでちょっと古そう。・・・まぁ、Ubuntuがセキュリティアップデートをしていないことだし大丈夫かな、と割り切り。
ただ、日本語版をインストールするのが普通らしくてとにかく情報が少ない気がする・・・。

★次のマルチサイト設定を終えるまで日本語化はしないほうが無難。文字化けが起きる、っていうか起きた・・・。


■WordPressのマルチサイト設定

まず、マルチサイトに変更していく。プラグインが動いているとマルチサイトに変更できないのだ。

次にブラウザでサイト管理にログインして Settings(設定) を開き、

  • General(一般) → Timezone(タイムゾーン):
    UTC+9 に設定して Save Changes(変更を保存) ボタンをクリックする。
  • Reading(表示設定) → RSS feed language:
    en から ja に設定して Changes(変更を保存) ボタンをクリックする。

を実施。

そして、マルチサイトへの変更を行う。Tools(ツール)を開き、

  • Network Setup(ネットワークの設定) → ネットワーク内のサイトアドレス:
    今回は サブディレクトリ を選択。
  • → ネットワークの詳細:
    サイト名は後から変えられるはずなので、適当に。
    Admin E-mail Address には webmaster@hogeserver.hogeddns.jp を設定。

として Install(インストール) ボタンをクリックする。

そうすると、画面上に設定ファイルの変更方法が表示されるので、これをそのまま適用する。
具体的には・・・

/etc/wordpress/config-hogeserver.hogeddns.jp.php
<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'QwD0V3Hv');
define('DB_HOST', 'localhost');
define('SECRET_KEY', 'Brjjg6WYGpypXkUY6sfQ4qyS8CzWHn6OFmNuHX2MUl');

#This will disable the update notification.
define('WP_CORE_UPDATE', false);

$table_prefix  = 'wp_';
$server = DB_HOST;
$loginsql = DB_USER;
$passsql = DB_PASSWORD;
#$base = DB_NAME;
$upload_path = "/srv/www/wp-uploads/hogeserver.hogeddns.jp";
$upload_url_path = "http://hogeserver.hogeddns.jp/wp-uploads";

define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'hogeserver.hogeddns.jp' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

define( 'AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'SECURE_AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'LOGGED_IN_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'NONCE_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'AUTH_SALT', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'SECURE_AUTH_SALT', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'LOGGED_IN_SALT', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );
define( 'NONCE_SALT', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' );

?>

xxx・・・の部分は自動で生成されるらしい。コピー&ペーストの世界。

そして、
/etc/wordpress/htaccess
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

</IfModule>

コピー&ペーストだけではちょっとだけ足らなくて太字部分を追記する必要がある。

さて、この rewrite を有効化しなければ。

$ sudo a2enmod rewrite
$ sudo service apache2 restart

最後に、以下の書き込み権限を付与。リンクが貼られているからいいかとおもいきや、書き込みができない設定になっていたので、例えば画像なんかがポストできない状態だった。

$ sudo chmod 777 /var/lib/wordpress/blogs.dir

この設定が終わったら、ブラウザでログインをしなおす。

★ここからは日本語表示にしても大丈夫みたい。


■日本語化対応プラグインの導入

プラグイン WP Multibyte Patch の導入。
1.6.4は WordPress 3.5 以上への対応らしいので、3.3.1は・・・と見ると、旧バージョンはダウンロードできないみたいなので、WordPress日本語版の旧バージョンをダウンロード。

ファイルを展開して
展開用ディレクトリ/wordpress/wp-content/plugins
に入っている wp-multibyte-patch をまるごと
/usr/share/wordpress/wp-content/plugins
にコピーする。

$ su -
# cp -r wordpress/wp-content/plugins/wp-multibyte-patch /usr/share/wordpress/wp-content/plugins
# chown -R root:www-data /usr/share/wordpress/wp-content/plugins/wp-multibyte-patch/

ついでに言語ファイルもコピーしておく。

# mv /usr/share/wordpress/wp-content/languages/ja.mo /usr/share/wordpress/wp-content/languages/ja.mo.bk
# cp wordpress/wp-content/languages/*.mo /usr/share/wordpress/wp-content/languages/
# chown root:www-data /usr/share/wordpress/wp-content/languages/*ja*
# chmod 770 /usr/share/wordpress/wp-content/languages/*ja*

WP Multibyte Patch をマルチサイトに対応させるために以下も行なっておく。

# mkdir /usr/share/wordpress/wp-content/mu-plugins
# chown root:www-data /usr/share/wordpress/wp-content/mu-plugins
# chmod 770 /usr/share/wordpress/wp-content/mu-plugins
# ln -s /usr/share/wordpress/wp-content/plugins/wp-multibyte-patch /usr/share/wordpress/wp-content/mu-plugins/wp-multibyte-patch
# ln -s /usr/share/wordpress/wp-content/plugins/wp-multibyte-patch/wpmp-load.php /usr/share/wordpress/wp-content/mu-plugins/wpmp-load.php

配置は終わり。

念のためブラウザでログインし直して、プラグインを有効化させる。

  • WP Multibyte Patch → 有効化 をクリック!

これで累積的な問題も解消されることでしょう。

次は日本語化。ココに日本語化情報があり、ココにファイルが置いてあるのでダウンロードしてくる。
対象バージョンは3.3.1なので、3.3.x用をダウンロードしてくる。
具体的には、
ja.mo を ココから
ms-ja.mo を ココから
ダウンロードする。

日本語化については色々調べてみていて[取り消し線]部を書いてはみたものの、プラグインに日本語化ファイルも含まれていたので、以下の通りにファイルを編集するだけで日本語化される。

/etc/wordpress/wp-config.php
/* Default value for the table_prefix variable so that it doesn't need to
   be put in every host-specific config file */
if (!isset($table_prefix)) {
    $table_prefix = 'wp_';
}

/* 日本語化 */
define('WPLANG', 'ja');

require_once(ABSPATH . 'wp-settings.php');

合わせてこの先で使うので以下も追加しておく。

/* Default value for the table_prefix variable so that it doesn't need to
   be put in every host-specific config file */
if (!isset($table_prefix)) {
    $table_prefix = 'wp_';
}

/* 日本語化 */
define('WPLANG', 'ja');

/* プラグインやテーマをインストールできるようにする */
define( 'FS_METHOD', 'direct' );

/* リビジョン機能をオフにする */
define( 'WP_POST_REVISIONS', false );

require_once(ABSPATH . 'wp-settings.php');

この先に行う作業をスムーズにするのでオススメな設定。

ブラウザでログインしなおして日本語化されたことを確認する。


■コマゴマした設定と家族用ブログサイト作成

ログインしなおしたら、サイト全体の設定を行う。

左上のメニュー [参加サイト] → [サイトネットワーク管理者] をクリックすると、サイト全体のダッシュボードが表示される。

設定 → ネットワーク設定 をクリックして以下を設定していく。

  • ネットワーク名:
    好きな名前を入れる。 ほげサイト とか。
  • サイトネットワーク管理者のメールアドレス:
    webmaster@hogeserver.hogeddns.jp など。
  • 禁止名:
    mailman zarafa zarafa-webaccess zarafa-webapp を追記。
  • 案内メール:(ちょっとまじめに書いてみたけど、運用テストはこれから)

    ユーザー様へ

    SITE_NAME に以下の新しいサイト作成しました。
    BLOG_URL

    以下の情報を使って管理者としてログインできます。
    ユーザー名: USERNAME
    パスワード: PASSWORD
    ログイン先: BLOG_URLwp-login.php

    楽しい新サイトになりますように。ありがとうございました!

    — 運営チーム @ SITE_NAME

  • 最初の投稿:(これもまじめに・・・運用テストはこれから)
    ようこそ <a href=”SITE_URL”>SITE_NAME</a> へ。
    これはあなたの最初の投稿です。
    これを編集するなり削除するなりして、ブログを開始して下さい!
  • 初期設定言語:
    Japanese を設定。

変更を保存する。

同じく、サイト全体のダッシュボードのプラグインをクリックし、WP Multibyte Patchをネットワークで有効化する。

いよいよ、家族用ブログサイトを作る。
サイト全体のダッシュボードでサイトをクリックし、さらに新規追加をクリックする。
サイトのアドレスとして family 、タイトルを適当に、管理者メールアドレスに hogeuser@hogeserver.hogeddns.jp を設定し、サイトを追加 ボタンをクリックする。

ちょっと時間がかかってドキドキしたが、ちゃんとサイトが登録された。
で、メールが3通やってきた。

  1. From: wordpress@hogeserver.hogeddns.jp
    To: webmaster@hogeserver.hogeddns.jp
    Subject: 新規サイト登録: http://hogeserver.hogeddns.jp/family
  2. From: webmaster@hogeserver.hogeddns.jp
    To: webmaster@hogeserver.hogeddns.jp

    Subject: [ほげサイト] 新しいサイトを作成しました

  3. From: webmaster@hogeserver.hogeddns.jp
    To: hogeuser@hogeserver.hogeddns.jp
    Subject: 新しい ほげサイト のサイト: ほげログ
    内容:
    ユーザー様へ

    ほげサイト に以下の新しいサイトを作成しました。
    http://hogeserver.hogeddns.jp/family/

    以下の情報を使って管理者としてログインできます。
    ユーザー名: hogeuser
    パスワード: N/A
    ログイン先: http://hogeserver.hogeddns.jp/family/wp-login.php

    楽しい新サイトになりますように。ありがとうございました!

    — 運営チーム @ ほげサイト

色々気になることはあるが・・・次へ。

■ちょっと問題が発生

WP Multibyte Patch が新サイトで動かない。というか見ることすらできない。対策としては、

  • サイト管理者のダッシュボードからプラグインを選択し、WP Multibyte Patch を全サイトで無効化。
  • 最初のサイトのダッシュボードにいってプラグインを選択し、WP Multibyte Patchを無効化。
  • 新サイトのダッシュボードに行ってプラグインを選択し、WP Multibyte Patchを有効化。
  • 最初のサイトのダッシュボードに行ってWP Multibyte Patchを有効化。

とすることで解決。

■問題を解決した所で、新サイトの条件設定を進める。

まず、サイト管理者のダッシュボードでサイトを選択し、一覧表示された /family/ 付近にカーソルを持っていく。編集の文字が表示されたらクリックする。

情報タブの中にある公開の属性を解除。
ユーザータブの中でユーザーを追加。家族全員。

サイト管理者のダッシュボードでテーマをダウンロードしておく。
家族が喜びそうなカワイイのを探して入れるか・・・。

サイト管理者のダッシュボードから 新サイト の編集へ進み、テーマを有効化させる。

そしたら、新サイトのダッシュボードにってブログの設定をして・・・
タイムゾーンは +9 にならないのね。日本語版を入れないとこういう所がだめなのね。でも、一回設定すりゃいいと割り切る。

ただし、

投稿設定でXML-RPCをしないと iPhone アプリとかから書き込みができない

ので注意。


■公開先限定サイト化

プラグイン一発でログインを強要できる。しかもサイト単位で。これはいい。

サイトネットワーク管理者のダッシュボードでプラグインの新規追加。
名前は WordPress Access Control っす。

セットアップしたら新サイトのダッシュボードでプラグインを有効化。
Visit options page から設定ページに進んで幾つか設定をする。

たったのこれだけ。(といいつつ、日本語化されたのを使いたくなったり・・・)


その他にも色々といじり倒して何とか使える状況にした。

娘たちにもできあがった宣言をし、iPhoneには WordPress のアプリをインストールさせて運用を開始した。

早速3つも記事が載った。投稿を家族に知らせるため、MLに記事投稿を通知するプラグイン(Subscriber2)も導入した。

いつまで続くかわからないけれど、うまく使っていけたらいいな。


2013/07/15追記

サイトがかなり良い感じに仕上がってきた。
もちろん、外部への公開はしていなくて、そのためのプラグインなんかも用意した。
使っているプラグインを書いてみる。

  • Limit Login Attempts
    IP単位でログイン試行回数を制限する。
  • SI CAPTCHA Anti-Spam
    コメントを記入する際、画像に書かれた4桁の文字入力が必要になる。
  • Simple Local Avatars
    アバターは標準で Gravatar に登録されたアバターを使うみたい。このプラグインがあれば、ローカルで適当なアイコンを作って運用できる。
  • Subscribe2
    メールマガジン機能をもたせる。娘が投稿したら、MLに投稿を知らせるメールが出せるなど。
  • TinyMCE Advanced
    投稿用のエディタに Advanced なボタンを追加する。例えば、表が書けるようになったりする。
  • WordPress Access Control
    アクセス制限を細かく設定できる。秘密のブログにすると、必ずログインが必要になったりする。
  • WP Emoji2
    絵文字がズラーッっと並んだパネルができて、投稿内容をエディット中にクリックすると絵文字が入れられる。

色々と入れてみたけれど、WordPressが最新版でないために、プラグインがうまく動作しないことがあった。画面が真っ白になったり、ポップアップウィンドウが真っ白だったり・・・。

そんな場合は、WordPressにあったバージョンのプラグインをダウンロードしてきて、手動で /usr/share/wordpress/wp-content/plugins に展開すればプラグインをダウングレードでき、きちんと動く。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です