VPS初心者がApacheをやめてnginxを導入してみた

#Apacheからnginxに変更した時のメモ
コンソールなんて普段全く使わないのに、
突然VPSを使う仕事が来たのでやってみた。
当然Linuxなんて使ったこともない。
とりあえず、なんとかPHP・Apache2.4をいれてVPSの初期設定は終わったが
Apacheではなくnginxにしてくれと言われた。。。
と、いうことで今回は最終的にnginxでPHPでHello Worldをすることが目的です。
記載は忘れないようすごく細かいです。
読みづらいかもしれません。何かの参考になれば嬉しいです。
初心者のため、**間違いがある可能性が非常に高いです！！！！**
間違いなどありましたらご指摘いただけると幸いです。

#環境
- さくらVPS(さくらVPSさんの初心者ページをみて基本的な設定はした状態）  
-> https://knowledge.sakura.ad.jp/8218/
- CentOS7
- PHP7.2
- Apache2.4

#やったこと
1. Apacheを消す
2. php-fpmをインストール & 設定
3. nginxをインストール & 設定
4. パーミッションの変更しファイルをアップロード
5. Hello Worldの確認

##1.Apacheの削除
早速削除する準備。
まずは今動いてるApacheを止める。Apacheの名前は**httpd**

```
systemctl stop httpd.service
```

これで止まる。その後にゴリゴリ消す

```
yum remove -y httpd
```

これでApacheの削除は完了。

##2.php-fpmのインストール
そもそもphp-fpmとはなんだ。
こちらのサイトがとってもわかりやすかったです。
https://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc
なんのことかわからない方は、とりあえず今回は
nginxでPHPを動かすためのツールだと思えば大丈夫！

早速インストール

```
yum install --enablerepo=remi,remi-php72 php-fpm
```

これでインストールは完了。

###2.1設定
nginxとphp-fpmの通信の準備。
まずは、www.confというphp-fpmの設定ファイルを編集する。
私の環境では、各種設定ファイルは**/etc/**の下に置かれていた。
今後基本的には/etcの下を編集した時は、何かの設定をいじっているんだなと思ってもらえればOK。

```www.conf
cd /etc/php-fpm.d
vim www.conf
```

nginxからphp-fpmを実行するときは、ユーザーが「nginx」になるから「apache」から変更してあげる。

コメントアウトは" ; "を先頭につける。

``` www.conf

;これを探してコメントアウトする
;user = apache
;group = apache
;そして書き換える
user = nginx
group = nginx
```

これをやった後にphp-fpmを起動
同時に、OS起動時に自動で起動するよう登録する。

```
systemctl start php-fpm
systemctl enable php-fpm
```

もし、なにかエラーが起きたりして起動できなかったら

```
systemctl status php-fpm
```

で状態を見れるのでログを見ることで何が悪いかわかる。
今後うまくいかない時は、基本的には```status```で確認する。

##3.nginxのインストール
まずは、安定板のインストールのためにリポジトリを追加する。
えっ、リポジトリってなんだ。。。
調べてみると、「ファイルやプログラムの設定情報や保管場所を記したもの」らしい。
今回だと、これをインストールしてねっていう設定を書いているみたい。
早速、
/etc/yum.repos.d/にnginx.repoという名前で作成する

```
vim /etc/yum.repos.d/nginx.repo
```
vimってなんだ。
すごく簡単にいうとテキストエディタ。
私はここを参考にさせていただきました。
https://qiita.com/okamos/items/c97970ab34ff55ff3167

書き込む内容は

```nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
```
こんな感じ。
できたら早速インストール。

```
yum -y --enablerepo=nginx install nginx
```

インストールが完了したら早速起動

```
systemctl start nginx.service
```

もしダメだったらstatusで何が悪いか確認する。
この段階で、ブラウザからIPアドレスにアクセスすると
nginxのトップページが見れる。

###3.1設定
nginxの設定を行う。
まずは、php-fpmがnginxで動くように設定する。
/etc/nginx/conf.d の中の「default.conf」を設定する

```
cd /etc/nginx/conf.d
vim default.conf
```

ここでは、「〜.php」が呼ばれたら、「php-fpmに投げる」という設定をする。
そうしないと、PHPが動かなくて真っ白な画面が表示される。
とりあえずはrootなどは初期状態。
以下の内容を追加する。

```default.conf
server {
    location ~ \.php$ {
        root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
```

設定したら、php-fpmとnginxを再起動する。

```
systemctl restart php-fpm.service
systemctl restart nginx.service
```
これで完了。

##4.パーミッションの変更とアップロード
これは、FileZillaなどのFTPソフトを使ってファイルをアップロードするときに
root権限がないとアップロードできなくなってしまうので、パーミッションを変更する。
ドキュメントルートは、/usr/share/nginx/htmlなので、このhtmlの設定を変えてやる。
ここで出てくるユーザー名は、転送するときのユーザーにする。

```
cd /usr/share/nginx
chown nginx:ユーザー名 html
chmod 775 html
```
これでOK。

chownはファイルやディレクトリの所有者を変更するコマンドで、
chmodはファイルやディレクトリの権限を変更するコマンド。

早速下記の内容を書き込んだファイルを転送して、
IPアドレスにアクセスして結果をみてみる。

```index.php
<html>
  <body>
    <?php echo "Hello World" ?>
  </body>
</html>
```
ブラウザでHello Worldが表示されたらとりあえず設定は完了！

#終わりに
いかがだったでしょうか？
個人的なメモを何かの役に立てばと思い、公開することにしましたが
アウトプットすることで、何か発展できればいいなと思います。

次は、バーチャルホストの設定についてのメモを公開しようと思います！
[VPS初心者がnginxでバーチャルホストを設定する](https://qiita.com/curacao/items/c85cf04c7236e4959e43)
お疲れ様でした！


#参考にさせていただいたサイト
https://qiita.com/inakadegaebal/items/d59fa99d2ee66a4ffe98
https://qiita.com/MiyaseTakurou/items/923c28f7ac60b2ce761a
https://gakumon.tech/nginx/nginx_directory.html
https://www.rem-system.com/centos-nginx-inst/
http://senoway.hatenablog.com/entry/2015/02/11/142139
https://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc
https://spacekey.info/792/