LAMP環境構築手順: 仮想環境

# LAMP構築: Linux仮想環境作成 by Virtual Box
よくLAMPの仮想環境作成するので手順をまとめてみました。
多分Vagrantとか使ったらいいんでしょうけど、いろんな仮想環境を構築するのでなれもふくめて、まとめていきます。

手順通りにやれば1時間以内には終わると思います。
環境依存かもしれないのでisoファイルは似た感じのを使ったほうが苦労は少ないかと。

## 準備
[VirtualBoxのインストール](https://www.virtualbox.org/wiki/Downloads)
[isoファイルのダウンロード](http://ftp.riken.jp/Linux/centos/7/isos/x86_64/)
今回使用するisoはCentOsのMinimalを使用しています。

## 仮想環境の作成
### VirtualMachineを作成
- タイプ: Linux
- Version: RedHat(64bit)

それ以外の部分はOkOkOKで大丈夫です。

### VirtualMachineの設定
- Network: **ブリッジアダプター**


### 起動
マウスで操作できなければ、気合でTabを駆使して頑張ってください。
1. ディスクの選択: CentOS-7-x86_64-Minimal-1810.iso
2. **INSTALLATION DESTINATION** を選択して、**Done** で戻ると **BeginInstallation** が選択できる。
3. **root password** を設定する。
4. しばらくまつ。
5. **Reboot** ボタンが押せるようになると思うので、それで再起動しましょう

## Linuxの設定
**root** ユーザでloginしてください。

### Network接続
**nmtui**を起動します。

```bash
nmtui
```
1. Edit a connection
2. enp0s3(一個しかないはず) > Edit
3. **Automatically connect** をTrueにする(SpaceでOn/Off切り替えができる)
4. Ok押して、Quitする。

### YumのUpdate
yumのUpdateが行えたら、Networkに接続できてます。

```bash
yum -y update
```

Centさんが頑張ってくれます。長いので気長に待ちましょう...

とりあえずこれで、仮想環境の作成ができました。
次は、Apacheのインストールにまいりましょう。

# LAMP構築: ApacheのInstallataion
ではではApacheをインストールしていきたいと思います。
Apacheのインストールは簡単ですが、SelinuxやFirewallなどに躓くことがあります。
できるだけ楽してやっていきましょう

## Apacheのインストール

```bash
# apacheのインストール
yum -y install httpd
# apache serverの起動を永続化
systemctl enable httpd
```
これだけです。簡単ですね。
つぎが最初のころにはまる問題点だと思います。

## Security関係
初期状態だとApacheServerを起動してもアクセスできないので、
設定を行っていきます。

### firewallにhttpserviceを追加
ファイヤ―ウォールさんが **http** の接続をはじいちゃいますので、
**http** をはじかないように設定しましょう。

```bash
firewall-cmd --zone=public --permanent --add-service http
```

### Sellinuxの無効化
本番環境では無効にしてはいけないのですが開発環境なので、無効にするのが楽なので無効にしてしまいます。

**vi** で **/etc/selinux/config** 編集しましょう。
viはLinuxのエディターです。
**i** を押すと編集モードに、**esc** でコマンドモードになります。
編集が終わったらコマンドモードで　**:wp**　と入力し保存しましょう

```bash
vi /etc/selinux/config
```

```text:/etc/selinux/config
SELINUX=disabled
```

では設定の反映のため再起動します。

```bash
reboot
```

### Chromeで表示
ではChromeでちゃんとアクセスできるか確認しましょう。

#### Statusの確認
再起動がおわればそれぞれのStatusを確認しましょう

```bash
getenforce
service httpd status
```

- getenforce
  - **Disabled** と表示されればOKです
- service httpd status
  - **Active: active (running)** と表示があればOKです。

#### サイトにアクセス
では実際にWebサイトにアクセスしましょう。

まず **ipaddress** を確認します。

```bash
ip -a
```

**enp0s3:** のsectionにある、これっぽいなーってやつがadressです。(最後が255とかやないやつ)
例: 192.168.1.100

そのアドレスをChromeのurlに打ち込みましょう。


**Testing 123...**　


と表示されれば接続できてますねー。

#### 表示内容の編集
apacheの初期設定では、**/var/html/**　がserverのルートDirectoryです。
そこの **index.html**　を最初に参照します。
実際にindex.htmlを作成して、サイトの表示が変わるか試してみましょう。

```bash
echo "Hello World" > /var/www/html/index.html
```

これで **/var/www/html/index.html** に **Hello World** と書き込まれました。

ChromeをReloadして 

**Hello World**　

と表示されれば成功です。

以上でApacheのInstallationが完了しました。

次はPHPのInstallationに進みましょう！



# LAMP構築: PhpのInstallation
ではではPHP7をインストールしていきたいと思います。

## Php7のインストール
デフォルトではyumにphp7が入ってないみたいなので、
yumでインストールできるようにRepositoryを追加してから。
PhpとPhpの基本Libralyをインストールしていきます。

```bash
# install php7 repo at yum repository.
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

#install php7
yum install -y --enablerepo=remi,remi-php74 php php-gd php-pdo php-mbstring php-xml php-mysql
```

インストールができたらApacheを再起動します。

```bash
service httpd restart
```

## 動作確認
では、実際にPhpが動くか確認しましょう。
**/var/www/html/**　に **php_info.php** を追加してChromeで表示してみます。

```bash
echo "<?php phpinfo();" > /var/www/html/php_info.php
```

ではChromeでアクセスしてみましょう。
URLに **[ipadress]/php_info.php**　でアクセスできます。
例: 192.168.1.100/php_info.php

Phpの情報がずらーと表示されればOKです。

これでphpもインストールすることができました！


次はmysqlですね。



# LAMP構築: MySqlのInstallation
ではではMySql8をインストールしていきたいと思います。
個人的には最難関。間違ってMysql5をインストールしてからMysql8に戻すとかする時に、ちょっとつかれる...
ここらへんで **VirtualBoxのSnapshot** に保存とかしとくといつでも戻れるのでチャレンジしやすいかもです。

## MySql8のインストール
デフォルトではyumにmysqlが入ってないみたいなので、
yumでインストールできるようにRepositoryを追加してから,
MySql8をインストールしていきます。

[最新のMySqlのRepositoryを確認しましょう](https://dev.mysql.com/downloads/repo/yum/)
**/mysql80-community-release-el7-3.noarch.rpm** の部分を最新のに合わせてください。

```bash
# add mysql-community-server repo at yum repository
yum -y install http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# install mysql server
yum -y install mysql-community-server
```

Centさんがめちゃくちゃ頑張ってくれます。
長いので、猫と戯れるなりして気長に待ちましょう...

## MySqlの起動
では実際に起動しましょう

```bash
# mysqlの起動永続化
systemctl enable mysqld
# mysqlの起動
systemctl start mysqld
# statusの確認
systemctl status mysqld
```

これで **Active: active (running)** になっていればOKです。

## MySqlの初期設定

### 初期パスワード
まず**root**ユーザーが作成されているので、rootユーザーの初期パスワードを入手しましょう

```bash
cat /var/log/mysqld.log | grep root
```
A temporary password is generated for root@localhost: **xxxxxxxxx**
**xxxxxxxxxx** の部分が初期パスワードです。

基本はこれで出てくるはずなんですがもしなんか出てこないとなったら[ここを参照してください](http://www.petatec.co.jp/achives/495/)
参照先の **my.cnf** は **/etc/my.cnf** のことです。

### 自動設定
では初期設定を行います。
**mysql_secure_installation** を使用して設定します。

```bash
mysql_secure_installation
```
1. パスワードを聞かれるのでゲットした初期パスワードを入力しましょう。
2. 新しいパスワードを設定してください。
3. それ以外はすべてEnterを押していけばOKです。


### パスワード認証方式の変更
Mysql8のパスワード認証方式にPHPが対応していないので対応している認証方式に変更します。

```txt:/etc/my.cnf
[mysqld]
default-authentication-plugin=mysql_native_password
```

すべての設定が完了したらMySqlを再起動しましょう

```bash
systemctl restart mysqld
```

## MySqlにアクセス
ではrootユーザでアクセスしてみましょう。
下記のコマンドを実行してパスワードを聞かれるの入力してください。

```bash
mysql -u root -p

# アクセスできるとコマンドラインの最初に mysql>と表示される
# databaseの一覧を表示
mysql>show databases;

# できたらquitしましょう
mysql> quit
```

これでMysqlのInstallationが完了しました。

## まとめ
以上LAMPの環境構築でした。
LAMPの環境構築は始めてやるとはまりまくりますが、黒い画面になれるためにも一度一からやってみると勉強になりますよね。

仮想環境はめちゃくちゃ便利なのでぜひ活用していきたいと思います。
なんか変になったら消せばいいし、SnapShot機能もあるので戻せますし。

次は復習がてらにPhpの自作WebFrameworkを作ろかと思います。
ではその時に会いましょう。