本編の内容
以前の記事でVagrantを使ってMacにCentOS7をインストールしました。
今回はそこにnginxとphp7.1を入れて、index.phpを表示させることをゴールにします。
Vagrantの仮想環境にアクセスする
Home/MyVagrant/CentOS7の中にVagrantFileがあります。
$ cd /MyVagrant/CentOS7
$ vagrant up
$ vagrant ssh
何かと後が面倒なのでルート権限にしておきます。まあしなくても良いけど。
ちなみにパスワードは'vagrant'です。
[vagrant@localhost ~]$ su
パスワード:
[root@localhost vagrant]#
PHP7.1をインストール
コマンドだけ書いても面白くないので、順を追ってみましょう。
まずデフォルトの状態で、どのPHPバージョンがインストールされるかをチェックします。
--assumenoオプションをつけると実際にどれがインストールされるかだけ確認して、インストールそのものはされないです。
# 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で最低限の設定だけやっておきましょう。
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に変えます。
- user = apache
+ user = nginx
- group = apache
+ group = nginx
次に、nginxの設定ファイルを変更します。
コメントアウトしたり追加したりした箇所だけ載せます。
〜省略〜
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をいれてみたいと思ってます。
参考サイト