【初心者向け】VMwareでLAMP環境を構築して、WordPressを表示させる

# はじめに
VMwareを使用してLAMP環境とWordPress環境を構築している記事があまりなかったので、私が書きます。またLAMPが何か、WordPressとは何かといった解説はしておりません。あくまで構築のみになります。ご注意ください。

※作業は全てroot権限で行っております。

# この記事の対象者
・VMware初心者の方
・LAMP、WordPress環境を構築したことがない人
・練習としてLAMP、WordPress環境を構築したい人

# 構築環境について
特にバージョンを指定したわけではありませんが、一応記述しております。

VMware Workstation Pro
CentOS Stream 9
Apache/2.4.57
MariaDB Server 10.5.22
PHP 8.0.30

# VMware
・左上のアクティビティよりターミナルを選択し開きます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839978/68b52a39-65a1-7bbd-f2a3-e5927383f8d1.png" width=80%>

・事前準備としてroot権限になります。またIPアドレスも把握しておきます。
```
sudo su -
hostname -I
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839978/ea441519-fafe-2f81-f027-747ba8a85ab2.png" width=80%>


# ●Apache
・Apacheをインストールします。
```
# yum -y install httpd   
# httpd -v
```
・Apacheを起動し、自動起動設定を行います
事前に `systemctl status httpd` を行うとより理解が深まります。
```
# systemctl start httpd
# systemctl enable httpd
```
・Apacheが起動していることを確認します。
```
# systemctl status httpd
```
・.htaccessファイルの設定が有効になるように内容を変更します。
※今回は行っておりませんが、confファイルを操作する場合はなるべくコピーを取った方が安全です。
```
# vi /etc/httpd/conf/httpd.conf
```

`【Directory "/var/www/html"】内の`
AllowOverride none
↓
AllowOverride All
に変更します。


・次にファイアウォールでhttp通信を許可後、永続化します。
```
# firewall-cmd --permanent --add-service=http
success
# firewall-cmd --reload
success
```
ファイアウォールで許可されているか確認します。
```
# firewall-cmd --list-service
cockpit dhcpv6-client http ssh
```

・この時点で自身のIPアドレスを叩くとApacheの画面が表示されるはずです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839978/99564579-9d97-ddce-f98c-3d6de5de2756.png" width=80%>

# ●MariaDB
今回WordPress用で使用する内容は下記のものとします。

| 項目 | 内容 |
|:-:|:-:|
| DB名  | wordpress  |
|  ユーザ名 | user  |
| パスワード | pass  |

・インストール
```
# yum -y install mariadb-server mariadb
```

・Apache同様、MariaDBサーバーを起動し、自動起動を有効化します
```
# systemctl start mariadb
# systemctl enable mariadb
```

・セキュリティ強化のための初期設定を行います。
```
# mysql_secure_installation
```
:::note info
●聞かれる項目
・Enter current password for root (enter for none):
・Switch to unix_socket authentication [Y/n]
・Change the root password? [Y/n]
・Remove anonymous users? [Y/n]
・Disallow root login remotely? [Y/n] 
・Remove test database and access to it? [Y/n] 
・Reload privilege tables now? [Y/n]
:::


・MariaDBに接続します。
```
# mysql -u root -p
```

・接続後、上記で定義しているWordPress用のDBとユーザを作成します。
```
mysql> CREATE database wordpress;
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "user"@"localhost" IDENTIFIED BY "pass";
```
権限情報を更新し、終了します。
```
mysql> FLUSH PRIVILEGES;
mysql> exit;
```

# ●PHP


パッケージをダウンロードします。
```
# yum install php php-devel php-mysqlnd php-mbstring php-pdo php-gd
```
:::note info
●パッケージ説明
php: PHPの実行環境を提供
php-devel: PHP拡張の開発に必要なツールを提供
php-mysqlnd: MySQLデータベース接続用の拡張機能
php-mbstring: マルチバイト文字列操作用の拡張機能
php-pdo: データベース接続用の抽象化インターフェース
php-gd: 画像処理用のGDライブラリ拡張
:::
・バージョン確認により、インストールを確認できます。
```
# php -v
```

・ダウンロード後に一度Apache再起動します。

```
# systemctl restart httpd
```

・Apacheのドキュメントルート配下にphpファイルを記載して動作確認を行います。
```
# vim /var/www/html/test.php
```

```php: test.php
<?php
    echo phpinfo();
?>
```
`自分のIPアドレス/test.php`
でURLを叩くとPHPのページが表示されます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839978/138ea723-861f-9678-1b71-a1c0987a92a6.png" width=80%>


# ●WordPress
・WordPressをtmpフォルダにダウンロードし、解凍

```
# cd /tmp
# wget https://ja.wordpress.org/latest-ja.tar.gz
# tar -xzvf latest-ja.tar.gz
```

・解凍したものをApacheのドキュメントルートに移動させ、移動します。
```
# mv wordpress /var/www/html/
# cd /var/www/html/wordpress
```
・wp-config-sample.phpからwp-config.phpを作成後、編集します。
```
# mv wp-config-sample.php wp-config.php
# vim wp-config.php
```

内容を下記のとおりに変更する。
```
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** Database username */
define( 'DB_USER', 'user' );

/** Database password */
define( 'DB_PASSWORD', 'pass' );
```


SELinuxの状態を確認します。
```
# getenforce
  Enforcing
```
色々と面倒なLinuxSEを切ります。
enforcingをdisabledにします。
```
# vi /etc/selinux/config

SELINUX=enforcing
↓
SELINUX=disabled

```



設定反映のためサーバを再起動します。
```
# reboot
```
無効化を確認
```
# getenforce
  Disabled
```

`自身のIPアドレス/wordpress`
でURLを叩くとWordPressの設定画面に飛ぶはずです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839978/580e7f3c-3fa1-8271-fe4d-de34f2c4522c.png" width=80%>


# 終わりに
私の専門がプログラミングのため、インフラ構築は至らない面がありますが、社内SEになってくるとそうも言ってられなくなってきたので、今回はいい勉強になりました。