Ubuntu18.04にWordPressのローカル環境をつくる

WordPressを触ってみたかったので、ローカルの環境をつくったときのメモ

## 動作環境
Ubuntu18.04
## 今回すること
ホームページを公開するのではなく、ローカルでの環境を整えます。(ホームページを公開するにはサーバー契約とかドメイン取得とかが必要)
phpとかMariaDBとかもついでにインストールします。
ゴールは下のようなWordPressの管理画面になることです。![Screenshot from 2020-03-07 23-36-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/cd0984fa-02d3-3240-b8e6-266dd9c6b6ad.png)

## WordPressとは
ググってみたらたくさん出てくると思います。
>WordPressは、オープンソースのブログソフトウェアである。PHPで開発されており、データベース管理システムとしてMySQLを利用している。単なるブログではなくコンテンツ管理システム としてもしばしば利用されている。- ウィキペディア

ブログとか企業のホームページをつくるのに便利らしいです。はい。

## それでは作業開始
### タイムゾーン変更
PHPでサポートされているタイムゾーンを設定しないといけないらしいです。

```shell
sudo su -
timedatectl set-timezone Asia/Tokyo
```
`sudo su -`は管理者として操作するコマンドです。
これによってターミナルの`username@hostname:~$`が`root@hostname:~#`になります。（`exit`でもとのユーザーに戻れます）

以降は管理者権限で実行していくので`sudo`をつけなくてもいろいろinstallできます。

### Apacheのインストール
ubuntu上にwebサーバーをたてられるようにします。

```shell
apt -y install apache2 
systemctl enable apache2
systemctl start apache2
```
ブラウザでubuntuのIPアドレスにアクセスすると、画像のようなApacheの画面がでると思います。
(画像をとるときに`Shift+PrintScreen`で範囲指定してスクショできることを知った。)
![Screenshot from 2020-03-07 20-13-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/8a4e4fee-0e69-e85d-6413-5584f1dad570.png)
ちなみに、IPアドレスがわかんないって人は、
ubuntuの右上のwifiマーク ▷ wifi ▷ WiFi Setteingsに移動して現在接続しているwifiの歯車マークから確認できます。

### PHPのインストール
ubuntu18.04のリポジトリではphp7.2が最新っぽいのでそれをインストールします(php7.3以降は外部リポジトリからインストールしていくみたいです)

```shell
apt -y install php7.2 php7.2-mysql
```

### MariaDBのインストール

```shell
apt -y install mariadb-server mariadb-client
systemctl enable mariadb
systemctl start mariadb
```
PHP同様、10.1が最新っぽいです。
ちなみに自分は

```
sudo apt search -n [package名]
```
とか

```
sudo apt list --all-versions [package名]
```
で、パッケージの種類とかバージョンとかを確認しています。
### WordPressのインストール
やっとこいつがやってきました。
あとからわかったんですが、wordpressってphpファイルとかの塊なんですね。
まずはDocumentRoot配下に公式サイトからダウンロードしたwordpress最新版をおきます。(管理者権限からも出ておきます)

```:wordpressのdownload
exit
cd /var/www/html
sudo wget https://ja.wordpress.org/latest-ja.tar.gz
sudo tar xvf latest-ja.tar.gz
```

>DocumentRootってなんだ？と思って調べてみたら、Apacheでたてたwebサーバーにアクセスしたときに返されるファイルを置いとく場所らしいです。

さらにこれらのファイルをApache側から編集できるようにユーザーとグループの所有権を変更しておきます。ダウンロードしたのはもういらないので削除します。

```:権限変更＆不要ファイル削除
sudo chown -R www-data:www-data .
sudo rm latest-ja.tar.gz
```
最後に、展開したあとにできる`wordpress`というディレクトリをプロジェクト名(自分の場合、syu-kwskとか)に変更します。

```
sudo mv wordpress/ [プロジェクト名]
```
webブラウザで`http://[ipアドレス]/[プロジェクト名]/`にアクセスすると、画像のようになればインストール成功です。
![Screenshot from 2020-03-07 22-40-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/7c0824ce-0bbc-7d7a-c198-dfb35699dff1.png)
環境構築とかの時に、こういうデフォルトページがでると「あざす」ってなる（伝われ）

### WordPress用のDB作成
wordpressはブログとかに使われるため、データベースの設定が必要です。
今回は端末からデータベースを作成し、webブラウザの設定画面から接続することにします。

さきほどインストールしたMariaDBにwordpress用データべースとそのデータベース**専用**のユーザーをつくります。(データベースを操作するのはwordpress側だけだからですね)

```:detabase作成
/var/www/html$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 116
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE [データべース名] DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
```
[データベース名]は`test_db`とかにしました。次にユーザーをつくります。

```:datbaseのuser作成
MariaDB [(none)]> GRANT ALL ON [データベース名].* TO [ユーザー名]@localhost IDENTIFIED BY '[パスワード]';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
```

ユーザー名は`test_user`とかにしました。
**ユーザー名、パスワードなどはあとでブラウザからDB接続する際に必要です**
1個目でデータベースの特権ユーザーを作成し、次の`FLUSH PRIVILEGES`でその設定を反映してるらしいです。
「ブログのデータベースにアクセスできるのは特権ユーザーのみにするよ」ってことだと思います。

### ブラウザからDB接続
さきほどの画面
![Screenshot from 2020-03-07 22-40-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/7c0824ce-0bbc-7d7a-c198-dfb35699dff1.png)
の`さぁ、始めましょう！`をクリック。さぁ、始めましょう。
![Screenshot from 2020-03-07 23-24-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/d3f765cd-dff1-f55f-1360-6571976c9ea0.png)
ここでは、端末で作成したデータベースの情報を入力します。そして`送信`
![Screenshot from 2020-03-07 23-26-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/22dabf09-5efa-6170-1dc3-286dc4e499de.png)
`インストール実行`。（エラーになったら画面の指示に従ってください。多分、入力ミスです）
![Screenshot from 2020-03-07 23-28-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/fae143c0-a2dd-a81d-b150-480219965966.png)
最後に、wordpressで作成するwebページの設定を行います。
サイトのタイトル、ユーザー名、パスワードなどはDBとは別です。好きなように設定してください。
あと、**今回は公開などしないので、一番最後の`検索エンジンでの表示`のところからサイトをインデックスしない**ようにしてください。
ここまできたら、`WordPressをインストール`し、そのまま画面の指示に従ってログインします。
![Screenshot from 2020-03-07 23-36-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517356/cd0984fa-02d3-3240-b8e6-266dd9c6b6ad.png)
こうして、上のような画面になりました。
最初の目的は達成です。お疲れ様でした。

## test_dbとかtest_userとか直したい
ここから、本題とは離れます。
この記事を書いている時に、
「あっ、スクショしてなかった。wordpressの設定やりなおしたいな」
と思ったので、それを書きます。
実際はユーザー名を試しでやった人とか普通にミスっちゃった人にもあてはまると思います。
### すること
普通、wordpressでは公開する前にバックアップとか色々用意するみたいなのですが、今回はローカルで公開しないのですごく単純です。
やることは次の２つ

+ mariadbのdatabaseとuserを削除
+ DocumentRoot配下のプロジェクトディレクトリを削除

ひとつずついきます。
#### mariadbのdatabaseとuserを削除
まずはmariadbを実行して、databaseとuser一覧を確認

```:databaseとuserの確認

$ sudo mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 112
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SELECT user, host FROM mysql.user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| root      | localhost |
| test_user | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test_db            |
+--------------------+
4 rows in set (0.00 sec)
```
はい、ちゃんとありますね。つぎに削除

```:databaseとuserの削除
MariaDB [(none)]> DROP DATABASE test_db;
Query OK, 12 rows affected (0.13 sec)

MariaDB [(none)]> DROP USER test_user@localhost;
Query OK, 0 rows affected (0.00 sec)
```
おぉ、めっちゃ簡単！
#### DocumentRoot配下のプロジェクトディレクトリを削除
```:プロジェクト削除
cd /var/www/html/
sudo rm -rf [プロジェクト名]
```
そのままです…。

おわり！！

## 参考
お世話になりました。ありがとうございました。
[【 apt 】コマンド（応用編）――パッケージを検索する](https://www.atmarkit.co.jp/ait/articles/1709/01/news025.html)
[ドキュメントルート(DocumentRoot)](https://www.adminweb.jp/apache/docroot/index1.html)
[MariaDB コマンドまとめ その1](https://qiita.com/met_ganchan13/items/4a26bc419eea8f642b44)
[常識としてのMySQL（MariaDB）入門〜インストールから基本操作まで・Mac編〜](http://swiftfe0.hatenablog.com/entry/2017/10/15/095739)
[chown - ファイルの所有者やグループを変更 - Linuxコマンド](https://webkaru.net/linux/chown-command/)
[Ubuntu 18.04 LTS に WordPress 5.3 をインストール](https://qiita.com/cherubim1111/items/265cfbbe91adb44562d5)
[《WordPress》Ubuntu 18.04 に WordPress をインストールする方法](https://color-code.net/post-1586)