Wordpress構築メモ

# はじめに
単なる自分用のメモ書きです。
似た様な記事は、他の方も書かれていますが、自分でもやり方を纏めておこうと思った次第です。

今更な話題なので、余り見る価値は無いかと思います。

# 環境
OS : Ubuntu 18.04.1 LTS
PC : Virtual Box 6.0.4

# Ubuntuのアップグレード（念の為）

```console
sudo apt update
sudo apt upgrade
```

# Apacheのインストール

- Apacheのインストール

```console
sudo apt install apache2
```

その後、Apacheが動作していることを確認。
Webブラウザでlocalhostを指定し、Webページが出力されればOK。

# PHPのインストール

- phpのインストール

```console
sudo apt install php php-mysql php-mbstring
```

versionを指定するならこっち。

```console
sudo apt install php7.2 php7.2-mysql php7.2-mbstring
```


- phpがapacheで動作する事を確認

デフォルトでは、`/var/www/html`が、Apacheのルートディレクトリとなるため、そこにindex.phpを作り、下記のコードを書く。
（sudoを使わないとファイル作成、編集等が出来ないので要注意）

```php
<?php
    phpinfo();
```

phpinfoの画面が出てくればOK。

# phpinfoの画面が出てこないとき（GCEでインストールした時のトラブル）

Google Compute Engineでapacheをインストールした際に、phpinfoの画面が出て来ませんでした。
GCE上での解決方法を記載しておきます。
……とは言ったものの、本当に「解決した」だけで、根本的な対処では無いと思うのですが……。

`apache2ctrl -M`でモジュールを確認。php関連のモジュールが読み込まれていなさそうです。

```console
$ apache2ctrl -M
Loaded Modules:
 core_module (static)
 so_module (static)
```

`/etc/apache2/mods-enabled`内に、php関連の設定ファイルのシンボリックリンクを貼ります。

```console
$ sudo ln -s ../mods-available/php7.2.load ./php7.2.load
$ sudo ln -s ../mods-available/php7.2.conf ./php7.2.conf
```

因みに下記資料の内容を、そのまま実行しただけです。
apache2について勉強しないと駄目ですね……。

>参考資料
>http://gn000.sakura.ne.jp/blog/2018/05/07/001/

configtestを実行。

```console
$ apache2ctl configtest
[...省略...] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
<以下省略>
```

ApacheのMPMをマルチスレッドのworkerからpreforkに変更する事で解決する事にしました。
……と書いていますが、workerとかpreforkとは何かが解っておらず、情けない限りです。
これもそのうち勉強します……。

ざっくり言うと、mpm_event.confとmpm_event.loadを読み込ませず、変わりにmpm_prefork.conf、mpm_prefork.loadを読み込ませただけです。


```console
$ sudo rm mpm_event.*
$ sudo ln -s ../mods-available/mpm_prefork.conf ./mpm_prefork.conf
$ sudo ln -s ../mods-available/mpm_prefork.load ./mpm_prefork.load
```

これも、下記資料の内容を参考に実行しただけです。

>参考資料
>https://www.tokotokotekuteku.com/entry/2014/01/30/204607

apache2をrestart。これでもう一度phpinfoの画面を確認します。

```console
$ sudo service apache2 restart
```

# MySQLのインストール

- mysqlのインストール

```bash
sudo apt install mysql-server
```

- 起動確認

mysqladminや、systemctlで確認。
sudoを付けて実行しないとエラーとなります。

```console
$ sudo mysqladmin ping
mysqld is alive

$ sudo systemctl status mysql.service
mysql.service - MySQL Community  Server
...
 Active : active (runnning)
```

下記も駄目です。通りません。

```console:NG例
$ mysqladmin ping -u root -p
```

mysqlの初期化を実行します。
多分、全てYesでOKだと思います。（詳しくはググる）

```console
$ sudo mysql_secure_installation 
```

# MySQLのユーザ作成とデータベース作成

- 一般ユーザを作る

mysqlに一般ユーザを作っておきます。


wordpressがユーザ名、passwordがパスワードです。

```console
mysql> create user 'wordpress'@'localhost' identified by 'password';
```

一応、ユーザを確認します。
多分、下記のようになっているはずです。（出力は一部省略しています）

```console
mysql> select host, user from mysql.user
+-----------+------------+
| host      | user       |
+-----------+------------+
| localhost | wordpress  |
| localhost | root       |
+-----------+------------+
```

hostというのが、アクセス可能なホスト(IPアドレス)を示しています。
%は、全てのホストからアクセス可能である事を示します。

- データベースを作成する

```console
mysql> create database wordpressdb;
mysql> use wordpressdb;
```

`create database`はデータベース作成、`use`はデータベースへの接続コマンドです。

- 権限を与える

ユーザ`wordpress`に、データベース`wordpressdb`に接続する権限を与えます。
面倒なので、全ての権限が使える様にしておきます。

```console
mysql> grant all on 'wordpressdb'.* to 'wordpress'@'localhost';
```

権限が与えられている事を確認します。

```console
mysql> show grants for 'wordpress'@'localhost';
+-------------------------------------------------------------------+
| Grants for wordpress@localhost                                    |
+-------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wordpressdb'@'localhost'                   |
| GRANT ALL PRIVILEGES ON `wordpressdb`.* TO 'wordpress'@'locahost' |
+-------------------------------------------------------------------+
```

# wordpressのダウンロード

- `/var/www`の権限変更

一々、sudoと打ち込むのも面倒なので、`/var/www`の所有者を変更します。
[user]の部分には、自分のユーザ名を入れてください。これで所有者が自分に変わります。

```console
$ sudo chown -R [user].[user] /var/www
```

- wordpressのダウンロード

wordpressをダウンロードします。私はcurlで行いました。
その後、ファイルを展開し、全てのファイルを、html直下に移動させます。
展開する前に、余分なファイル（index.htmlやindex.php）は消しておきます。

```console
$ cd /var/www/html
$ curl https://ja.wordpress.org/latest-ja.tar.gz -O
$ tar -xvzf latest-ja.tar.gz
$ rm index.html index.php latest-ja.tar.gz
$ mv wordpress/* .
$ rmdir wordpress
```

Apacheの設定を変えて、wordpressディレクトリをルートディレクトリにすれば良いのでしょうが、面倒なのでこうしておきました。

- wp-config.phpの編集

wp-config.phpを編集します。
データベースの接続に関わる設定などは、この段階で実施しておきます。

設定方法は割愛します。

```console
$ cp wp-config-sample.php wp-config.php
$ vim wp-config.php
```

- wordpressへのアクセス

webブラウザを使い、サーバにアクセスします。
そうすると設定の続きを行うことが可能なので、必要な設定を行ってください。

# 最後に

自分用のメモなので、分かりづらい点はご容赦願います。

後、この内容は後日修正します。
GCE上で再度実行し直してみて、問題のある箇所を修正する予定です。