Vagrant + CentOS7 + nginx + PHP7 + php-fpm でFuelPHP1.8の仮想開発環境を構築する

Macに FuelPHPの開発環境を構築したので、メモしときます。

  • Vagrant1.8.6
  • ViertualBox5.1.6
  • CentOS7.2
  • Nginx1.11.4
  • PHP7
  • FuelPHP1.8

VagrantとVirtualBoxは brewコマンドで入りました。

brew cask install vagrant
brew cask install virtualbox

最終的には、ローカルで修正したら Vagrantでも自動で反映されるようにします。

VagrantでCentOS7仮想環境構築

まずはVagrantで仮想環境を構築します。

mkdir vagrant/furlphp
cd fuelphp

CentOS7のBoxイメージはいつもこちらを使わせてもらっています。
init が終わるとVagrantfielが作成されているので、編集します。

vagrant init kogurek1/centos72_64_min
vim Vagrantfile

ローカルPC上からプライベートIPでアクセスできるようにしときます。

#config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.33.10"

起動して、ログインします。

vagrant up
vagrant ssh

最初に yum updateをしときます。

sudo yum update

nginxインストール

FuelPHPはnginxで動かします。

その前に、今後必要になるツールを先に入れておきます。

sudo yum install vim git

最新版のnginxをインストールするため、リポジトリを追加します。

sudo vim /etc/yum.repos.d/nginx.repo

baseurlはインストールするOSや、nginxのバージョンによって変わります。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

インストールします。1.11.4が入りました。

sudo yum install nginx

起動します、自動起動も有効にしておきます。

sudo systemctl start nginx
sudo systemctl enable nginx

http://192.168.33.10/ にアクセスし、nginxの画面が表示されれば正常に動作しています。

PHP7 + php-fpmインストール

FuelPHPをPHP7で動かすので、PHP7をインストールします。

先にリポジトリを追加します。。

sudo yum -y install epel-release
wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm -ivh ./remi-release-7.rpm

FuelPHP自体で使うエクステンションは3つです。
それに加えて、この環境で必要そうなものも一緒にインストールしときます。

sudo yum install --enablerepo=epel,remi-php70 php php-mcrypt php-mbstring php-fpm php-mysqlnd php-opcache php-apcu

php -v で PHP 7.0.11 が表示されました。

PHPの設定も修正しておきます。

sudo vim /etc/php.ini

変更した部分だけ表示。

display_errors = On
error_log = "/var/log/php_errors.log"
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

php-fprmを起動し、自動起動を有効にしておきます。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

nginx + php-fpm設定

nginx と php-fpmを連携します。

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

コメントアウトしたところが元からあった設定です。

location ~ \.php$ {
    #root html;
    root /usr/share/nginx/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include fastcgi_params;
}

php-fpm側の設定を修正します。

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

nginx.confで設定しているユーザに修正します。

;user = apache
user = nginx
;group = apache
group = nginx

nginx と php-fpmを再起動し、設定を反映させます。

sudo systemctl restart nginx
sudo systemctl restart php-fpm

default.conf に記述したドキュメントルート上にテスト用のPHPファイルを作成します。

sudo vim /usr/share/nginx/html/index.php

無難に phpinfo を表示させます。

<?php
echo phpinfo();

http://192.168.33.10/index.php にアクセスし、phpinfoページが表示されれば正常に動作しています。

FuelPHP1.8インストール

PHP7 に対応した FuelPHP1.8 をインストールします。

FuelPHPには色々なインストール方法があります。

インストール方法 – インストール – FuelPHP ドキュメント

2016年FuelPHP 1.xのインストール方法のベストプラクティス

ベストプラクティスと言われているのは zipでダウンロードしてくる方法ですが、一旦 git clone でやってみます。

cd /var/www
sudo git clone git://github.com/fuel/fuel.git fuelphp
cd fuelphp
sudo ./composer.phar self-update
sudo ./composer.phar update --prefer-dist

git branchで確認すると、1.8 の masterがインストールされたようです。

git branch
# 以下が表示
* 1.8/master

oil -v でも Fuelphp のバージョンを確認できます。

oil -v
# 以下が表示
Fuel: 1.8 running in "development" mode

nginxに、Fuelphp用のバーチャルサーバを設定します。

sudo vim /etc/nginx/conf.d/fuelphp.conf

nginxの設定はFuelPHPのドキュメントを参考にしました。

server {
    server_name fuelphp.local;

    # これらのファイルに Nginx が書き込めることを確認する
    access_log /var/www/fuelphp/nginxlogs/access.log;
    error_log /var/www/fuelphp/nginxlogs/error.log;
    root /var/www/fuelphp/public;

    location / {
        index index.php;
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        root /var/www/fuelphp/public;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param FUEL_ENV "development";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

nginxの設定を反映します。

sudo systemctl restart nginx

仮想環境(192.168.33.10)へ「fuelphp.local」でアクセスできるよう、ローカルPCのhosts修正します。

# ローカルPCでの操作です
sudo vim /etc/hosts

IPとホスト名は適宜変更できます。

192.168.33.10 fuelphp.local

fuelphp.localへアクセスし、FuelPHPのウェルカムページが表示されれば正常動作です。

http://fuelphp.local/

synced_folderを使ってローカルのFuelPHPを動かす

FuelPHPを Vagrant上の環境にインストールしましたが、ローカルPC上にてIDEで開発したいので、Vagrantの synced_folder機能を使って、ローカルPCと Vagrantのディレクトリを同期させます。
開発はローカルPC、動作は Vagrantという構成です。

予め、Vagrant上に git cloneで取得した FuelPHPは削除しておきます。

sudo rm -rf fuelphp
[/bash]

以下からはローカルPC上での作業です。

今度は FuelPHPを本家サイトからダウンロードしてきました。
git cloneよりも速かったです。

# ローカルPCでの操作
curl http://fuelphp.com/files/download/36 -o fuelphp.zip
unzip fuelphp.zip
cd fuelphp
php oil refine install
php composer.phar self-update
php composer.phar update

バージョンを確認します。
FuelPHP1.8 がダウンロードされていました。

oil -v
# 以下が表示
Fuel: 1.8 running in "development" mode

git管理はされていないようです。

git branch
# 以下が表示
fatal: Not a git repository (or any of the parent directories): .git

Vagrantの設定を変更します。

cd ~/vagrant/fuelphp
vim Vagrantfile

synced_folderの設定を追加します。
ディレクトリの記述は、1つめがローカルPCで、2つめがVagrant上のものになります。

 config.vm.synced_folder "/Users/runble1/work/fuelphp", "/var/www/fuelphp",
     :owner = "nginx",
     :group = "nginx",
     :mount_options = ["dmode=755,fmode=644"]

Vagrantを再起動し、再度 Vagrant内での操作になります。

vagrant reload
vagrant ssh

nginxの設定を行います。

# Vagrant上での操作
sudo vim /etc/nginx/nginx.conf

off にしとかないと、CSSを修正した際に反映されないことがあるようです。

#sendfile on;
sendfile off;

nginxを再起動し、設定を反映させます。

sudo systemctl restart nginx

再度「fuelphp.local」へアクセスし、ウェルカムページが表示されることを確認します。

以上、開発環境の構築完了。
MySQLのDB環境が必要になった場合は、下記記事を参照します。

CentOS7にMySQL5.7をyumでインストール

めっちゃ疲れた。。

参照

CentOS7にyumでnginx1.11をインストール

CentOS7にyumでPHP7, PHP-FPM, OPcache, APCuをインストール

nginx + php-fpmでCentOS7でPHP7を最低限動かす

コメント

タイトルとURLをコピーしました