以前、macにcakephpをインストールしたことがありますが、今回はcentos7とapacheでの連携でした。
vagrantを使って、開発環境を構築していましたが、ハマってしまいワロリッシュ(´・ω・)
その時の流れをメモ
必要なパッケージをインストール
ほとんどyumで入れました。
# apacheインストール $ yum install httpd # phpインストール&必要パッケージ yum install php php-mbstring php-mysql
mysqlは、一度yumのリポジトリを更新する作業があります。
$ wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm $ rpm -Uvh mysql-community-release-el7-5.noarch.rpm
リポジトリ入れたら、"/etc/yum.repos.d/mysql-community.repo"ファイルを修正します。
$ vim /etc/yum.repos.d/mysql-community.repo ################ [mysql-connectors-community] - enabled=1 + enabled=0 [mysql-tools-community] - enabled=1 + enabled=0 [mysql56-community] - enabled=1 + enabled=0 ################
yumでインストール
$ yum --enablerepo=mysql56-community install mysql-community-server
ちなみに、mysqlについてはここを参考にしています。(めっちゃ助かりました^^)
CentOS7 64bitのyumリポジトリにMySQLを追加し、最新バージョンをインストール | kakiro-web カキローウェブ
apacheの設定
httpd.confを開き、修正します。
$ vim /etc/httpd/conf/httpd.conf ################### 146: - Options Indexes FollowSymLinks 146: + Options FollowSymLinks 153: - AllowOverride none 153: + AllowOverride All ###################
設定ファイル"/etc/httpd/conf.d/php.conf"も修正します。
下記内容を追加します。
追記
下記設定だと、"/"ディレクトリ以外でリダイレクトループが発生しました。
$ vim /etc/httpd/conf.d/php.conf ################### # リダイレクトループの設定。これだけではNG + RewriteEngine on + RewriteRule ^$ /app/webroot/ [L] + RewriteRule (.*) /app/webroot/$1 [L] ###################
上記はミスなので、下記設定を使ってください。
$ vim /etc/httpd/conf.d/php.conf ################### # 正しい設定 RewriteEngine on RewriteRule ^$ /app/webroot/ [L] + RewriteRule ^/app/webroot/ - [L] RewriteRule (.*) /app/webroot/$1 [L] ###################
問題ないか確認
$ apachectl -t
Syntax OK
うむ(´・ω・)
ちなみに、rewriteの設定部分はコピペしていたので
# 頭の"/"がなかった RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L]
って、設定したところ、「Bad Request 400」が発生しましたとさ(´・ω・)
修正の手法としては、cakephpのディレクトリがApacheのDocumentRootから見て、どの位置にあるのかを確認しなければいけません。環境に合わせて内容を修正してください。
※私は今回「/var/www/html/」以下に用意したので、DocumentRootからみると「/」以下になります。ので、この修正で治りました。
mysqlの設定
mysqlでは、ユーザーの修正とcakephp用のデータベースを作成します。
まずは起動からログイン
$ systemctl start mysqld.service
$ mysql
ユーザー削除、追加、データベースを作成します。
# ユーザー削除 mysql> DROP USER ''@'localhost'; # ユーザー追加(パスワードはちゃんとメモしておくこと) # 今回は"root"ってユーザー名で、"password"っつー、パスワードを設定します。(めちゃめちゃ弱いパスワードなのでマネはしないでね) mysql> grant all on *.* to root identified by 'password' with grant option; # 作成したユーザーの確認 mysql> select host,user from mysql.user; # データベース作成 mysql> create database cakephp; # 作成したデータベースの確認 mysql> show databases;
設定は終了なので、一旦"quit"して、最後にログインできるかテスト
mysql> quit; $ mysql -u root -p Enter password: 〜(略)〜 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
ログインすることができましとさ
phpの設定
phpの設定箇所は"/etc/php.ini"という設定ファイルが存在します。
$ vim /etc/php.ini ################### # 692行目付近 default_charset = "UTF-8" # 878行目付近 date.timezone = "Asia/Tokyo" ###################
に、修正しましょう
cakephpをダウンロード
最後にcakephpをダウンロード&設定します。
まず、公式からダウンロードしてください。
CakePHP: 高速開発 php フレームワーク。 Home
ちなみに私は、gitから落としてきました。
$ git clone https://github.com/cakephp/cakephp.git $ cd cakephp/ $ ls CONTRIBUTING.md README.md app build.properties build.xml composer.json index.php lib plugins vendors
ダウンロードしたcakephpをApacheのDocumentRoot以下に配置します。
$ cd cakephp/ $ cp -rf * /var/www/html/ $ ls /var/www/html/ CONTRIBUTING.md README.md app build.properties build.xml composer.json index.php lib plugins vendors
配置が完了したら、後に聞かれることを先に修正します。
$ vim app/config/core.php ################### # 225行目を修正 # xxxxxが初期文字列だとNGなので、的当な文字列に修正します。 Configure::write('Security.salt', 'xxxxx'); # 230行目を修正 # xxxxxが初期数字列なので、的当な数字列に修正します。 Configure::write('Security.cipherSeed', 'xxxxxx'); # 270行目を修正 # コメントを外して、下記のように修正すればおk(日本であれば) date_default_timezone_set('Asia/Tokyo'); ###################
次にapp/tmpディレクトリのパーミッションを変更します。
$ chmod 755 -R app/tmp
次にデータベースとの連携の設定を行います。
database.phpを作成します。
$ cp app/Config/database.php.default app/Config/database.php
んで、修正
$ vim app/Config/database.php ################### # "public default"の箇所を修正 class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, # localhost -> 127.0.0.1 'host' => '127.0.0.1', # user -> root 'login' => 'root', # password -> password 'password' => 'password', # database -> cakephp 'database' => 'cakephp', 'prefix' => '', 'encoding' => 'utf8', ); # user -> mysqlで設定したユーザー名 # password -> mysqlで設定したユーザーのパスワード # database -> mysqlで作成したデータベース ###################
以上が設定でした。
ブラウザからアクセス
すべてが完了しましたら、ブラウザからアクセスしましょう。
赤色の帯がでていなければほぼ完了です。
phpが動かないとか、そもそも404エラーで閲覧できないとかの場合は、どこか設定が間違っているはずなので、再度確認してみましょう。あとは環境の問題かな。
まとめ&感想
以前やったことではあるけど、アプリケーションが違うとかだと、当たり前だが設定はもちろん変わってくるので、思ったより時間がかかった(´・ω・)
趣味であればいいけど、やっぱり仕事上でこの時間消費のダメージはデカイ!
なので、今度は最近触り始めたDockerで試してみようと思う。
それでは。
- 作者: 渡辺一宏,吉羽龍太郎,岸田健一郎,穴澤康裕,丸山弘詩
- 出版社/メーカー: インプレス
- 発売日: 2014/09/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
CakePHP2 実践入門 (WEB+DB PRESS plus)
- 作者: 安藤祐介,岸田健一郎,新原雅司,市川快,渡辺一宏,鈴木則夫
- 出版社/メーカー: 技術評論社
- 発売日: 2012/09/29
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 165回
- この商品を含むブログ (8件) を見る