こんにちは、エンジニアのオオバです。

最近勉強中のPHP周りの備忘録。
※ぼくの中で新しく登場するキーワードの説明なども含む

→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら

準備

Homebrewで一連のアプリケーションをインストールします。
※事前にbrew updateしておいたほうが良い

Virtualbox

使用しているPC上に仮想の環境を構築できる仮想化ソフトウェア。これにより、Mac上にWindowsやLinuxなどを起動することも可能になる。

実行コマンド

brew cask install virtualbox  

Vagrant

開発環境の構築と共有を簡単に行うためのツール。

実行コマンド

brew cask install vagrant  

セットアップ

まずは仮想環境を構築・管理ツールであるVagrantを使って仮想環境でVirtualBoxにOSをインストールする。

CentOS 6インストール

今回はCentOS6をVirtualBoxにインストール。

vagrant init centos/6  

するとこのようなログが出るが、気にしない。

A `Vagrantfile` has been placed in this directory. You are now  
ready to `vagrant up` your first virtual environment! Please read  
the comments in the Vagrantfile as well as documentation on  
`vagrantup.com` for more information on using Vagrant.  

仮想PCをセットアップして起動する

vagrant up  

vagrant upでエラーになった場合の対処

vagrant plugin install vagrant-vbguestこのプラグインを入れて再度トライ。

以下のようなエラーがでた場合は、再度vagrant upをトライ。

Vagrant was unable to mount VirtualBox shared folders. This is usually  
because the filesystem "vboxsf" is not available. This filesystem is  
made available via the VirtualBox Guest Additions and kernel module.  
Please verify that these guest additions are properly installed in the  
guest. This is not a bug in Vagrant and is usually caused by a faulty  
Vagrant box. For context, the command attempted was:  

id -u nginx  

The error output from the command was:  

id: nginx: No such user  

VagrantとVirtualBoxのバージョン関係でvagrant upがコケることもあるようです。

仮想PCにSSHログイン

vagrant ssh  

※ここからは仮想PC上での作業になります

PHPのインストール

パッケージ管理ツールyumrpmを使用してPHP7をインストールします。

どちらもrpm形式のパッケージ(.rpm)を使用していますが、コチラの記事を読む限り基本的にはyumを使う方が良さそうです。

【yum入門】yumとは何か?Linuxにおけるyumとrpmの違い | UX MILK

yumにEPELリポジトリを追加

sudo yum -y install epel-release  

エンタープライズ Linux 用の拡張パッケージ(EPEL) は、 Red Hat Enterprise Linux (RHEL) 向けの高品質なアドオンパッケージであり、CentOS や Scientific Linux (SL) のような RHEL からスピンオフしたディストリビューションと互換性のある、Fedora プロジェクトで有志によって作成されたパッケージになります。Fedora は RHEL のアップストリームであり、EPEL のアドオンパッケージは主に RHEL 向けにビルドされた Fedora リポジトリをソースとしています。

EPEL/ja - Fedora Project Wiki

このようにEPELとはRHEL向けのパッケージで、CentOSにまだ取り込まれていないものが含まれる。
CentOSに取り込まれる前に使用したい場合はEPELをインストールする。

yumにRemiリポジトリを追加

※rpmコマンドになっているが、yumは内部的にrpmを使用している。

オプションに-yを付けているのは問い合わせに対してすべてyesを選択する事を意味する。

sudo rpm -ivh https://rpms.famillecollet.com/enterprise/remi-release-6.rpm  

Remiも同様基本リポジトリでは提供されないパッケージを含んでいる。

PHPとモジュールをインストール

sudo yum -y install --enablerepo=remi,remi-php71 php php-devel php-fpm php-mbstring php-mysqlnd php-pdo  

以下のモジュールがインストールされる。

yumにMySQLのリポジトリを追加

sudo yum -y install https://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm  

MySQLインストール

sudo yum -y install mysql-community-server  
sudo vi /etc/yum.repos.d/nginx.repo  

以下を入力

[nginx]  
name=nginx repo  
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/  
gpgcheck=0  
enabled=1  

Nginxインストール開始

sudo yum -y install nginx  

一旦元の環境に戻る

exit  

Vagrant設定を変更

vi Vagrantfile  

#を外してポート番号をセット

25: # config.vm.network "forwarded_port", guest: 80, host: 8080  
↓  
25: config.vm.network "forwarded_port", guest: 80, host: 9000  

Vagrant設定の反映

vagrant reload  

https://localhost:9000にアクセスすると静的ページが開くはず。


PHPのページを表示させてみる

再度仮想環境にログイン

vagrant ssh  

PHPのトップページを作成

sudo vi /var/www/index.php  

以下を記述。

<?php  
phpinfo();  
?>  

nginxの設定の修正

変更箇所は大きく二箇所です。

sudo vi /etc/nginx/conf.d/default.conf

location / {  
 root   /usr/share/nginx/html;  
 index  index.html index.htm;  
}

location / {  
 root   /var/www;  
 index  index.php;  
}
#location ~ \.php$ {
##    root           html;
##    fastcgi_pass   127.0.0.1:9000;
<GoogleAdsense type='1' />

##    fastcgi_index  index.php;
##    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
##    include        fastcgi_params;
#}

location ~ \.php$ {  
 root           /var/www;  
 fastcgi_pass   127.0.0.1:9000;  
 fastcgi_index  index.php;  
 fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;  
 include        fastcgi_params;  
}

PHPの設定の修正

sudo vi /etc/php-fpm.d/www.conf  
user = apache  

user = nginx  
group = apache  

group = nginx  

参考
CentOSにてnginxでPHPを動かす - Qiita

php-fpmの起動

sudo /etc/init.d/php-fpm start  

NGINXの再起動

sudo /etc/init.d/nginx restart  

再度localhost:9000にアクセスすると、PHP情報ページが開くはず。

nginxの設定を変更したら再起動で反映

vagrantのリロードは不要。

sudo nginx -s reload  

これでOK。
参考 :
nginx起動、再起動 - Qiita

参考

オススメ記事
検証環境