こんにちは、エンジニアのオオバです。
最近勉強中の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のインストール
パッケージ管理ツールyum
、rpm
を使用して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とは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
以下のモジュールがインストールされる。
- php-devel・・・PHP開発で使用する
- php-fpm・・・FastCGI
- php-mbstring・・・マルチバイト文字列
- php-mysqlnd・・・ネイティブドライバ
- php-pdo・・・PHP Data Objects
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
参考
この記事が気に入ったらフォローしよう
- VirtualBox 5.1.22 r115126 (Qt5.6.2)
- Vagrant 1.9.6
- macOS HighSierra