mysqldump: Error: Binlogging on server not active と怒られたときの解決策

環境:CentOS 6.2

ファーストサーバーの件もあったし、WordPress をバックアップしておこうと思って、

mysqldump -uroot -ppassword --opt --flush-logs /
--single-transaction --master-data=2 /
--default-character-set=utf8 --hex-blob wordpressdatabasename /
> dump.sql

としたら、
-- MySQL dump xx.xx  Distrib x.x.xx, for redhat-linux-gnu (x86_64)
--
-- Host: localhost    Database: wpdb
-- ------------------------------------------------------
-- Server version	5.x.xx

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
mysqldump: Error: Binlogging on server not active

と、怒られる。いろいろと調べてみたら、
$ vi /etc/my.cnf 

として、↓のように、[mysqld]に、”log-bin=mysql-bin”を書き加えたら無事出来た。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql

log-bin=mysql-bin 
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# character-set
default-character-set=utf8
skip-character-set-client-handshake

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

↑のように設定したら無事出来た。ただこのポスト、単なる対処法であり、根源的に何が問題なのか分かっていないので良くない気はする。

WordPress で 全記事一覧 + 日付 を表示する

—–追記@2012年9月16日—–
ページング機能も入れたいところ…。
まあでも個人のブログならポストはほとんど1000件以内におさまるだろうから問題が発生するまでほっておくとする…。
——–追記ここまで———

本ブログで全記事一覧を表示したかった。いろいろと調べてみて、出来たのでここに書いておく。↑の「すべての記事」が今回の記事そのもの。長い題名のものだと、折り返しになってしまって少々醜いがそこはご愛嬌…(スタイルシートで分けるのは ToDo ということで → 追記@2012-08-26、入れ子リストにして、日付にめり込む折り返しは回避した)。

【WordPress】全記事リストを投稿日と一緒に出力する
http://www.ep-melody.com/2011/11/wp-allentry_output/


↑を参考にさせていただきました(というかほぼ丸パクリですみません…)。

以下、手順。

まず、全記事一覧表示用の php ファイルを作る。↓のようなファイルをとりあえず作る。
zenbu.php

<?php
/*
Template Name: zenbu
*/
?>
<?php get_header();?>

<div class="entry-content">

<h2>すべての記事:</h2>    

<br>

<ul>
<?php query_posts('posts_per_page=-1'); ?>
<?php if (have_posts()):while(have_posts()):the_post(); ?>

<li><font size="4"><?php the_time('Y/m/d'); ?>: </font>

<ul>
<br>
<font size="4"><a href="<?php the_permalink(); ?>"><?php the_title_attribute(); ?></a></font>
</ul>

</li>

<br><br><br>
<?php endwhile; endif; ?>
</ul>

</div>

</div>
</div>
<?php get_footer();?>

ちなみに、get_sidebar(); などは敢えて書き込まず、sidebar を表示させないようにしている。これは個人的な趣味であり、好き好きの問題なので追加したい人は get_sidebar(); を加えれば良い。

次に、この zenbu.php を、自分が使っているテーマフォルダの下に置く。私の例だと、mantraというテーマを使っているので、
/var/www/html/blog/wp-content/themes/mantra
に置く。Windows を使っている人は FTP クライアントなどを用いることになると思う。

次に、WordPress のダッシュボードで、

「固定ページ」 → 「新規追加」 → タイトルに「記事一覧」と打つ → 右の方の「ページ属性」の「親」を「親なし」にして「テンプレート」をクリックして出てくるリストの一番下の、「zenbu」を選択 → 「公開」ボタンを押す → 上の方の、「固定ページを表示」をクリックして確認してみる(ちなみに、「ページ属性」の順序は、デフォルトでは 0 と表示されているが、これで他の固定ページとの順番を決めることが出来る。この全記事一覧を home のとなりにしたいのなら、これを 0 として、他の固定ページの「ページ属性」の順序を、1,2,3…としていけば良い。

なお、WordPress のテーマで、頻繁に更新のあるものもある。更新すると、上記のようにして作った全記事一覧は見られなくなる。また一から作り直しする必要があるので更新には注意が必要だ。テーマを更新する際には、一旦作成したphpファイルを別のところにおいてからやるべきだろう。

…ああ、こうしてまたどんどん WordPress に依存してしまっている。ますます抜け出せなくなってしまう。これで良いのだろうか?もちろんたいへんすばらしい CMS ではある。使いやすい UI、豊富なテーマ、数限りなくあるプラグイン、検索すればすぐに該当項目が出てくるトラブル耐性、うーん、盤石である。だけれども何だかくやしかったり。

WordPress に関する体系的かつ詳しい本はこちら↓。個人的にも持っています。アマゾンの評価も高いですね、25レビューで☆4つ半とは。


—–追記@2012年8月30日—–
同じ日に複数投稿した場合、↑のものだと、いちいち分けて表示される。if文で分離しても良いかも(めんどうなので ToDo にしておく^^)。

WordPress のファイルのアップロード方法とファイルサイズ制限の調整

ダッシュボード→メディア→新規追加、でファイルのアップロードが可能。

また、 設定→メディア→アップロードするファイルの保存場所 で、ファイルの置き場所を選べる。apache でファイルを辿れないようにすれば、とりあえずこのファイルの保存場所に、適当な英数字を書いておけばとりあえず誰にも発見されないかもしれない…。

が、デフォルトだとファイル1つにつき 2MB までである。自作バイナリをアップロードしようにも小さすぎる。というわけで直し方@WordPress 3.4.1, Red Hat Enterprise Linux 6.2。早い話が、php.iniでいじるようだ。

[root@vhost****] vi /etc/php.ini

として、64MBまでのアップロードに対応させたかったので、
upload_max_filesize = 64M
post_max_size = 128M

と書き換え。upload_max_filesize は、語句通りファイルサイズの最大値の設定。post_max_size は、post できる最大のファイルサイズ。upload_max_filesize < post_max_size としておかないとダメらしい。そして、httpd(apache)をrestart↓


これで、きちんとアップロードできるようになる。