静的HTMLからWordPressへの移行の話

# 概要
静的HTMLで管理していたHPを、WordPressへ移行しました。
その際に行った作業について記します。

# 移行にあっての要求
<b>1.  静的HTMLファイルの直接の書き換えを楽にしたい</b>

* 表を逐一エディタで編集してFTPソフトで送信するなど手間がかかる
* メニューやヘッダーなど共通部分の更新を一括に変更したい
* 更新項目をトップに乗せるのを自動化

<b>2. モバイル対応をしたい</b>

* モバイルファーストが叫ばれている中、固定レイアウトだけのHPは既に過去の遺物

<b>3. 管理コストは軽くしたい</b>

* いろいろ独自で作ってもいいけど、属人化しそうなので、なるべく誰でも管理できるように
* アプリケーションに関する情報が豊富で学習コストがかからない

# 要件
<b>1. WordPressへの移行</b>

* ブラウザ上での編集
* テーブル管理を楽に
* モバイル対応(メジャーなテーマを利用すれば普通対応している)
* セキュリティ周りの設定

<b>2. ドメインの移行</b>

* 旧サイトの情報も参照ができるようにする
* サブドメイン周りの設定をちゃんとする


# 環境情報の確認

```
OS: CentOS 7.4
Webサーバー: Apache 2.4.6
DNSサーバー: Bind
```
### 確認方法
* [CentOS、UbuntuなどLinux OSのバージョン確認をするコマンド -UX MILK](https://uxmilk.jp/13610)
* [Apacheのバージョン確認方法 -CentOSサーバ構築術 文具堂](https://centos.bungu-do.jp/archives/6)
* [DNS BINDバージョン確認コマンド -Qiita](https://qiita.com/na0AaooQ/items/14a42a3353f4a42d2673)


# 作業

## 1. VirtualHostの設定
既存のHPのドキュメントルートと、WordPressの置かれているディレクトリが異なります。
従って、同じIP内で、ドキュメントルートを複数に分ける方法として<b>VirtualHost</b>をつかいます

* [1台のApache Web Serverに複数のドメインを設定する](https://qiita.com/terrym/items/ba988394fbe6099b4485)
* [CentOS 7 の Apache httpd 2.4 に VirutalHost の設定をする手順](https://weblabo.oscasierra.net/apache24-centos7-virtualhost/)

Apacheの設定ファイルは、基本の設定ファイルhttp.confと、http.conf内で読み込まれる個別モジュールに分かれます。


``` http.conf
/etc/httpd/conf/httpd.conf 
```

``` ****.conf
/etc/httpd/conf.d/***.conf
```


モジュールはhttpd.confにおいて、拡張子.confであるものがインクルードされます。

``` apache:httpd.conf
# Load config files in the "/etc/httpd/conf.d" directory, if any.
Include /etc/httpd/conf.d/*.conf
```

新たに.confファイルを作成し、各種設定をしました。


```  apache:new.httpd.setting.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以外のサブドメインを正規表現で条件付けしてリダイレクトするよう設定しました。

* [もっとhttpd.confの設定](http://www.nina.jp/server/redhat/httpd/httpd_conf.html)
* [【mod_rewrite】RewriteCondとは？](http://ysklog.net/mod-rewrite/rewrite-cond.html)

## 2. WordPressの設定

次にWordPressは多く使われる反面、セキュリティの脆弱性が突かれやすいのでちゃんと管理する必要があります。

<b>サイトヘルスの問題の修正</b>

WordPress5.2から追加された機能で、WordPress内のセキュリティの設定や各言語などのバージョンをチェックし点数(パーセント)を算出してくれます。

今回はそれに従い修正を加えました。


* PHPの更新
    * [CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説](https://blog.s-giken.net/369.html)
    * [CentOS7 でphp7.3へのバージョンアップ手順](https://kekaku.addisteria.com/wp/20190301193909)

<b>.htaccessの制御</b>

httpd.confで設定していない、WordPress内個別のファイルやIPの制限を行いました。

* [WordPressのセキュリティを高める.htaccessの設定](https://hacknote.jp/archives/35550/)


<b>メールアドレスのみのログイン</b>

ログインにおいてブルートフォース攻撃の脅威を下げるために追加しました。
```wp-content > themes > lightning > functions.php```に追記します。

テーマ内のファイルに追記するので、テーマのアップデートすると変更がなくなる点に注意です。

* [WordPressのログイン認証をユーザー名ではなくメールアドレスのみ許可する](https://wemo.tech/1915)


<b>CentOSのファイアウォール設定:firewalld</b>

CentOS7ではファイアウォールの設定が<b>iptables</b>から<b>firewalld</b>に変更となりました。
ファイヤーウォールの設定確認を確認してポートの状態を良好に保ちます。

* [5分で終わらせるCentOS7のfirewalld設定](https://qiita.com/haminiku/items/56fcb578d86abcd0b571)


<b>WorDPressバックアップの設定</b>

WordPressのプラグインBackWPupを使いました。

* [BackWPup -WordPress.org](https://ja.wordpress.org/plugins/backwpup/)
* [WordPressでバックアップを取る4つの方法（初心者向け）](https://saruwakakun.com/html-css/wordpress/backup)


<b>テーブル管理</b>

HP内のテーブル管理にはTablePressプラグインを利用しました。

* [TablePress -WordPress.org](https://ja.wordpress.org/plugins/tablepress/)
* [WordPress TablePressの使い方【更新】](https://book7.coresv.com/wordpress-tablepress)

# まとめ
静的HTMLで管理していたHPを、WordPressへ移行しました。その際に行った作業について記しました。

Apacheサーバー側の設定はなかなか個人では触る機会がないので勉強になりました。

WordPressはHP利用として汎用性・拡張性が高い半面、それなりに管理コストが必要なので導入については気を付けましょう。



# 雑記
後から知ったことですが、静的HTMLを提供するだけなら、<b>静的サイトジェネレータ</b>を使うことを考えるといいかもしれません。
WordPressはセキュリティ周りの管理コストが意外とかかります。

実際、友人がサーバーを乗っ取られ、仮想通貨のマイニングが行われてしまった。という話を聞いています。
Markdown記法で手軽に書けるHugoがおすすめらしいです。

:point_right_tone2: [Hugo で静的なサイト・ブログを構築しよう](https://qiita.com/peaceiris/items/ef38cc2a4b5565d0dd7c)