ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

MacにCakePHPを入れてみた

スポンサードリンク

CakePHPで開発する必要があったので
ローカルPC(Mac)にインストール

また、今回はApacheではなくNginxを使う必要があった為
それも合わせてメモ


1.CakePHPをダウンロード

CakePHP本体をダウンロードします。
http://cakephp.jp/

今回はリポジトリに追加したかったので
回答して追加しました。

$ unzip cakephp-2.4.9.zip
$ cd cakephp-2.4.9/
$ mv * ~/project/


2.Nginxの設定を修正

Nginxのドキュメントルートを変更します。
あとPHPが動作するように設定も追記

server {
    listen       8080;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
		#root   html;
		root	~/cakephp/app/webroot; # ここがドキュメントルートに
        #index  index.html index.htm;
        index	index.php # ここも修正
    }

この設定は意味不明でしたが、下記サイトのおかげで理解できました。
ありがとうございます。
Nginx + php-fpm でWordPressを動かしてみる

location / {
    #root   html;
    #index  index.html index.htm;
    try_files $uri $uri/ /index.php?$uri&$args; # ???
}

コメントアウトされているところをすべて外す。

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
}


3.権限の変更

なんかNginxのPHP-FPM => 多分 [include fastcgi_params;]のこと?
が書き込めるようにしないといけないので、権限を変更しなければならない。

あり?Nginxのユーザーはnobodyなんだけど・・・?
まぁいいや。

$ chown -R nobody ~/cakephp/app/tmp
$ chgrp -R nobody ~/cakephp/app/tmp
$ chmod -R 777 ~/cakephp/app/tmp

これでいいかな。


4.確認

では。Nginxを起動して確認してみます。

$ nginx -t

うむ、エラーはでてないっぽい

$ nginx

よし、起動はしました。
アクセス。

f:id:aipacommander:20140517120107p:plain

あり?
Nginxデフォルトじゃね?これ?
CakePHPが映らん。。。

エラーか・・・orz


5.Nginx初心者がハマる事項の解決方法(と思います)

うむむ。画面だけじゃよくわからないのでエラーログを吐く設定を追加
どこに出力するかは面倒なので、ザ・Linuxいつもの場所に。

error_log   /var/log/nginx/error.log

んで、error.logの中身

[error] 94481#0: *1 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:8080"

たぶんだけど、"fastcgi://127.0.0.1:9000"の
ポートが空いてないんだろうな。って直感だけど。
これってなんでしょう??

ググりました。

ググってきました。

php-fpmが立ち上がってないっぽい

どこかにあるphp-fpmの設定ファイルを探さなければならない。
どこだよ。

面倒なので、やっつけ手段

$ php(ここでタブ連打)
php         php-config  php-fpm     phpize      phpl        phplint  

# (´ー`*)フッ

$ php-fpm
ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)
ERROR: failed to load configuration file '/private/etc/php-fpm.conf'
ERROR: FPM initialization failed

みつけたったった!!・・・・あれ?
無いっていっているおorz

しかし、

$ ls /private/etc/php-fpm.conf.default 
/private/etc/php-fpm.conf.default

デフォルトファイルがあんじゃねーかよ
コピーして.confファイルを作成

$ cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf 

もっかい起動してみる

!

やったお!!!
それではブラウザを再度確認

f:id:aipacommander:20140517120107p:plain

orz
な~んデーやねーん

めげずにerror.logを確認

[error] 94481#0: *13 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:8080"

さっきとは違うログ

今度はスクリプトディレクトリがちゃんと指定されていないよ。だってよ。

Nginxの設定ファイルの

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

これの指定の仕方がまずいっぽい
とは言え、わからないので、ドキュメントを熟読
まだよくわかってないけど

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

これに変更しました。
Nginx再起・・・・おぉおおおおおおおお!!???
ちょっとまてぇええええいい

気づいちゃった。気づきました。I noticed.

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

ここですよ。ここここ!!

    root           html;

これでしょ。これじゃないの?
これ多分ドキュメントルートでしょ!!?
すぐに修正

	root           ~/cakephp/app/webroot;

次こそ再起動
そして・・・・!

f:id:aipacommander:20140517120240p:plain

やっとCakePHPとごたぁあああああああいめええええええん!!!
できたぁああああああああああああああああああああ!!!!

めっちゃエラーでてるけどね!!!!!orz


6.CakePHPのエラーを無くす

パない。
次はCakePHPエラー。どんどんいくよー

まず一つ目

Notice (1024): Please change the value of 'Security.salt' in APP/Config/core.php to a salt value specific to your application. [CORE/Cake/Utility/Debugger.php, line 845]

しらべてみると
「ハッシュを生成するときのセキュリティ文字列がデフォルトのままでは危険だから変更しなさい」というメッセージ。
らしい。

というわけで、

$ grep "Security.salt" ~/cakephp/app/config/core.php
	Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

これを適当な文字列に修正。
次!!

2つ目は

Notice (1024): Please change the value of 'Security.cipherSeed' in APP/Config/core.php to a numeric (digits only) seed value specific to your application. [CORE/Cake/Utility/Debugger.php, line 849]

これも同じっぽい
1つ目と同じ手順で見つけて修正

3つ目

Warning (2): include_once(~/cakephp/app/Config/database.php): failed to open stream: No such file or directory [CORE/Cake/Model/ConnectionManager.php, line 67]

database.phpってファイルがないってお!!
しかし、defaltファイルが存在したので、コピーして作成

$ cp ~/cakephp/app/Config/database.php.default ~/cakephp/app/Config/database.php

修正かんりょーーーーーーーーーーーー
疲れた・・・orz

しかし、メッセージに黄色がある場合はまだとのこと。
だけど今回はここまで。今度はMySQLじゃないかな。