【初心者の方向け】さくらのクラウドでLAMP(CentOS7.x + Apache2.4 + MariaDB10.x + PHP7.x)環境構築から基本設定までの手順　PART2 (コマンド操作編)

# 概要
「さくらのクラウドでLAMP環境を構築したい」「インフラ初心者」「初心者でないが苦手なほう...」という方向けに簡単な手順書を作成してみました。
初心者の方向けなので、インフラ構成はシンプルなものにしています。
手順に従って作業していけばLAMP環境ができると思うので、ハンズオン的に使っていただければ幸いです。
※全ての動作を保証するものではないため、その点ご了承ください。
※さくらのクラウドのOS仕様などで、「設定すべきものが既に設定されている」ものについては割愛します。
※詳細なセキュリティ設定などは割愛しています。本番環境を構築される際は、運用する環境や搭載するシステムの仕様にあわせて追加設定が必要な場合があります。

手順書のボリュームがあるため、
PART1：さくらのクラウド操作編(https://qiita.com/happy41111/items/394a17536a45a2226f4a)
PART2：コマンド操作編 **※本記事**
の2本立てとしています。

# 構築する環境
WEBサーバ：2GB/2仮想コア
ディスク：20GB SSDプラン
OS：CentOS7.5 64bit
WEB：Apache2.4
DB：MariaDB10.2 10GBプラン ※さくらのクラウドのデータベースアプライアンスを利用。
その他：PHP7.1

構成図：
<img width="712" alt="pic1.png" src="https://qiita-image-store.s3.amazonaws.com/0/269537/3971e5c9-00b8-1f5e-1fb6-cbca77331d57.png">

# 全体手順　※PART2では2以降の手順を記載。「1.さくらのクラウド」はPART1に記載。
1.さくらのクラウド
　　　　① WEBサーバを作成
　　　　② ローカルスイッチを作成
　　　　③ DBサーバを作成
　　　　④ WEBサーバとローカルスイッチの接続(NIC追加)
　　　　⑤ 接続確認
2.CentOSのセットアップ
3.Apacheのセットアップ
4.PHPのセットアップ
5.WEBサーバからDBサーバに接続できるよう設定

# 2.CentOSのセットアップ
以降はコマンド実行系の作業が中心になってきます。
まずはターミナル、コマンドライン、コマンドプロンプトなどを立ち上げる。

WEBサーバにSSH接続する。「xxx.xxx.xxx.xxx」の箇所にはWEBサーバのグローバルIPアドレスを入力する。

```terminal
ssh root@xxx.xxx.xxx.xxx
root@xxx.xxx.xxx.xxx's password: 
```

※入力するIPアドレスは以下の赤枠に記載されているものを利用する。このIPアドレスはグローバルIPアドレスと呼び、基本的にインターネット上からアクセスが可能。
<img width="1271" alt="pic53.png" src="https://qiita-image-store.s3.amazonaws.com/0/269537/967fad14-a47f-1cad-d079-1fec50b78032.png">

### 開発用ユーザを作成

ユーザを作成し、パスワードを設定。

```terminal
# useradd　userA
# passwd userA
New password:xxxxx
Retype new password:xxxxx
passwd: all authentication tokens updated successfully.
```

ユーザ一覧にuserAがいるか確認。

```terminal
# cat /etc/passwd
```

### 開発用ユーザにsudo権限を付与
userAをwheelグループに追加。

```terminal
# usermod -G wheel userA
```

「%wheel ALL=(ALL) ALL」がコメントになっている場合、コメントを外す(行頭の#を外す)。
それにより、開発用ユーザ(wheelグループに所属しているユーザ)にsudo権限を付与することができる。
※「sudo権限」とは一般ユーザがroot権限を利用してコマンド実行できるというもの。
※ sudo権限を利用する際は、コマンドの先頭に「sudo」をつけて実行する。


```terminal
# visudo

%wheel ALL=(ALL) ALL
```

### 開発用ユーザにsu権限を付与
「auth required pam_wheel.so use_uid」がコメントになっている場合、コメントを外す(行頭の#を外す)。
それにより、開発用ユーザ(wheelグループに所属しているユーザ)にsu権限を付与することができる。
※「su権限」とは一般ユーザがrootになる(ログインする)ことができるというもの。su権限があるユーザでsuコマンドを実行しても、rootのパスワードを知らないとrootになることはできないため注意。

```terminal
# vi /etc/pam.d/su

auth            required        pam_wheel.so use_uid
```

### yumのアップデート(パッケージの更新)

```terminal
# yum -y update
```

# 3.Apacheのセットアップ
## インストール

```terminal
# yum install httpd
```

## 自動起動設定
自動起動するようにしないと、サーバ再起動時にサービスが自動で起動しない。毎回、手動起動する必要がある。

自動起動設定を確認。

```terminal
# systemctl is-enabled httpd
```

↑の結果が、enableなら自動起動するよう設定されている。disableなら以下のコマンドで有効にしておく。

```terminal
# systemctl enable httpd
```

## firewallの設定
HTTP(port80)アクセスを許可。

```terminal
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --reload
```

## Apache起動
以下コマンドの「start」の箇所を「stop」に変えると停止、「restart」に変えると再起動という動きになる。

```terminal
# systemctl start httpd.service
```

## 動作確認
### Apacheのステータス確認
エラーのような表示がないか念のため確認する。

```terminal
# systemctl status httpd
```

### Apacheのバージョン確認

```terminal
# httpd -v
```

### 接続確認

WEBブラウザからApacheにアクセスする。

http://(SSH接続で使用したWEBサーバのグローバルIPアドレス)

以下のような画面が表示されればOK。
<img width="1163" alt="pic54.png" src="https://qiita-image-store.s3.amazonaws.com/0/269537/6333d8ad-0b94-4d53-88f1-61e20ad051ed.png">


# 4.PHPのセットアップ
## インストール

```terminal
remiリポジトリの公開鍵を取り込む
# rpm --import https://rpms.remirepo.net/RPM-GPG-KEY-remi

yum-config-manager コマンドのインストールと remiリポジトリの追加
# yum install yum-utils https://rpms.remirepo.net/enterprise/remi-release-7.rpm

remi-php71 リポジトリを有効化
# yum-config-manager --enable remi-php71

PHP と拡張モジュールなどをインストール
# yum install php php-mbstring php-intl php-mysqlnd
```

## 初期設定

```terminal
vim /etc/php.ini

# レスポンスヘッダにPHPのバージョンを表示しない
expose_php = Off

date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_charset = none
```

Apache再起動

```terminal
# systemctl restart httpd.service
```

## 動作確認
### PHPのバージョン確認

```terminal
# php -v
```

### PHPのバージョン確認(詳細)
以下のファイルを作成&配置し、WEBブラウザで確認する。

```php:/var/www/html/index.php
<?php
 phpinfo();
?>
```

http://(SSH接続で使用したWEBサーバのグローバルIPアドレス)/index.php

以下のような画面が表示されればOK。
<img width="944" alt="pic55.png" src="https://qiita-image-store.s3.amazonaws.com/0/269537/7e62bf22-0d3b-7e18-c8a2-222abe268654.png">

# 5.WEBサーバからDBサーバに接続できるよう設定

## SQLコマンドツールをインストール

```terminal
# yum install mariadb
```

## NICの設定
### 既存NIC(eth0)の設定をコピーする。

```terminal
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
GATEWAY=xxx.xxx.xxx.xxx
PREFIX=24
DNS2=xxx.xxx.xxx.xxx
IPADDR=xxx.xxx.xxx.xxx
DNS1=xxx.xxx.xxx.xxx
ZONE=private
```

### 新NIC(eth1)を設定する。
- 既存NICからコピーした内容を貼り付ける。
- DEVICEは「eth1」に書き換えておく。
- GATEWAY、PREFIXはPART1のDBサーバ作成時に設定した内容を記入。
- IPADDRは「192.169.0.XXX」で入力すればOK。XXXの範囲は2~100にする。既存のものと被らないように。
- ZONEは「private」に書き換えておく。
- それ以外の項目は既存NIC(eth0)と同じ。

```terminal
# vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
GATEWAY=xxx.xxx.xxx.xxx
PREFIX=24
DNS2=xxx.xxx.xxx.xxx
IPADDR=xxx.xxx.xxx.xxx
DNS1=xxx.xxx.xxx.xxx
ZONE=private
```

ネットワークを再起動し、設定したIPアドレスが設定されているか確認。
「eth１」に「inet 192.168.0.xxx/24」の記載があればOK。

```terminal
# systemctl restart network
# ip addr show
```

## 動作確認
新NIC(eth1)を設定したことで、WEBサーバとローカルスイッチ、DBサーバで通信ができるようになった。
<img width="712" alt="pic36.png" src="https://qiita-image-store.s3.amazonaws.com/0/269537/ca28e9ef-2a6a-ac15-67e2-cf5b82b47f66.png">

DBサーバのコマンド例に記載されていたコマンドをコピーし、WEBサーバ上で実行。
<img width="1268" alt="pic35.png" src="https://qiita-image-store.s3.amazonaws.com/0/269537/c43c858f-9001-bd02-03ea-4996b238a7ff.png">


接続できたらパスワードの入力を求められるので、入力&認証後、DBに接続できる。

```terminal
mysql -h xxx.xxx.xxx.xxx -P ポート番号 -u データベース名 -D データベース名 -p
Enter password: xxxxxx
MariaDB [データベース名]> 
```

# まとめ
以上でPART2は終了です。PART1は以下のページに書いてあります。

【初心者の方向け】さくらのクラウドでLAMP(CentOS7.x + Apache2.4 + MariaDB10.x + PHP7.x)環境構築から基本設定までの手順　PART1 (さくらのクラウド操作編)
https://qiita.com/happy41111/items/88bef300a057f48cdc39