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を導入します。
ここを参考にしました。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とは、アメリカ国家安全保障局が開発したLinuxにMAC制御を導入するうんたらかんたら~(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の扱いがまだまだだなと思いました。これから慣れていこうと思います。
では、また。
参考にさせて頂いた資料
ありがとうございました。