Ubuntu14にnginx+Mysql+Phalconの環境を構築する


Ubuntu14 + nginx + Mysql5.6 + Phalconの環境を構築してみました。
作業をした際の手順のメモ書きなので、不備がありましたらごめんなさい。

## 前提

vagrantが利用可能であること。
私の環境はMacbookAirにて実施しています。

## vagrant

以下のようなVagrantfileを利用して、vagrant upを実行します。
メモリはPhalconをコンパイルする時にエラーにならないように2048入れておきます。

```Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "ubuntu14"
  config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
  config.vbguest.auto_update = false
  config.vm.define :phalcon_test do |phalcon_test|
    phalcon_test.vm.network :private_network, ip:"192.168.33.100"
    phalcon_test.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", "2048"]
    end
  end
end
```

## Ubuntuのセットアップ

vagrant sshでログインし、セットアップ

```
$ vagrant ssh
```

### php

phpのインストール。現地点では5.5.16が入ります。
[手順はこちらを参考にしています。](http://qiita.com/ykirishima/items/125be15450e385af39e8)



```
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:ondrej/php5
$ sudo apt-get update
$ sudo apt-get install php5 php5-cli php5-dev php5-mysql php5-fpm
```

### mysql

mysql5.6のインストール。rootのパスワードを確認されるので設定する。

```
$ sudo apt-get install mysql-server-5.6
```


### nginx

nginxのインストール。

```
$ sudo apt-get install nginx
```

この段階で http://192.168.33.100/ にアクセスすると、nginxの初期画面が表示されると思います。

### phalcon

基本パッケージのインストール。

```
$ sudo apt-get install git-core gcc autoconf libpcre3-dev
```

phalconのインストール。

```
$ git clone git://github.com/phalcon/cphalcon.git
$ cd cphalcon/build
$ sudo ./install
```

以下のファイルを追加。

* /etc/php5/cli/conf.d/20-phalcon.ini
* /etc/php5/fpm/conf.d/20-phalcon.ini

```20-phalcon.ini
extension=phalcon.so
```

サービスの再起動

```
$ sudo service nginx restart
$ sudo service php5-fpm restart
```


### composer

composerのインストール。インストールするディレクトリはとりあえず$HOMEにしています。

```
$ cd ~
$ curl -s http://getcomposer.org/installer | php
```

composer.jsonの作成

```composer.json
{
    "require": {
        "phalcon/devtools": "dev-master"
    }
}
```

composerでインストールを実行

```
$ php composer.phar install
```

phalcon.phpスクリプトへのシンボリックリンクを作成

```
$ sudo ln -s ~/vendor/phalcon/devtools/phalcon.php /usr/bin/phalcon
$ sudo chmod ugo+x /usr/bin/phalcon
```

## phalconのプロジェクト作成

### プロジェクト作成

phalconのプロジェクトを作成します。

```
$ cd /vagrant
$ phalcon project phalcon_test
```

### nginxの設定

[phalconのNginx インストールノート](http://docs.phalconphp.com/ja/latest/reference/nginx.html)に従う。ホスト毎の設定の部分で作成した。
[その他の設定についてはこちら](http://nodejs.osser.jp/thread/53440873b986bc810f3930e1)を参考にした。


```/etc/nginx/sites-available/phalcon_test.conf
server {
    listen   80;
    server_name phalcon_test;
    set    $root_path '/vagrant/phalcon_test/public';
    root   $root_path;

    access_log /var/log/nginx/phalcon_test-access.log;
    error_log  /var/log/nginx/phalcon_test-error.log error;

    index  index.php index.html index.htm;

    try_files $uri $uri/ @rewrite;

    location @rewrite {
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php5-fpm.sock;

        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
        root $root_path;
    }

    location ~ /\.ht {
        deny all;
    }

}
```

設定後、シンボリックリンクを作成

```
$ sudo ln -s /etc/nginx/sites-available/phalcon_test.conf /etc/nginx/sites-enabled/phalcon_test.conf
```

/etc/php5/fpm/pool.d/www.confのユーザを編集。

```/etc/php5/fpm/pool.d/www.conf
;user = www-data
;group = www-data
user = vagrant
group = vagrant

;listen.owner = www-data
;listen.group = www-data
listen.owner = vagrant
listen.group = vagrant
```

/etc/nginx/nginx.confのユーザを編集。

```/etc/nginx/nginx.conf
## user www-data;
user vagrant
```

サービスの再起動します。

```
sudo service nginx restart
sudo service php5-fpm restart
```

ブラウザにてアクセスしてCongratulations!が出れば完了。

### webtoolsの有効化

webtoolsを有効化する

```
cd /vagrant/phalcon_test
$ phalcon webtools enable
```

そのままだとCSSが効かなかったのでファイルを修正

```app/config/config.php
'baseUri'        => '/',
```


これで、http://192.168.33.100/webtools.php にアクセスするとwebtoolsが使えるようになります。


次は、DBを作成します。

```
$ mysql -uroot -p
$ create database test;
$ exit;
```

DBを作成したあと、phalconのファイルを修正します。

```app/config/config.php
    'database' => array(
        'adapter'     => 'Mysql',
        'host'        => 'localhost',
        'username'    => 'root',
        'password'    => 'root',
        'dbname'      => 'test', 
    ),
```

これでwebtoolにてSccaffoldやMigrationsが使えるようになります。
この手順にて、Phalconに興味がある方のちょっとだけでも力になるようでしたら幸いです。

## 参考にしたサイト

* [Ubuntu12でPHP5.5をインストール](http://qiita.com/ykirishima/items/125be15450e385af39e8)
* [phalconのNginx インストールノート](http://docs.phalconphp.com/ja/latest/reference/nginx.html)
* [nginx最大パフォーマンスを出すための基本設定](http://nodejs.osser.jp/thread/53440873b986bc810f3930e1)