初めてのLAMP環境構築(Linux)


インフラ周りにうとうと（疎疎)な私ですが、
克服の為LAMP環境を構築してみたのでその備忘録です。

【環境】
・さくらのVPSで借りた２週間お試しサーバー
・CentOS8
・MariaDB
・PHP


【注意】
*勉強のために構築した環境なので、本番等で運営できるセキュリティレベルではないと思います。*

## LAMPって？
**LINUX**　　OS
**Apache** Webサーバ
**MySQL/MariaDB**　データベース
**PHP,Perl**　プログラム
のハッピーセット。

動的サイトを作り出す古典の体型のようなもの。

## Apache
### Apacheをインストール!
大人気のWebサーバーApacheを使います。
https://httpd.apache.org/

下記のコマンドでインストールします。

```
$ sudo yum -y install httpd
```

Apacheの設定ファイルは ` /etc/httpd/conf/httpd.conf`　です。
このファイルを見ると、　`設定項目名　設定値`　の書式で設定ファイルが書かれていることがわかります。
"#" で始まっているものはコメントアウトされています。

下記で**ServerName**の項目を編集してみましょう。
これはWebサーバー名を設定するための項目です。

```
$ sudo vim /etc/httpd/conf/httpd.conf
```
ServerNameはコメントアウトされているので、 "#" を削除して有効化します。
基本的にここはホスト名を記述するようです。

```
ServerName www.example.com:80
```

作業ができたら、構文チェックを下記のコマンドで行います。

```
$ httpd -t
```

Syntax OKならば大丈夫です。
失敗しているとエラーメッセージが出てくるので、それを参考に修正を行います。

### Apacheの起動設定

```
$ sudo systemctl start httpd.service
$ sudo systemctl enable httpd.service
```

startで起動、enableでシステム起動時に自動起動するよう設定するコマンドになります。


### Apache初期設定
まずファイヤウォールを設定します。初期では80番へのアクセスが許可されていません。

```
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --reload
```
上記コマンドで設定後リロードが完了します。

`http://VPSのIPアドレス/` で、Apache初期のページを開くことができます。

。。。。私はここで開かず大苦戦しました。さくらのVPSの人はご注意です。
さくらのVPSにはデフォルトで「パケットフィルタ」なるサービスが実施されています。
こちらで80番を許可しないと、ファイヤウォールでの設定が許可されていても弾かれます。


こちらの[コントロールパネル](https://secure.sakura.ad.jp/vps/?_ga=2.163035061.807084037.1587975256-1349735141.1587975256#/login)ログイン後、パケットフィルタのタブをクリックし
接続許可ポートを追記してください。こちらの説明がわかりやすかったです。
https://vps-news.sakura.ad.jp/vps-pf/

初期ページが問題なく表示されたら、色々htmlを配置していじってみてください。
`/var/www/html`直下にhtmlを配置すると、ルーティングにしたがって閲覧可能になります。

## MariaDB
### MariaDBのインストール
次はデータベースになります。

```
$ sudo yum -y install mariadb-server mariadb
```

上記によってmariaDBに必要なもの一式がダウンロードできます。
次は設定ファイルを編集し、日本語が扱えるようにします。

```
$sudo vim /etc/my-cnf
```

```
datadir=/var/lib/nysql
socket=/var/lib/mysql/mysql.sock
```

冒頭に上記のような記述があるので、直後に以下を追記してください。

```
character-set-server=utf8
```

### MariaDBの起動設定

```
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
```

Apacheの時と同様、自動で起動するようにも設定します。

### MariaDB初期設定
MariaDBは初期設定用の対話式コマンドが標準で用意されています。

```
$ sudo mysql_secure_installation
```

基本的にyで答えていいですが、
途中 `New password:` とパスワードの設定を求められるので、
管理者パスワードにしたい文字列を入力してください。


## PHP
次はプログラミング言語であるPHPをインストールです。

```
sudo -y install php php-mbstring php-gd php-mysql
```

なにやらいっぱいありますので、ざっくりまとめます。
- **php** ・・・PHP本体
- **php-mbstring** ・・・日本語などのマルチバイトに対応するためのパッケージ
- **php-gd**　・・・画像ライブラリを扱うためのパッケージ
- **php-mysql** ・・・MySQL/MariaDBと連携するためのパッケージ

下記を打ってバージョンが出てきたら無事インストールできています。

```
$ php -v
```

また、ApacheとPHPを連携するために一度Apacheを再起動する必要があります。

```
$ sudo systemctl restart httpd.service
```


### php動作確認

PHPが無事動いているか確認するため、下記のコマンドでファイルを作成・編集します。

```
sudo vim /var/www/html/test.php
```

```php:test.php
<?php echo phpinfo(); ?>
```

ウェブで `http://VPSのIPアドレス/test.php`にアクセスして、
無事PHPの情報が出たらOKです。確認が終わったらセキュリティのためにtest.phpは削除してください。


### wordpressのためのDB下準備
まずはMariaDBに接続します。

```
$ mysql -u root -p
```
パスワードを聞かれますので、`mysql_secure_installation`コマンド実行時に設定した
パスワードを入力します。

データベース操作が可能になったら、SQL言語を使用してデータベース・ユーザを作成します。

```
CREATE DATABASE db;
```
上記で「db」というデータベースを作成します。

```
GRANT ALL PRIVILEGES ON db.* TO "dbuser"@"localhost" IDENTIFIED BY "jfei0a3laas";
```
上記で「dbuser」というユーザー、「jfei0a3laas」というパスワードを設定します。これらは任意です。

```
FLUSH PRIVILEGES;
```

上記で権限テーブルをリロードします。

コマンド入力成功時は Query OK　が出ます。
上記全て入力し終えたら　`exit`を入力してMariaDBを出ます。


## Wordpressを配置
最後にwordpressをインストールします。

```
$ curl -LO http://ja.wordpress.org/latest-ja.tar.gz
```

インストールしたtar.gzデータを解凍・展開します。

```
$ tar zxf latest-ja.tar.gz
```

インストールしたこれらを、 `/var/www/html`に移動して
閲覧可能にします。

```
$ sudo mv wordpress /var/www/html
```

下記コマンドで、権利者を設定します。 -Rオプションにより、
wordpress以下にあるファイルも一括で権利者を変更できます。
```
$ sudo chown -R apache:apache /var/www/html/wordpress
```

下記で、wp-configを雛形から生成します。

```

$ cd /var/www/html
$ sudo mv wp-config-sample.php wp-config.php
```
wp-configを編集します。

```
$ sudo vim wp-config.php
```

変更箇所は以下三点です。

データベース名
`define('DB_NAME', ' /* ここに記入 */’); `

ユーザー名
`define('DB_USER', '/* ここに記入 */');`

パスワード
`define('DB_HOST', '/* ここに記入 */');`

本来はセキュリティ的によくないですが、
勉強用のためSELinuxを無効にします。（有効だとWordpressが動きません）

```
sudo setenforce 0
```

wordpressを配置したルートにアクセスすると、おなじみのwordpress画面が飛び出してくるかと思います。やったね!

## 参考にさせていただいたもの

[ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方 著: 中島 能和](amazon.co.jp/ゼロからはじめるLinuxサーバー構築・運用ガイド-動かしながら学ぶWebサーバーの作り方-中島-能和/dp/4798146374)

[パケットフィルタ の利用方法](https://vps-news.sakura.ad.jp/vps-pf/)
[lamp環境って何？lamp環境を構築するメリット](https://forthewin.co.jp/ikeda_blog/lamp%E7%92%B0%E5%A2%83%E3%81%A3%E3%81%A6%E4%BD%95%EF%BC%9Flamp%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88)
[Mysql関係の備忘録 Qiita](https://qiita.com/ritukiii/items/afdc91e68d0cf3e0f383)