Help us understand the problem. What is going on with this article?

VagrantでCentOS7にnginx, php7を入れてindex.phpを表示させるまで

More than 1 year has passed since last update.

本編の内容

以前の記事でVagrantを使ってMacにCentOS7をインストールしました。
今回はそこにnginxとphp7.1を入れて、index.phpを表示させることをゴールにします。

Vagrantの仮想環境にアクセスする

Home/MyVagrant/CentOS7の中にVagrantFileがあります。

ターミナル
$ cd /MyVagrant/CentOS7
$ vagrant up
$ vagrant ssh

何かと後が面倒なのでルート権限にしておきます。まあしなくても良いけど。
ちなみにパスワードは'vagrant'です。

vagrant
[vagrant@localhost ~]$ su
パスワード:
[root@localhost vagrant]# 

PHP7.1をインストール

コマンドだけ書いても面白くないので、順を追ってみましょう。
まずデフォルトの状態で、どのPHPバージョンがインストールされるかをチェックします。
--assumenoオプションをつけると実際にどれがインストールされるかだけ確認して、インストールそのものはされないです。

vagrant
# yum install --assumeno php

すると以下の結果が出て、バージョン5.4.16というかなり古いものが、baseリポジトリからインストールされることになるということがわかります。

実行結果
================================================================================
 Package             アーキテクチャー
                                  バージョン                   リポジトリー
                                                                           容量
================================================================================
インストール中:
 php                 x86_64       5.4.16-45.el7                base       1.4 M
依存性関連でのインストールをします:
 apr                 x86_64       1.4.8-3.el7_4.1              base       103 k
 apr-util            x86_64       1.5.2-6.el7                  base        92 k
 httpd               x86_64       2.4.6-80.el7.centos          base       2.7 M
 httpd-tools         x86_64       2.4.6-80.el7.centos          base        89 k
 libzip              x86_64       0.10.1-8.el7                 base        48 k
 mailcap             noarch       2.1.41-2.el7                 base        31 k
 php-cli             x86_64       5.4.16-45.el7                base       2.7 M
 php-common          x86_64       5.4.16-45.el7                base       565 k
依存性関連での更新をします:
 openssl             x86_64       1:1.0.2k-12.el7              base       492 k
 openssl-devel       x86_64       1:1.0.2k-12.el7              base       1.5 M
 openssl-libs        x86_64       1:1.0.2k-12.el7              base       1.2 M

トランザクションの要約
================================================================================
インストール  1 パッケージ (+8 個の依存関係のパッケージ)
更新                       ( 3 個の依存関係のパッケージ)

総ダウンロード容量: 11 M

試しに現在のリポジトリ一覧も確認しておきましょう。

# yum repolist
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.0x.sg
 * extras: ftp.iij.ad.jp
 * updates: mirror.0x.sg
リポジトリー ID                     リポジトリー名                         状態
base/7/x86_64                       CentOS-7 - Base                        9,911
extras/7/x86_64                     CentOS-7 - Extras                        305
updates/7/x86_64                    CentOS-7 - Updates                       632
repolist: 10,848

Base, Extras, Updatesという3つのリポジトリが存在することがわかります。
このリポジトリの中にPHP7.1がないからyum installできないということですね。
ということで、PHP7.1が入っているリポジトリを追加します。
yumでremiリポジトリとそれに関連するリポジトリをインストールします。

# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

何が入ったか見てみましょう。

# yum repolist
〜いろいろと省略〜
リポジトリー ID  リポジトリー名                                           状態
base/7/x86_64    CentOS-7 - Base                                           9,911
epel/x86_64      Extra Packages for Enterprise Linux 7 - x86_64           12,582
extras/7/x86_64  CentOS-7 - Extras                                           305
remi-safe        Safe Remi's RPM repository for Enterprise Linux 7 - x86_  2,671
updates/7/x86_64 CentOS-7 - Updates                                          632
repolist: 26,101

このようにepelとremiが新たにインストールされたことが確認できました。
では、PHP7.1と必要そうなモジュールを一式インストールしましょう。
ちなみに--enablerepoは一時的に今回はこっちのリポジトリを使うよっていうオプションです。
設定ファイルでenabled=0になっていてもこのオプションを使うと一時的に有効になります。

# yum install --enablerepo=remi-php71 php php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pecl-apcu php-soap php-xml php-xmlrpc

成功しました。

php.iniで最低限の設定だけやっておきましょう。

/etc/php.ini
display_errors = On
error_log = "/var/log/php_errors.log"(任意の場所でOK)
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

nginxをインストール

まずはnginxのパッケージをインストールしないとですね。

# yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

ちゃんとリポジトリにnginxが入っているか念のため確認。

# yum repolist
~いろいろと省略〜

リポジトリー ID        リポジトリー名                                                   状態
base/7/x86_64          CentOS-7 - Base                                                   9,911
epel/x86_64            Extra Packages for Enterprise Linux 7 - x86_64                   12,582
extras/7/x86_64        CentOS-7 - Extras                                                   305
nginx/x86_64           nginx repo                                                          102
remi-safe              Safe Remi's RPM repository for Enterprise Linux 7 - x86_64        2,671
updates/7/x86_64       CentOS-7 - Updates                                                  632
repolist: 26,203

大丈夫ですね。
早速、先ほどのリポジトリを指定してnginxをゲットしましょう。

# yum -y install --enablerepo=nginx nginx

問題なく終了しました。そしたらnginxを起動&自動起動設定しておきます。
うまくいったかどうかも見てみましょう

# systemctl start nginx
# systemctl enable nginx 
# systemctl status nginx

activeと表示されることを確認しました。
次に、ファイアウォールの設定を変更してhttp通信を許可するようにしておきましょう。

# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload

では、ブラウザから192.168.33.10(vagrantfileのprivate_server)にアクセスしてみましょう。

ブラウザ
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

nginxの初期画面が表示されれば成功です!

自作htmlファイルが読み込まれるかテスト

nginxのドキュメントルートを調べます。

# cat /etc/nginx/conf.d/default.conf
~省略~
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
~省略~

ドキュメントルートがわかったので、/usr/share/nginx/html直下にtestとだけ書いたtest.htmlファイルを作成して、192.168.33.10/test.htmlにアクセスしてみましょう。
ブラウザにtest.htmlの中身が表示されれば成功ですね。

nginxとphpを繋げる

このままだとnginxでphpを実行することはできません。
ということで、php−fpmとnginxを繋げるようにそれぞれ設定を変更します。

まずはphp-fpmから。デフォルトでapacheになっているのでnginxに変えます。

/etc/php-fpm.d/www.conf
- user = apache
+ user = nginx

- group = apache
+ group = nginx

次に、nginxの設定ファイルを変更します。
コメントアウトしたり追加したりした箇所だけ載せます。

/etc/nginx/conf.d/default.conf
〜省略〜
    location / {
        root   /usr/share/nginx/html;
        #index  index.html index.htm;
        index  index.php; ←追加
    }
〜省略〜
    location ~ \.php$ {
    #   root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
    #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;←追加
        include        fastcgi_params;
    }

これらの設定を再起動して反映させます。

コマンド
# systemctl restart nginx
# systemctl restart php-fpm

あとはドキュメントルートのhtml直下にindex.phpを作成し、
おきまりのphpinfo();あたりを書いてブラウザからアクセスしてみましょう。

192.168.33.10/index.phpにアクセスして正しくphpが実行されていれば成功です!

次はこれにさらにmysqlとlaravelをいれてみたいと思ってます。

参考サイト

https://akamist.com/blog/archives/648

pipiox
大手化粧品メーカー営業 -> 商社営業 -> ITベンチャー -> ITフリーランスという異色の経歴。 突然嫁から「ぴぴお」と呼ばれだして気に入ったのでもうこれでいきます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした