データベースと管理ツールを導入
「前回」に続いて「GMO VPSを契約してWordPressを安定動作させるまでのサーバ設定方法」第五弾。
この投稿ではMySQLのインストールと初期設定。合わせて簡単なチューニングやスローログの書き出しなども設定します。また、管理用にphpMyAdminのインストールと設定を行います。
今回の解説で利用したVPSはこちら
目次
MySQLのインストールと設定
グループインストールでMySQL Database serverをインストールしましたが5.1はちょっとバージョンが低いので新しいものに入れ替えます。
MySQLのアンインストール
# yum erase mysql (省略) Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: mysql x86_64 5.1.73-3.el6_5 @updates 2.4 M Removing for dependencies: mysql-server x86_64 5.1.73-3.el6_5 @updates 25 M Transaction Summary ================================================================================ (省略)
MySQLのインストール
このままremiリポジトリを利用してインストールしようとするとlibaio.so.1なるファイルが無い怒られるので、libaio.so.1を含むlibaioを先にインストールしておきます。
このへんの依存関係にあるファイルの検索方法は「以前の投稿」を参照してください。
# yum install libaio-0.3.107-10.el6 (省略) Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: libaio x86_64 0.3.107-10.el6 base 21 k Transaction Summary ================================================================================ Install 1 Package(s) (省略)
続けてメインのMySQLをインストール。
# yum install --enablerepo=remi --disablerepo=base,updates,extras,centosplus,contrib mysql mysql-server (省略) Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mysql x86_64 5.5.37-1.el6.remi remi 5.8 M mysql-server x86_64 5.5.37-1.el6.remi remi 10 M Installing for dependencies: compat-mysql51 x86_64 5.1.54-1.el6.remi remi 1.4 M Updating for dependencies: mysql-libs x86_64 5.5.37-1.el6.remi remi 776 k Transaction Summary ================================================================================ (省略)
MySQLを起動する
# /etc/init.d/mysqld start
MySQLの初期設定
mysql_secure_installationを実行します。
# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] n ←rootユーザーのパスワードを変更するか聞かれるのでnでスキップ ... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] ←匿名ユーザーの削除。何もせずエンターで有効。 ... Success! ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] ←リモートからのrootユーザーのログイン禁止。何もせずエンターで有効。 ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] ←テスト用データベースの削除。何もせずエンターで有効。(が、そもそも作ってない) - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] ←ユーザー権限のテーブルをリロード(先ほど設定したパスワードを有効にするか)。何もせずEnterで有効(今回はパスワード変更してないので意味ない) ... Success! Cleaning up... All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL!
これで初期設定完了。
テーブルのアップデート
初回なのでアップデートの意味は無いですが、一応MySQLの作法として実行します。
# mysql_upgrade -u root -p Enter password: ←rootユーザーのパスワード入力 Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck with default connection arguments Running 'mysqlcheck with default connection arguments mysql.columns_priv OK mysql.db OK mysql.event OK mysql.func OK mysql.general_log OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.host OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.servers OK mysql.slow_log OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK Running 'mysql_fix_privilege_tables'... OK
これで無事完了。
MySQLの設定
# cd /etc # cp my.cnf my.cnf.org # vi /etc/my.cnf
[mysqld]セクションに追記
チューニングの値ですが、環境によって適切な値は大きく異なります。今回の値はメモリが2GBのサーバでWordPressを快適に動作させるための暫定値です。
サイズを増やせば速度に影響が出ますが、無駄に増やしてスワップすると、最悪の場合OOM Killerが発生してサーバ全体が処理を受け付けなくなります。
空きメモリを計測しつつ、ベンチマークを行い、最適な値を算出してください。
(そもそもデータベースへのアクセスは最小限にするほうが高速になります。)
MySQLの新しいバージョンから、パラメータにはハイフンではなくアンダーバーを使うように変更になりました。ハイフンでもまだ動きますが警告が出ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | # デフォルトのエンコード character-set-server = utf8 # 文字コードの照合順序。UTF-8から照合してくれる。 collation-server = utf8_general_ci # SET NAMES utf8を打つまでもなくエンコードを指定してくれる。 init-connect = SET NAMES utf8 # エラーログを出力する([mysqld_safe]にエラーログに関する記述がある場合は削除すべし) log_error=/var/log/mysql-error.log log_warnings=1 # スロークエリのログを出力する slow_query_log=ON slow_query_log_file=/var/log/mysql-slow.log long_query_time=0.1 # ここからチューニング # --------------------------------------------------------------- # サーバスレッドをキャッシュする数(むやみに増やさないこと) Default:8 thread_cache_size = 16 # 最も重要なキャッシュの総サイズ Default:0 query_cache_size = 64MB # これ以上のサイズのクエリはキャッシュしない Default:1048576(1M) query_cache_limit = 2097152 # テーブルキャッシュサイズ。同時実行性の向上 Default:64 table_cache = 256 # ソート時に使われるバッファサイズ。ORDER BY等の性能向上 Default:2MB sort_buffer_size = 4MB # 全件スキャンをするときに利用するバッファ Default:131072 (128K) read_buffer_size = 262144 # InnoDB用 Default:8388608 (8MB) innodb_buffer_pool_size = 96MB # MyISAM用 Default:8388608 (8MB) key_buffer_size = 64MB # ログバッファと呼ばれる領域にデータが保持される Default:2 innodb_flush_log_at_trx_commit = 2 # InnoDB用 logファイル Default:5MB innodb_buffer_pool_sizeの25%が推奨値(メモリが多くても128MBもあれば十分) innodb_log_file_size = 32MB |
サーバスペックに余裕がある場合はinnodb_buffer_pool_sizeを増やす。
innodb_log_file_sizeを変更すると、元々あったログファイルとサイズが違う場合エラーで起動しないので、サーバ停止後に、ログファイルを削除してから再起動する。
以下の様なエラーが出ます。
1 | InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes |
ログファイルの削除。
# rm /var/lib/mysql/ib_logfile0 # rm /var/lib/mysql/ib_logfile1
以下末尾に追加
1 2 3 4 5 6 7 | [mysql] # デフォルトのエンコード。 default-character-set = utf8 [client] # デフォルトのエンコード。 default-character-set = utf8 |
スローログのローテーション設定
サンプルは「/etc/logrotate.d/mysqld」にあるので参考にしつつ、環境に合わせて変更します。
# vi /etc/logrotate.d/mysql-slow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /var/log/mysql-slow.log { create 644 mysql mysql notifempty weekly rotate 4 missingok postrotate # just if mysqld is really running if test -x /usr/bin/mysqladmin && \ /usr/bin/mysqladmin ping &>/dev/null then /usr/bin/mysqladmin flush-logs fi endscript } |
以上の設定が終わったら、rsyslogを再起動して設定を有効にします。
# /etc/init.d/rsyslog restart
MySQLを起動する
# /etc/init.d/mysqld restart
MySQLの自動起動を設定
# chkconfig --list mysqld # chkconfig mysqld on
phpMyAdminのインストールと設定
公式のMySQL Workbenchもありますが、やっぱり便利なphpMyAdmin。
このままインストールすると依存関係で怒られるので、まずは必要なパッケージをインストール。
(省略) # yum install --enablerepo=epel libmcrypt t1lib recode dejavu-sans-fonts libtidy Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: dejavu-sans-fonts noarch 2.30-2.el6 base 1.7 M libmcrypt x86_64 2.5.8-9.el6 epel 96 k libtidy x86_64 0.99.0-19.20070615.1.el6 base 127 k recode x86_64 3.6-28.1.el6 base 712 k t1lib x86_64 5.1.2-6.el6_2.1 base 160 k Installing for dependencies: dejavu-fonts-common noarch 2.30-2.el6 base 59 k fontpackages-filesystem noarch 1.41-1.1.el6 base 8.8 k Transaction Summary ================================================================================ Install 7 Package(s) (省略)
直接関連のあるパッケージも公式のものが優先されるとエラーが出るので無効にしてremiリポジトリ限定でインストールします。
# yum install --enablerepo=remi --disablerepo=base,updates,extras,centosplus,contrib phpMyAdmin Dependencies Resolved (省略) ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: phpMyAdmin noarch 4.2.2-1.el6.remi remi 4.7 M Installing for dependencies: php-bcmath x86_64 5.4.28-1.el6.remi remi 60 k php-mbstring x86_64 5.4.28-1.el6.remi remi 945 k php-mcrypt x86_64 5.4.28-1.el6.remi remi 51 k php-mysql x86_64 5.4.28-1.el6.remi remi 136 k php-php-gettext noarch 1.0.11-4.el6.remi remi 20 k php-recode x86_64 5.4.28-1.el6.remi remi 37 k php-tcpdf noarch 6.0.082-1.el6.remi remi 2.7 M php-tcpdf-dejavu-sans-fonts noarch 6.0.082-1.el6.remi remi 305 k php-tidy x86_64 5.4.28-1.el6.remi remi 55 k Updating for dependencies: php-cli x86_64 5.4.28-1.el6.remi remi 2.6 M php-common x86_64 5.4.28-1.el6.remi remi 930 k php-fpm x86_64 5.4.28-1.el6.remi remi 1.3 M php-gd x86_64 5.4.28-1.el6.remi remi 143 k php-pdo x86_64 5.4.28-1.el6.remi remi 120 k php-xml x86_64 5.4.28-1.el6.remi remi 171 k Transaction Summary ================================================================================ (省略)
phpMyAdminの設定ファイルを編集
元々用意されている設定ファイルを利用する。
昔は「/usr/share/phpMyAdmin/config.sample.inc.php」のものを「/etc/phpMyAdmin/」にコピーして使ったが、すでに用意されているようです。
# cd /etc/phpMyAdmin/ # cp config.inc.php config.inc.php.org # vi /etc/phpMyAdmin/config.inc.php
以下のようにコメントアウトを解除する。passの部分をオリジナルのパスワードに変更するのを忘れないように。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /* * phpMyAdmin configuration storage settings. */ /* User used to manipulate with storage */ $cfg['Servers'][$i]['controlhost'] = ''; $cfg['Servers'][$i]['controlport'] = ''; $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'pass'; /* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; /* Contrib / Swekey authentication */ // $cfg['Servers'][$i]['auth_swekey_config'] = '/etc/swekey-pma.conf'; $cfg['PmaAbsoluteUri'] = 'http://'.$_SERVER['SERVER_NAME'].'/phpMyAdmin/'; |
phpMyAdmin環境保管領域の設定
# mysql -u root -p Enter password: ←SQLのrootユーザー用パスワードの入力
用意された設定用のスクリプトを実行
mysql> source /usr/share/phpMyAdmin/examples/create_tables.sql
Database changed
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
正しく作成されたかデータベースの確認
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | phpmyadmin | +--------------------+ 4 rows in set (0.00 sec)
データベースを管理する権限を持つユーザーを作成
4.1.9-1.el5.remiでは以下の書式。passの部分は「/etc/phpMyAdmin/config.inc.php」で設定したパスを入力する。
mysql> GRANT ALL PRIVILEGES ON phpmyadmin.* TO pma@localhost IDENTIFIED BY 'pass';
権限に関するテーブルを再読み込みして、終了します。
mysql> FLUSH PRIVILEGES; mysql> exit
nginxにphpMyAdminの設定をする
今回は http://example.com/phpmyadmin<ランダムな文字列> でアクセスできるようにする。
server_nameの部分とlistenが同じなら、同じディレククティブに書かないといけない点に注意。
またphpmyadminだとブルートフォース攻撃の対象となるので、ランダムな文字列を組み合わせたURLにします。今回は「ZAOoseXRUUajHB1LfHpH」にしました。
(セキュリティを強化するために、前回解説したnginxのWordPress用の設定を上書きしてください。)
# vi /etc/nginx/nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | server { listen 80; server_name example.com; (省略) index index.html index.htm index.php; root html; location /phpmyadminZAOoseXRUUajHB1LfHpH { alias /usr/share/phpMyAdmin/; try_files $uri $uri/ /index.php; location ~ ^/phpmyadmin(.+\.php)$ { alias /usr/share/phpMyAdminZAOoseXRUUajHB1LfHpH$1; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$1; include fastcgi_params; fastcgi_intercept_errors on; } } } # server 80 |
「alias /usr/share/phpMyAdminZAOoseXRUUajHB1LfHpH$1;」などについている「$1」は正規表現の後方参照。
「()」で囲んだ部分、今回の例で言えば「(.+\.php)」で一致した内容を変数として受け取っている。つまり、「/usr/share/phpMyAdmin」ディレクトリにある拡張子が「php」のファイルを受け取っている。
「location /phpmyadmin」で、以下のように書けばローカルからのみ許可される。ここに自分のネットワークに割り振られたIPや、ISPのIPを指定しておけば、不正アクセス対策にります。
1 2 3 | allow 127.0.0.1; allow 192.168.11.0/24; deny all; |
他にもログイン画面に対してSSLで暗号化を行ったり、ベーシック認証で二重化するなどの対策を組み合わせるとセキュリティ上のリスクは軽減できます。
/var/lib/php/sessionの設定をする
「/var/lib/php/session」の所有権をnginxとphp-fpmの実行者に合わせる。
このファイルの所有権が異なるとセッションの整合性が確認できないため、正しいIDとパスワードを入力してもログイン画面に戻ってしまい、ログインに失敗するので注意。
# chown -R www.www /var/lib/php/session
nginxの再起動
# /etc/init.d/nginx restart
今回の解説で利用したVPSはこちら
「GMOクラウドのVPS」
以上の設定でhttp://example.com/phpmyadminZAOoseXRUUajHB1LfHpH/にアクセスすればphpMyAdminにアクセスできます。
後は一般のレンタルサーバと同じように作業できます。
ここまでの設定でWordPressを運用できますが、せっかくなので一連の流れで需要の多いメールサーバの構築に関しても解説します。
いつも大変参考にさせて頂いてます。
このページの
「nginxにphpMyAdminの設定をする」という箇所ですが、
vi /etc/nginx/nginx.confで表示された内容と
別ページの
http://oxynotes.com/?p=8438
で最初に設定したnginx.confが随分違うように見えます。
これは参考程度ということでランダムな文字列の
ZAOoseXRUUajHB1LfHpHを下記に追記する
location /{
↓
location /phpmyadminZAOoseXRUUajHB1LfHpH {
という認識で良いのでしょうか?
また、
alias /usr/share/phpMyAdminZAOoseXRUUajHB1LfHpH$1;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$1;
include fastcgi_params;
なども追加するものなのでしょうか。
恐れ入りますがよろしくお願いいたします。
追記というよりも上書きです。
解説にもありますが、http://example.com/phpmyadminというアドレスに対してブルートフォース攻撃を仕掛けるのは、ハッカーの常套手段です。大抵の攻撃はbotを利用して執拗に繰り返されるため、無駄なリソースを割くことになります。そのため、自分しか分からないアドレスに変更するという対策です。
この考え方はSSHでポートを独自のものに変えたのと同じです。
御回答ありがとうございます。
下記部分を上書きするのはlisten 80;の部分だけでよいのでしょうか?
location ~ ^/phpmyadmin(.+\.php)$ {
alias /usr/share/phpMyAdminZAOoseXRUUajHB1LfHpH$1;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin$1;
include fastcgi_params;
fastcgi_intercept_errors on;
上書き部分がlisten 8080;の内容に似ていたので質問させていただきました。
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
なお、ここに記載するのはおかしいのですが、
オリジナルの /etc/nginx/nginx.conf は”}”の数が足りないように思えます。
nginxの解説ページではさらっと流す程度でしたが、ポート80でリバースプロキシのキャッシュを返して、キャッシュが存在しない場合にポート8080をバックエンドサーバとして実行するという設定の例です。
phpMyAdminは自分しかアクセスせず、キャッシュされるとリアルタイムに更新が反映されないため、キャッシュする意味がありません。そのためポート80でphpを実行しています。ということでポート80にだけ記述しておいてください。
オリジナルの設定ファイルは最後に付けるはずのhttpディレクティブ用の閉じ括弧がなかったですね。コピペ時に無くなったようです。ご指摘ありがとうございます。修正しました。
先日GMOクラウド VPS を契約し、こちらのページを参考にさせていただきセットアップしております。
詳しい解説で、多少html、cssの知識があるだけの素人ながら何とかwordpressの表示ができそうで助かっております。ありがとうございます。
phpmyadminへのアクセスで困っております。
解説通りに
# vi /etc/nginx/nginx.conf
を行い、http://example.com/phpmyadminにアクセスすると File not found. が表示されます。
(example.comは独自ドメインで設定しています。非掲載ご了承下さい。)
# vi /etc/nginx/nginx.confの書き方がおかしいのか、何か必要なデータがインストールできてないのかと思っております。解決方法お分かりになられれば教えていただけると幸いです。
よろしくお願いいたします。
はじめましてmasuさん
not foundの件ですが、このサイトと同じ設定にした場合は「nginxにphpMyAdminの設定をする」の項目にある通り、
http://example.com/phpmyadmin< ランダムな文字列>
でアクセスできるはずです。
このページの設定を元に、ランダムな文字列までコピペで設定されているなら、
http://example.com/phpmyadminZAOoseXRUUajHB1LfHpH
というアドレスでアクセスできるはずです。
この対策は「http://example.com/phpmyadmin」というURLはスパマーに想定されやすく、ログイン画面へブルートフォース攻撃されやすいため、phpmyadminのURLを隠すという対策です。
ピンバック: さくらのVPSのセットアップメモ 3:Nginx・PHP・MySQL・phpMyAdminのセットアップ | BLOG.DevZone.JP
こんばんは、Niginxリバースプロキシの記事で最初にコメントしてDNS関連のことで色々と長文説明をいただいた岡田です。お陰様で、あれからサーバ関連はかなり詳しくなりました。いつも新しいサイトを立ち上げる時はOXYNOTEのNgingx.CONF設定を参考にしています。
今回は私ごときですが、SEOについてご指摘があります。
Googleで『OXYNOTE phpmyadmin』と検索してもこの記事が見つかりませんでした。代わりに関連記事が検索結果にたった2件表示されています。以前にも似たようなことがあり、探すのに少し手間をとりました。
H1タグはページ一つに、のタイトルタグと同じにすることでかなり変わると思います。
例えばこの記事なら「MySQLのインストールと各種設定、phpMyAdminのインストールと設定」はH2では無くH1で、その下の「データベースと管理ツールを導入」をH1からH2にします。「目次」のH2タグはDIVなどにします。残りのH3は正しいと思います。これで1.5倍は変わると思います。
変えるとCSSで乱れてしまうなら
#content .entry-content h3{
このようにエレメントを直接指定せず、すべてclassで分ければ楽です。
他にもデバイスごとWEBデザイン幅などのレスポンシブなど、色々ご指摘があります。その際は
私ごとき信頼性に欠けるかもしれませんので、ご自身でお調べください。
それでは私はこの記事を参考にWordpressを使わないブログを作りたいと思います。
失礼します。
岡田さん、お久しぶりです。
参考にしていただき恐縮です。
このブログはWordPressのテスト用に作成したため、作成当時はWordPressに対して知見が無く、「記事のタイトルならh1だろ」と何も考えず作成してしまいました。
気がついた時に修正すれば良かったのですが、現在では記事数も多くなり、無精で手付かずの状態となっております。
(よく考えたらMySQLで置換すれば一発ですね)
また、恐縮ですが検索の際は「oxynote」ではなく「oxynotes」で検索していただけると表示されると思います。