Twitter Facebook github

nginx + php7 + Lumen な開発環境をVagrantでつくる

趣味のプロジェクトで、APIサーバーとしてLaravel製の軽量PHPフレームワーク、Lumenを採用することにしました。

ここではVagrantを使ったローカルの開発環境を作るための手順を残します。

前提

  • ホストOS: Mac OS X El Capitan
  • ゲストOS: CentOS 7.1 (bento/centos-7.1)
  • ホストOSにVagrant 1.7.4 をインストール済み

今回は開発用なので、Lumenは /vagrant の中に配置し、
パーミッションの問題を避けるために、nginxもvagrantユーザーで起動することにします。

ベースのVagrant box

Chef社がメンテしているCentOS 7の bento/centos-7.1 を採用しました。
7系のCentOSであれば他のものでも問題ないと思います。
6系やEC2上で実行する場合、特に使用するリポジトリをOSに適当なものに変更してください。

先にBoxをローカルにダウンロードしておきます。

プレーンな環境構築

適当なフォルダにVagrantfileを用意して起動します。

起動できたら、sshで接続して全パッケージをアップデートしておきましょう。

共有フォルダのマウントエラー

vagrant upで Failed to mount folders in Linux guest. ってエラーが出たときは、次のようにゲストOS内でGuest Additionsのリビルドを行うと解決する。

nginxのインストール

ここから先はゲストOSにログインして、 sudo su - でrootに昇格して作業します。

php7のインストール

php70-phpをインストールした場合

上記手順でインストールした場合はスキップして問題ありませんが、php70-のプリフィクスを付けてremiのリポジトリからインストールした場合は次の手順で、phpコマンドにパスを通す必要があります。

また、phpの設定ファイル等も /etc/opt/remi/php70 下に配置されることになるので、読み進める際は適宜変換してください。

Lumenのインストール

いくつか前提があるので先に準備します。

Composerのインストール

Lumenはcompsoer経由でインストールします。

composerでインストールしたプログラム用のパスを通しておきます。

gitとzipのインストール

Lumenをインストールする際に使います。

Lumenのインストール

Composerでインストーラーをインストールします。

Lumenプロジェクトを適当なフォルダで初期化します。

各種設定

準備は整いました。
デフォルトのプロジェクトを公開してみます。

phpの設定

お好みで php.ini ファイルを設定してください。

参考: 変更すべき php.ini の設定項目

nginxの設定

今回は /vagrant/api にLumenをインストールした前提で進めていきます。
/vagrant以下はユーザー vagrant の管理下にあるので、今回はサーバー等もこのユーザーで実行します。

起動して、設定もここで行います。

php-fpmの設定

動作確認

Vagrantfileで設定しておいたゲストOSに、ホストOSのブラウザからローカルIPで接続してみます。

所感

軽くやってみたはずが結構長くなりました。nginxに拘らなければ、phpのビルトインサーバーが楽かもしれませんね。
もし環境をチームで配布するようになれば、本当はChefで自動化したいです。

コメントを残す

メールアドレスが公開されることはありません。