春ですね。
今回はVagrant上に構成しました。firewallの設定などは割愛します。
vagrant環境は以下の通りです。
OS:CentOS6.5
PHP:5.6.7
MySQL:5.1.73
##PHPをインストールする
###CakePHP3系から、PHPのバージョンが 5.4.16以上が必要になっています。デフォルトのレポジトリだとPHP5.3.3になってしまうので他のレポジトリからインストールしなければなりません。
-
まず、remiのレポジトリを追加します。
console$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
-
PHPと必要なモジュールをインストールします。
console$ sudo yum install --enablerepo=remi --enablerepo=remi-php56 php php-intl php-mbstring php-mysqlnd
console$ php -v PHP 5.6.7 (cli) (built: Mar 19 2015 15:09:09) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
##Composerをインストールする
-
現在の作業ディレクトリにインストールします。
console$ curl -sS https://getcomposer.org/installer | php
-
今回はグローバルにcomposerをインストールしますので、すでにPATHが通っているディレクトリにcomposerを移動させます。
console$ sudo mv composer.phar /usr/local/bin/composer
console$ composer ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 1.0-dev (f10c71475167a4661225b14560ca0a400d730829)
##MySQLをインストール
-
MySQLは5.1.10以上ということなので普通にyumでインストールします。
console$ sudo yum install mysql-server
-
とりあえず、起動
console$ sudo service mysqld start Starting mysqld: [ OK ]
-
バージョンを確認
console$ mysql -u root mysql> mysql> \s -------------- mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1 Server version: 5.1.73 Source distribution
consolemysql> quit Bye
##CakePHP3を取得
-
composerでインストール
console$ composer create-project --prefer-dist cakephp/app [appName] Installing cakephp/app (3.0.1) - Installing cakephp/app (3.0.1) Downloading: 100% Created project in test Loading composer repositories with package information Installing dependencies (including require-dev) - Installing aura/installer-default (1.0.0) Downloading: 100% - Installing cakephp/plugin-installer (0.0.11) Downloading: 100% . . . . Created `config/app.php` file Set Folder Permissions ? (Default to Y) [Y,n]?
なかなか時間がかかった。
俺がPermission設定しちゃうけどどうする?ってComposerが聞いてくるのでとりあえず、デフォルトがyesなので何も入力せずEnterconsolePermissions set on /home/vagrant/test/tmp/cache Permissions set on /home/vagrant/test/tmp/cache/models Permissions set on /home/vagrant/test/tmp/cache/persistent Permissions set on /home/vagrant/test/tmp/cache/views Permissions set on /home/vagrant/test/tmp/sessions Permissions set on /home/vagrant/test/tmp/tests Permissions set on /home/vagrant/test/tmp Permissions set on /home/vagrant/test/logs Updated Security.salt value in config/app.php
でインストール終了。Security.saltの設定は後回し
##とりあえず、動くか確認
-
ビルトインサーバーがあるらしいので使ってみる。
console$ cd [appName] $ bin/cake server Welcome to CakePHP v3.0.1 Console --------------------------------------------------------------- App : src Path: /home/vagrant/test/src/ DocumentRoot: /home/vagrant/test/webroot --------------------------------------------------------------- built-in server is running in http://localhost:8765/ You can exit with `CTRL-C`
おお、動いた
この状態で http://192.168.33.10:8765/ にアクセスする。
(仮想マシン上に構成していない場合は http://localhost:8765/ で構いません。これ以降に出てくる192.168.33.10もすべてlocalhostに置き換えてください)Chrome 「 このウェブページにアクセスできません。 」
-
原因確認
-
Vagrant上でcurlしてみる。
console$ curl http://localhost:8765/ <!DOCTYPE html> <html> <head> . . . . 以下略
動いてるけどアクセスできない。
-
Cakeサーバーを起動した状態でssしてみる。
console$ ss -lnput | grep 8765 tcp LISTEN 0 128 ::1:8765 :::* users:(("php",10467,10))
localAddress:Portが::1:8765になってる。これか。
-
cake serverのオプションで起動してみる。
console$ bin/cake server -h Welcome to CakePHP v3.0.1 Console --------------------------------------------------------------- App : src Path: /home/vagrant/test/src/ DocumentRoot: /home/vagrant/test/webroot/ --------------------------------------------------------------- PHP Built-in Server for CakePHP [WARN] Do not use this at the production environment Usage: cake server [-h] [-v] [-q] [-H] [-p] [-d] Options: --help, -h Display this help. --verbose, -v Enable verbose output. --quiet, -q Enable quiet output. --host, -H ServerHost --port, -p ListenPort --document_root, -d DocumentRoot
-Hでホストが指定できるようだ。
console$ bin/cake server -H 0.0.0.0 Welcome to CakePHP v3.0.1 Console --------------------------------------------------------------- App : src Path: /home/vagrant/test/src/ DocumentRoot: /home/vagrant/test/webroot --------------------------------------------------------------- built-in server is running in http://0.0.0.0:8765/ You can exit with `CTRL-C`
こんどこそ http://192.168.33.10:8765/
やったね
-
##Apacheを動かす
-
関連モジュールとしてインストールされる記憶があったけど、インストールされていないならインストールする。
console$ sudo yum install httpd
console$ sudo service httpd start Starting httpd: httpd: apr_sockaddr_info_get() failed for vagrant-centos65.vagrantup.com httpd: Could not reliably determine the servers fully qualified domain name, using 127.0.0.1 for ServerName [ OK ]
起動した
ServerName変えろよって怒られる。 -
確認
http://192.168.33.10 アクセスおーけー
で、こうやって開いたらCakeのページが出るようにしたい -
Cakeをドキュメントルートに移動する
console$ cd .. $ sudo mv [appName] /var/www/html/ $ cd /var/www/html/ $ ls [appName]
-
ドキュメントルートを書き換える
console$ sudo sed -i 's_DocumentRoot \"/var/www/html\"_DocumentRoot \"/var/www/html/[appName]\"_' /etc/httpd/conf/httpd.conf
[appName]は各自書き換えてください
-
Apache起動するたびに怒られるのでServerNameも書き換える
consolesudo sed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1/' /etc/httpd/conf/httpd.conf
-
.htaccessも許可しとく
console$ sudo sed -i '/<Directory \"\/var\/www\/html\">/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
-
Apache再起動
console$ sudo service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
今度は何も怒られない
-
確認
もう一度アクセス http://192.168.33.10
めちゃエラー出てる
どうやらキャッシュが書き込めない感じのPermissionDenied -
[appName]のOwnerとGroupをapacheにする
console$ sudo chown -R apache:apache [appName]
-
確認
http://192.168.33.10 アクセスさきほどと同じ画面が出れば成功です
##MySQLに接続する
-
[appName]/config/app.phpを編集する
console$ sudo vi [appName]/config/app.php
app.phpの210行目あたりから'Datasources' => [ 'default' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Mysql', 'persistent' => false, 'host' => 'localhost', /** * CakePHP will use the default DB port based on the driver selected * MySQL on MAMP uses port 8889, MAMP users will want to uncomment * the following line and set the port accordingly */ //'port' => 'nonstandard_port_number', 'username' => 'root', 'password' => '', 'database' => 'test', 'encoding' => 'utf8', 'timezone' => 'UTC', 'cacheMetadata' => true,
こんな感じに書き換える。
基本的にはusernameとpasswordとdatabaseしか書き換えなくてよい
*各自の環境に合わせてください。 -
確認
CakePHP is able to connect to the database.
つながりました
##最後に
とりあえず、インストールしてApacheで動作したので今回は満足です。
ありがとうございました。