Help us understand the problem. What is going on with this article?

Windows で、vagrant を利用した FuelPHP 用 LAMP 環境構築

More than 3 years have passed since last update.

2016/01/31 追記
Vagrant を使って、自前でごにょごにょ作るよりも、「ScotchBox」が便利だと思うので、他の方が書いた記事を追記。
ラクして環境構築するためのScotch-Boxが2.0になってかなり進化してた。

最初に

FuelPHP を利用した開発をするのに、Vagrant + VirtualBox で PHP の開発環境をローカル環境に作ってみたときのメモ。

必要なアプリケーションをインストール

アプリケーションをダウンロードして、インストール。特に設定は変えませんでした。

インストールが終わったら次の作業に入ります。

vagrant 準備

Windows のコマンドプロンプトから操作します。

1.vagrant を利用するフォルダを用意

C:\ の下に、vagrant/lamp フォルダを作成して移動。

ホストOS
c:\
mkdir c:\vagrant/lamp
cd c:\vagrant/lamp

2.vagrant の初期化

ホストOS
vagrant init --minimal chef/centos-6.6

フォルダ内に、Vagrantfile が作成されます。

3.Vagrantfile の編集

Vagrantfile を編集します。
まず、起動に利用する BOX を指定します。
VirtualBOX で利用する場合、指定した BOX に Guest Additions がインストールされていないと、起動に失敗することがあります。ホストの Windows とフォルダを同期するために、Vagrant が rsync を利用しようとするのですが、Windows が rsync に対応しないので、起動に失敗します。そんな時は、フォルダの同期を無効化してください。
インストールされたゲストOSを、画面から操作できるように VirtualBox の画面が表示されるようにする設定を書きます。
標準では、VirtualBox のネットワーク設定が NAT になっているため、ゲストOSのポートが、ホストOSのどのポートにルーティングするかを書きます。

ホストOS
Vagrant.configure(2) do |config|
  config.vm.box = "chef/centos-6.6"
  # config.vm.synced_folder ".", "/home/vagrant/sync", disabled: true
  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end
  config.vm.network "forwarded_port", guest: 22, host: 22
  config.vm.network "forwarded_port", guest: 80, host: 80
  config.vm.network "forwarded_port", guest: 443, host: 443
end

この設定で、ssh / http / https の通信が通るようになります。ホストOS がポート 22/80/443 を既に利用済みの場合は、別のポートを指定してください。

4.起動

ホストOS
vagrant up

最初に起動するとき、OS イメージがダウンロードされるのに時間がかかるので、お茶でも飲んで待ちましょう。2回目以後は、最初よりは早く起動するようになります。(それでも、数分待つかも)

5.終了

vagrant の設定は、これで終了。
VirtualBox に、新しい仮想サーバーが作成され、実行中になっているのを確認できます。

WinSCP で接続

vagrant による仮想サーバー作成後、WinSCP から作成した仮想サーバーの中をのぞいてみます。

1.ssh の接続情報を確認します

ホストOS
vagrant ssh-config

仮想サーバーへの接続情報が表示されます。

ホストOS
  Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile c:/vagrant/fuelphp/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

表示ではポート番号が 2222 となっていますが、先に行った Vagrantfile の設定で 22 での接続も可能になっています。

2.鍵の形式を変換

WinSCP で接続するには、ssh 鍵の形式を変換する必要があります。変換するには、WinSCP を起動して、左下メニューにあるツールから、PuTTYgen 実行します。

[load] で private_key を読み込み
[save private key] で、[private_key.ppk] として保存

これで、鍵の形式が変換されて保存されます。

3.最後に

先ほど作成したキーを利用して WinSCP から接続して、ファイルの一覧が表示されたら成功です。

TeraTerm で接続

ゲストOS を設定するために、TeraTerm で接続できるようにしておきます。

1.接続

WinSCP から PuTTYgen 変換したキーを利用して接続してください。

2.最後に

コマンドプロンプトが操作できたら接続完了です。

CentOS を設定します

1.最初に

インストールしたイメージには、起動直後 Apache / MySQL / PHP / git が入っていないのでインストールします。ちなみに、root アカウントではログインできないので、sudo を利用して実行してください。

2.インストール、起動、起動設定

ゲストOS
sudo yum -y install httpd
sudo yum -y install mysql-server
sudo yum -y install php
sudo yum -y install php-mysql
sudo yum -y install git

sudo service httpd start
sudo service mysqld start

sudo chkconfig httpd on
sudo chkconfig mysqld on

php-mbstring など、必要に応じて足りないライブラリもインストールしてください。

.htaccess が無効になっているので、有効にします。

FuelPHP の router を正常に動作させるために、Apache の設定ファイルを開いて .htaccess を有効にします。

ゲストOS
sudo vi /etc/httpd/conf/httpd.conf

AllowOverride None を AllowOverride All に変更します。何か所があるので、間違えないように書き換えましょう。書き換えたら再起動。

ゲストOS
sudo service httpd restart

共有フォルダの設定

1.最初に

ホストOS側のフォルダを、ゲストOS の /var/html にリンクします。ホストOS のエディッタでファイルを編集すれば、ゲストOS で実行されるようにします。

2.ホストOS に、環境を用意します

ホストOS
c:\vagrant/lamp/documentroot

3.FuelPHP を展開します。

c:\vagrant/documentroot の中に FuelPHP を解凍します。

ホストOS
c:\vagrant/lamp/documentroot/docs
c:\vagrant/lamp/documentroot/fuel
c:\vagrant/lamp/documentroot/public

のように配置されていることを前提としてます。実際のインストールは、インストールマニュアルの Zip ファイルをダウンロードする に従いましょう。

ちなみに、マニュアルによると以下のコマンドの実行が必要ですが、実行前に、c:\vagrant/lamp/documentroot/fuel/vendor フォルダを削除しておかないと、php composer.phar update に失敗するようえす。削除しても、php composer.phar update を実行することで、再構築されるようです。ここの挙動は、正直よくわかりません。
また、実行中にtokenを聞かれることがありますが、これは、GitHub の API 利用制限にひっかかった場合に出るようなので、https://github.com/settings/tokens にアクセスして、token 作成後、貼り付けてください。

ホストOS
php oil refine install
php composer.phar self-update
php composer.phar update

4.ゲストOS に、ホストOS のフォルダをリンクします

まず、/var/www/html フォルダを削除して、リンクします。

ゲストOS
sudo rmdir -r /var/www/html
sudo ln -s /vagrant/documentroot/public/ /var/www/html

インストール直後は、ホストOS の c:\vagrant が、ゲストOS の /vagrant にマウントされています。

5.PHP の timezone の設定

インストールは完了したので、ホストOS から 172.0.0.1 へブラウザでアクセスすると、エラーになります。これは、php.ini の timezone が設定されていないため、以下のコマンドを実行して、php.ini の場所を探して、timezone を "Asia/Tokyo" に変更してください。

php.ini の場所は、以下のコマンドで知ることができます。

ゲストOS
php --ini
Loaded Configuration File:         /etc/php.ini

php.ini を編集します。

php.ini
sudo vi /etc/php.ini

php.ini を編集して、timezone を変更します。

php.ini
date.timezone = "Asia/Tokyo"

php.の設定を変更したら、サービスの再起動して設定を読み込ませます。

ゲストOS
sudo service httpd restart

再び、ブラウザで開いて、FuelPHP のホーム画面が表示されれば完了です。

最後に

もうちょっと、楽に構築する方法があるんじゃないかと思いつつ、作業完了です。

yorozuone
WEB屋のディレクター
https://c5.yorozu-1.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした