渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

Mac環境でNGINX, PHP, MySQLのローカル環境構築メモ


f:id:esakun:20170823103814p:plain

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

環境

  • VirtualBox 5.1.22 r115126 (Qt5.6.2)
  • Vagrant 1.9.6
  • macOS HighSierra

準備

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に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 http://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

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

  • php-devel・・・PHP開発で使用する
  • php-fpm・・・FastCGI
  • php-mbstring・・・マルチバイト文字列
  • php-mysqlnd・・・ネイティブドライバ
  • php-pdo・・・PHP Data Objects

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

sudo yum -y install http://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=http://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

http://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;
#    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

参考