概要
静的HTMLで管理していたHPを、WordPressへ移行しました。
その際に行った作業について記します。
移行にあっての要求
1. 静的HTMLファイルの直接の書き換えを楽にしたい
- 表を逐一エディタで編集してFTPソフトで送信するなど手間がかかる
- メニューやヘッダーなど共通部分の更新を一括に変更したい
- 更新項目をトップに乗せるのを自動化
2. モバイル対応をしたい
- モバイルファーストが叫ばれている中、固定レイアウトだけのHPは既に過去の遺物
3. 管理コストは軽くしたい
- いろいろ独自で作ってもいいけど、属人化しそうなので、なるべく誰でも管理できるように
- アプリケーションに関する情報が豊富で学習コストがかからない
要件
1. WordPressへの移行
- ブラウザ上での編集
- テーブル管理を楽に
- モバイル対応(メジャーなテーマを利用すれば普通対応している)
- セキュリティ周りの設定
2. ドメインの移行
- 旧サイトの情報も参照ができるようにする
- サブドメイン周りの設定をちゃんとする
環境情報の確認
OS: CentOS 7.4
Webサーバー: Apache 2.4.6
DNSサーバー: Bind
確認方法
- CentOS、UbuntuなどLinux OSのバージョン確認をするコマンド -UX MILK
- Apacheのバージョン確認方法 -CentOSサーバ構築術 文具堂
- DNS BINDバージョン確認コマンド -Qiita
作業
1. VirtualHostの設定
既存のHPのドキュメントルートと、WordPressの置かれているディレクトリが異なります。
従って、同じIP内で、ドキュメントルートを複数に分ける方法としてVirtualHostをつかいます
Apacheの設定ファイルは、基本の設定ファイルhttp.confと、http.conf内で読み込まれる個別モジュールに分かれます。
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/***.conf
モジュールはhttpd.confにおいて、拡張子.confであるものがインクルードされます。
# Load config files in the "/etc/httpd/conf.d" directory, if any.
Include /etc/httpd/conf.d/*.conf
新たに.confファイルを作成し、各種設定をしました。
<VirtualHost *:80>
ServerName hogehuga.com #サーバー名
ServerAlias www.hogehuga.com # サーバーエイリアス
DocumentRoot /var/www/wordpress # WordPressのディレクトリ
<Directory /var/www/wordpress>
AllowOverride All # .htaccessの制御
Options FollowSymLinks # ディレクトリ制御
Order allow,deny # ディレクトリに対するアクセス制御
Allow from all
</Directory>
<ifModule mod_rewrite.c> # サブドメインのリダイレクト
RewriteEngine On
RewriteCond %{HTTP_HOST} (\w)+.hogehuga.com$
RewriteRule ^/(.*)$ http://hogehuga.com/$1 [R=301,L]
</ifModule>
</VirtualHost>
<VirtualHost *:80>
ServerName old.hogehuga.com # 旧HP用のドメイン
DocumentRoot /var/www/html/
<Directory /var/www/html/>
AllowOverride All
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
ディレクトリの制御は.htaccessによる制御ができるように。また、old以外のサブドメインを正規表現で条件付けしてリダイレクトするよう設定しました。
2. WordPressの設定
次にWordPressは多く使われる反面、セキュリティの脆弱性が突かれやすいのでちゃんと管理する必要があります。
サイトヘルスの問題の修正
WordPress5.2から追加された機能で、WordPress内のセキュリティの設定や各言語などのバージョンをチェックし点数(パーセント)を算出してくれます。
今回はそれに従い修正を加えました。
.htaccessの制御
httpd.confで設定していない、WordPress内個別のファイルやIPの制限を行いました。
メールアドレスのみのログイン
ログインにおいてブルートフォース攻撃の脅威を下げるために追加しました。
wp-content > themes > lightning > functions.php
に追記します。
テーマ内のファイルに追記するので、テーマのアップデートすると変更がなくなる点に注意です。
CentOSのファイアウォール設定:firewalld
CentOS7ではファイアウォールの設定がiptablesからfirewalldに変更となりました。
ファイヤーウォールの設定確認を確認してポートの状態を良好に保ちます。
WorDPressバックアップの設定
WordPressのプラグインBackWPupを使いました。
テーブル管理
HP内のテーブル管理にはTablePressプラグインを利用しました。
まとめ
静的HTMLで管理していたHPを、WordPressへ移行しました。その際に行った作業について記しました。
Apacheサーバー側の設定はなかなか個人では触る機会がないので勉強になりました。
WordPressはHP利用として汎用性・拡張性が高い半面、それなりに管理コストが必要なので導入については気を付けましょう。
雑記
後から知ったことですが、静的HTMLを提供するだけなら、静的サイトジェネレータを使うことを考えるといいかもしれません。
WordPressはセキュリティ周りの管理コストが意外とかかります。
実際、友人がサーバーを乗っ取られ、仮想通貨のマイニングが行われてしまった。という話を聞いています。
Markdown記法で手軽に書けるHugoがおすすめらしいです。