渋谷ほととぎす通信

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

ローカルサーバーを立ててPHPいじるまでのメモ


f:id:esakun:20170823103814p:plain

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

準備

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

Virtualbox

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

実行コマンド

brew cask install virtualbox

Vagrant

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

実行コマンド

brew cask install vagrant

Ansible(アンシブル)

構成管理ツールらしい。オレもなぜこれをインストールする必要があるのか分かってない。

実行コマンド

brew install ansible

セットアップ

まずは仮想環境を構築・管理ツールである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 - FedoraProjectより

このように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

PHPの設定の修正

sudo vi /etc/php-fpm.d/www.conf

以下のページを参考に修正する。

qiita.com

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

参考

Vagrant basics - Qiita