mobの雑記

新米エンジニアがたまーにつぶやきます。

CentOS7へのFuelPHPの導入

お久しぶりです。

最近の熱さは本当に堪えます。死にそうな顔して歩いてます…

さて、今回はCentOS7にFuelPHPを導入しようとして、色々戸惑った話です。

私はただRetrofitのテストをしようと思っただけなのに…こんなに時間を使うとは…

備忘録的な感じで書きますので、皆さんの参考にしていただければと思います。

FuelPHPって使ってる人いるんですかね?私も仕事で使ってるだけですけど)

 

※初心者が書いてますので、間違っている部分等があると思います。ご了承ください。

 

oilコマンドを使えるようにする

まずは、oilコマンドを使えるようにします。

# curl -L https://get.fuelphp.com/oil | sh

これで、oilコマンドは使えるようになりました。

Composerの導入

しかし、この状態でプロジェクトを作ろうとすると、

which: no composer in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
~省略~
Can't download composer.phar.
Please install Composer manually. See https://getcomposer.org/doc/00-intro.md

となるかと思います。

FuelPHP1.6以降からはComposerというライブラリ依存管理ツールが必須になったそうです。

というわけで、Composerを導入します。

qiita.com

ここを参考にしました。PHP7の導入も書いてあります。CentOS7の標準のPHPのバージョンは5.4です。やっておいたほうが良いのではないでしょうか。

いよいよプロジェクト作成

ここまでくれば、あとはプロジェクトの作成です。

# oil create HogeHoge

調べてみた限り、/usr/local/に作るのが良いみたいですね。apacheの公開ディレクトリ直下(/var/www/html)に作成するのは、望ましくないようです。

ドキュメントルートの変更

公開するコンテンツのディレクトリをFuelPHPのプロジェクトに変更します。これをすることで、一々長いURLを打たなくて済みます。

# vi /etc/httpd/conf/httpd.conf

httpd.conf内
DocumentRoot "/usr/local/HogeHoge/public"

logsディレクトリのパーミッション変更

ここで、一度接続テストを行ってみましょう。

http://<接続先IP>/

Welcomeページが表示されれば、成功なのですが、残念ながら次のようなエラーが表示されてしまいました。

ErrorException [ Fatal Error ]:
Uncaught Fuel\Core\FuelException: Unable to create the log file. 
The configured log path "/var/www/myapp/fuel/app/logs/" does not exist.
うんたらかんたら~~

ようは、logsディレクトリがないぞってことです。 なので、まずは確認しましょう。

# cd /usr/local/HogeHoge/fuel/app
# ls

~ディレクトリとファイルのリスト~

この中にlogsディレクトリがあれば、このまま次に進みます。なければ以下のコマンドを実行。

# mkdir logs

次にパーミッションを変更します。全パーミッションを許可するように変更します。

# chmod 777 logs

ここまで、行えば終わりかなと思ってました。しかし、残念ながらまだ表示されなかったのです。

そこには同じエラーメッセージが!もう少し調べてみました。

SELinuxの存在

SELinuxとは、アメリカ国家安全保障局が開発したLinuxMAC制御を導入するうんたらかんたら~(Wikipedia)だそうです!

Security-Enhanced Linux - Wikipedia

要はWindowsのぽーんと出てくるあれと同じみたいなやつですね。今回は邪魔なので、無効化します。

# vi /etc/selinux/config

SELINUX=disabled

これに変更します。そしたら、再起動しましょう。

そして、接続テストを行ったら、そこにはWelcomeページが表示されているはずです!

おわりに

お疲れさまでした。これでFuelPHPの導入は終わりです。

私ははじめこのコマンドで行っていたのですが、なぜかできなくて悩んでました。

# curl get.fuelphp.com/oil | sh

これ、ひと昔前のコマンドだったみたいで、今は先頭にhttpsがついています。SSL化が進んでますね…。

おかげで、しなくてもいいcurlのアップデートまで行ってしまい、一日中使ってしまいました… (このcurlのアップデートも死ぬほどめんどくさかったです。不慣れだからなのかもしれませんが。あとで書くかもしれません)

もう一つ悩んだことは、SELinuxの存在でした。パーミッション変更をして何故できないんだろうと悩んでいました。

今回、痛感したことはLinuxの扱いがまだまだだなと思いました。これから慣れていこうと思います。

では、また。

参考にさせて頂いた資料

qiita.com

qiita.com

teratail.com

runble1.com

ありがとうございました。