WordPress構築作業の備忘録

# 構築環境
- Win10-32bit版 Diginnos-StickPC-HDD32GB
- Apache2.4
- PHP8
- MariaDB10.5
- WordPress5.6

## Apache2.4のインストール
[公式ページ](http://httpd.apache.org/)から入手
インストール手順は、[こちら](https://www.adminweb.jp/)のサイトを参考に作業

### 任意パスに配置
仮にインストールパスを以下に設定
c:/Apache24 

### httpd.conf の内容を設定
c:/Apache24/conf/httpd.conf

#### ルートパスを指定
```
Define SRVROOT "c:/Apache24/"
ServerRoot "${SRVROOT}"
```
#### ポート番号を指定
```
Listen 80
```

#### ServerName を指定
```
ServerName localhost:80
```

## PHP8 のインストール
[公式ページ](https://www.php.net/)から入手
1. Downloads
2. Current Stable PHP 8.0.1 のWindows downloads 
3. VS16 x86 Thread Safe の zip をダウンロード ``※今回はWin-32bit版を入手``

### 任意のパスに配置
仮にインストールパスを以下に設定
``c:/php8``

### PHP.ini の設定を行う
``c:/php8/``に存在する``php.ini-development``をコピーして、``php.ini``にリネーム

#### extension_dir を編集する
```
;extension_dir = "./"
; On windows:
;extension_dir = "ext"
　　↓
extension_dir = "C:/php8/ext"
; On windows:
;extension_dir = "ext"

```
``※2個あるけど、今回は片方だけ設定した、絶対パスと相対パスの指定らしい``

#### 他のextension を編集する
```
;extension=gd
;extension=mbstring
　　↓
extension=gd
extension=mbstring
```
- ``gd ... 画像処理系のなんかを有効``
- ``mbstring ... マルチバイト文字列のなんかを有効``


### 環境変数の設定でPHP8にパスを通す
1. WindowsのエクスプローラからPCを右クリック
2. プロパティ
3. システムの詳細設定
4. 環境変数
5. システム環境変数の Path を編集
6. ``c:/php8`` のパスをリストに追加する

### PHPにパスが通ってるかチェック
1. Windows のスタートメニュー右のコルタナから、``cmd`` と入力してEnterを押下し、コマンドプロンプトを起動
2. コマンドプロンプト上で、``php -version`` と入力してパス通過をチェック

- 失敗時
 
```
'php' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
```

- 成功時

```
PHP 8.0.1 (cli) (built: Jan  5 2021 23:45:55) ( ZTS Visual C++ 2019 x86 )
Copyright (c) The PHP Group
Zend Engine v4.0.1, Copyright (c) Zend Technologies
```


## MariaDB10.5 をインストール
[公式ページ](https://mariadb.org/)から入手
1. Download
2. Architecture を32bit用(x86) に変更して msi パッケージでダウンロード
3. DLした msi を実行し、インストールを行う
インストール時の手順は[こちら](https://www.trifields.jp/how-to-install-mariadb-on-windows-2440)のサイトを参考に作業

### MariaDBクライアントを起動
スタートメニューからMariaDBクライアントを起動する
※コマンドプロンプトと同じ黒画面が起動する

### WordPress用のデータベースを作成する
- MariaDBクライアント上でコマンドを実行してデータベースの作成を行う

```
create database wordpressdb;
```
とコマンドを実行すると、wordpressdb の名称でデータベースが作成される

### 使用するDBをwordpressdb に切り替える
```
use database wordpressdb;
```

## wordpress をインストール
[日本語版公式ページ](https://ja.wordpress.org/)から入手
1. トップの``wordpressを入手``ボタンから入手する

### wordpressの構成を任意パスに配置
``c:/Apache24/htdocs``以下に``blog``フォルダを作成し、``wordpress``のファイルを配置
``c:/apache24/htdocs/blog/readme.html``の構成

### wordpressのconfigファイルを編集
1. ``c:/apache24/htdocs/blog/``以下に存在する``wp-config-sample.php``をコピーし``wp-config.php``にリネームする
2. 下記項目を設定する

```
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'database_name_here' );

/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'username_here' );

/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', 'password_here' );

/** MySQL のホスト名 */
define( 'DB_HOST', 'localhost' );

/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8' );

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );
```
- DB_NAME -> MariaDB で作成したデータベース名  ※今回は ``wordpressdb``
- DB_USER -> MariaDB のユーザー名、よくわからなかったので、とりあえず、``root`` を指定
- DB_PASSWORD -> MariaDB をインストールした際に設定した、パスワードを設定 ``**********``
- DB_HOST -> MariaDBを置いてるホスト名、``localhost``で良さげ、外部のDBを使う場合は、URLを指定とかになると思う
- DB_CHARSET -> MariaDB の設定で使用する文字コードの設定っぽい、よくわからんけど、まぁ良い


### 認証キーを設定する
phpファイル内に、自動生成のURLが記載されてるので、それを利用して作成したものを、張り付ける

```
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );
```

### WordPressの install スクリプトで、DBなど構成要素を作成する
Chrome等のブラウザで、 ``localhost:80/blog/wp-admin/install.php``にアクセスして、
ワードプレスの作成画面を起動しようと思ったら、以下のエラーが出て悩む

```
Fatal error: Uncaught Error: Call to undefined function mysql_connect()
```

#### php.iniの設定が不足していたので追加する
``c:/php8/php.ini``

```
;extension=mysqli
　　↓
extension=mysqli
```
- ``mysqli ... wordpressのDBでMySQL(MariaDB)を使うので有効``

#### Apacheの設定も不足していたので追加する
``c:/apache24/conf/httpd.conf``に設定追加

```
LoadModule php_module "C:/php8/php8apache2_4.dll"
PHPIniDir "C:/php8"
AddHandler application/x-httpd-php .php
```

#### 再度アクセスしてみるが症状が変わらない
```
Fatal error: Uncaught Error: Call to undefined function mysql_connect()
```
- php.ini と httpd.conf を更新したのに、apache のサービスを再起動してなかった

- apache サービスを再起動して、再度アクセスすると無事インストールスクリプトが起動して、インストールが完了

# トラブルシューティング
## 公開用URLにアクセスしても、ディレクトリ構成がブラウザに表示されてしまう
- 原因: apache の設定が不足していた
apache の httpd.conf の設定に以下の項目があるので設定が必要

``index.htmlの他に、index.php も呼び出せるようにしておく必要があったみたい``

```
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
　　↓
<IfModule dir_module>
    DirectoryIndex index.html
    DirectoryIndex index.php
</IfModule>
```

``設定して、apache サービスを再起動して、アクセスすると、トップページが表示された。``
(2021/01/11 追記)

## WordPressのテーマやプラグインのインストールに失敗する
- 原因: PHP.ini の設定が不足していたので、下記の設定を追加

```
extension=php_curl.dll
extension=php_openssl.dll
```

(2021/01/24 追記)

## プライベートネットワーク上にある別マシンからWordPressにアクセスすると上手く接続できない
- 原因: WordPressのサイトアドレスの設定に``localhost``が含まれる形になっていたのが問題<BR>別PCでアクセスすると、localhost のせいで、自身のマシン上にアクセスしようとしておかしくなってた。

(2021/01/24 追記)