MacのApacheにてFuelPHPのブログチュートリアル環境作成

FuelPHPのブログチュートリアルを、Macのローカル上に作成した。
ちょっと前の話なので細部は怪しいけど、作成した手順を残しておく。

このチュートリアルははじめてのフレームワークとしてのFuelPHPを書かれた方の記事。最近、紙版が出た。ほしい。

1. FuelPHPのインストール

ホームディレクトリ直下にworkディレクトリを置き、FuelPHPをインストールする、という方式でいく。

FuelPHPインストール用のコマンド、oilをインストールしておく。

curl get.fuelphp.com/oil | sh

ホームディレクトリ直下にworkディレクトリを作成。

mkdir ~/work

workディレクトリ下にFuelPHPをインストールする。
workディレクトリ内に移動。

cd work

oilコマンドではFuelPHPの最新版がインストールされる。

oil create blog

バージョンを確認してみよう。

cd blog

php oil -v

以下が表示され、FuelPHP1.7.2がインストールされたことがわかる。

Fuel: 1.7.2 running in “development” mode

FuelPHPの1系では1.7が最終安定版になるらしい。
つまり、長く使い続けれるぞ。

2. Apacheの設定

続いて、ブラウザからFuelPHPにアクセスする。

MacにはApacheがデフォルトでインストールされているので、これを使うのが楽。
以前の記事で紹介してたのでそちらを参照。

ApacheのドキュメントルートにFuelPHPのpublicディレクトリのシンボリックリンクを設定する、という方法でいく。

Apacheのドキュメントルートに移動。

cd /Library/WebServer/Documents

シンボックリンクを設定する。

sudo ln -s ~/work/blog/public blog

localhost/blogアクセスしてみる。
以下のエラーが表示された。

Fuel\Core\PhpErrorException [ Error ]:
date_default_timezone_get(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone.

FuelPHPの方でtimezoneを設定してやる。

vim ~/work/blog/fuel/app/config/config.php

default_timezonという部分を修正する。
デフォルトではコメントアウトされていて、nullが設定されているので以下のように変更。

'default_timezone'   => 'Asia/Tokyo',

再びlocalhost/blogへアクセス。
Welcome!と出ればOK。

ただ、これだけだとFuelPHPのトップページ以外にアクセスると、404 Not Foundとなってしまう。
ApacheでFuelPHPを動かすには、mod_rewrite機能を有効にしなければならない

ただ、このmod_rewrite機能を有効にする方法は環境によって違ってくる。
自分もよくわからん!公式を各自で読んでみてくれ

とりあえず今回は、MacのデフォルトのApacheを使う場合ということで。

Apacheの設定ファイルを編集。

sudo vim /private/etc/apache2/httpd.conf

自分は以下で動いた。
(本来はDirectoryをちゃんとblogのみに設定するべきかも)

<Directory "/Library/WebServer/Documents">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Allow from all
    Order allow,deny
    Allow from all
</Directory>

重要なところはAllowOverrideをAllにすること。
デフォルトは(おそらく)Noneで、これは.htaccessを無効にしてしまうので、有効にする。

ただもう一つ、OptionsにFollowSymLinksを追加したかどうかが思い出せない。
これがデフォルトで存在しなくてFuelPHPが動かなかったらつけてみて。

設定したら再起動しておく。
これでトップ画面以外も表示されるはず。

sudo /usr/sbin/apachectl restart

うろ覚えだな〜

3. MySQLのインストール

さて、FuelPHPが無事に動くようになった。

ブログチュートリアルの記事を再度見てみるとMySQLを使うとのこと。
MacにはデフォルトでMySQLは入ってないのでHomebrewでインストールしておく。

以下でインストールされるはず。
もっと詳しくはこちらのサイトを参照。

brew install mysql

MySQLを起動する。

mysql.server start

自分はここでエラーが出てMySQLを起動できなかった。
Homebrewでインストールする前に手動でインストールしたMySQLが残ってたせいだったのだが。

その時の忘備録を一切残してないので、上記のコマンドで無事起動できることを、願っている。

MySQLの初期設定を行う。
以下のコマンドでrootのパスワードなどを設定できる。

mysql_secure_installation

rootユーザでログインしてみる。

mysql -u root -p

せっかくなので、ブログチュートリアル用のDBを作成しておく。

CREATE DATABASE `fuel_blog` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

このへんもうろ覚え・・・

4. FuelPHPのブログチュートリアル

ようやく本題。
まずはFuelPHPの設定ファイルを編集していく。

vim ~/work/blog/fuel/app/config/config.php

以下の部分をコメントアウトを削除し、ORMパッケージを有効にする。
ORMパッケージはDBを簡単に作成・削除できるもの。

'always_load' => array(
    'packages' => array(
        'orm',
    ),
),

続いてデータベース接続用の設定ファイルを編集。

vim ~/work/blog/fuel/app/config/development/config.php

passwordの****部分に、先ほど設定したMySQLのrootユーザのパスワードを設定する。

return array(
    'default' => array(
        'connection' => array(
            'dsn' => 'mysql:host=localhost;dbname=fuel_blog',
            'username' => 'root',
            'password' => '****',
         ),
    ),
);

さあ、ブログを作成するぞ。
oil generateコマンドで一発だ。

cd ~/work/blog

php oil generate scaffold post title:varchar[50] body:text

controllerやmodel,viewにmigration用のファイルが、一気に作成される。
原理はまだわかってない!

続いて作成されたmigration用ファイルからDBにテーブルを作成する。

php oil refine migrate

以下のように出れば成功。
失敗した場合、MySQLとの接続ができてない可能性があるので見直す。

Performed migrations for app:default:
001_create_posts

localhost/blog/postにアクセスする。
よし表示されたぞ!

POSTしても問題なさそうだ!
これにてブログチュートリアルをMacローカル環境に作成完了。

参考

FuelPHP 1.7.2のブログチュートリアル

MAC::Apacheのmod_rewriteを使おうとしてはまった

FuelPHPのoil createでエラーが出る件

スポンサーリンク
ad
ad

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
ad