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
やったこと
- Apacheを消す
- php-fpmをインストール & 設定
- nginxをインストール & 設定
- パーミッションの変更しファイルをアップロード
- 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。
cd /etc/php-fpm.d
vim www.conf
nginxからphp-fpmを実行するときは、ユーザーが「nginx」になるから「apache」から変更してあげる。
コメントアウトは" ; "を先頭につける。
;これを探してコメントアウトする
;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]
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などは初期状態。
以下の内容を追加する。
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アドレスにアクセスして結果をみてみる。
<html>
<body>
<?php echo "Hello World" ?>
</body>
</html>
ブラウザでHello Worldが表示されたらとりあえず設定は完了!
終わりに
いかがだったでしょうか?
個人的なメモを何かの役に立てばと思い、公開することにしましたが
アウトプットすることで、何か発展できればいいなと思います。
次は、バーチャルホストの設定についてのメモを公開しようと思います!
VPS初心者がnginxでバーチャルホストを設定する
お疲れ様でした!
参考にさせていただいたサイト
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/