CentOSにPhalcon(PHPフレームワーク)をインストールする


phalcon-install01

Phalconを使う機会ができたので、検証の備忘録としてメモりました。検証環境は以下の通りである。Mac上でVagrantによりCentOSのLAMP環境を作りそこにPhalconをインストールします。
※Vagrantの概要は「自分が Vagrantで LAMP環境を作る理由」参考

Phalcon2.09

ホストOS OS X 10.8.3
Vagrant Box CentOS 7.1 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30
LAMP Apache 2.4.6 (CentOS)
PHP 5.6.16 (cli)
MySQL 5.6.28 for Linux on x86_64

PhalconはPHPエクステンション

PhalconもPHPフレームワークですが、CodeIgniterやCakePHPなど多くのPHPフレームワークと仕組みが違います。フレームワークはよく使う機能やライブラリそして制御構造などを準備してくれるもので、アプリをゼロから作らなくても土台ができたところから進めるようなものです。

CodeIgniterやCakePHPは、フレームワーク自体もPHPスクリプトで、それをダウンロードしそこにコードを追加していく感じで作っていきます。なのでフレームワークと自分の書いたコードを合わせたのがアプリのソースとして管理します。

phalcon-install02

それに対して、PhalconはC言語で書かれたPHPフレームワークです。PHPのアプリのソースとして動作するのではなく、PHPそのものの機能を拡張するモジュールとして動作します。こういう仕組みで高速かつ低メモリなどのメリットがあります。

phalcon-install03

Phalconのインストールはモジュールのインストール

では、インストールしていきます。上記の仕組みでPhalconはモジュールのインストールになります。
必要となるパッケージは次の通りです

  • PHP 5.3.x/5.4.x/5.5.x development resources
  • GCC compiler (Linux/Solaris)
  • Git(任意)

Gitは直接GitHubからパッケージをダウンロードしてFTPなどでアップするなら必要ないです。

必要条件を満たしているか確認

PHP 5.3.x/5.4.x/5.5.x development resources
php -v

[vagrant@localhost ~]$ php -v
PHP 5.6.16 (cli) (built: Nov 26 2015 07:52:51) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
[vagrant@localhost ~]$ 

PHP 5.6.16なので条件を満たしています。

GCC compiler (Linux/Solaris)
gcc --version

[root@localhost ~]# gcc --version
gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@localhost ~]# 

gcc (GCC) 4.8.3がインストールされているので条件を満たしています。

Git(任意)
git --version

[root@localhost ~]# git --version
git version 1.8.3.1
[root@localhost ~]#

Git 1.8.3.1がインストールされているので、今回はPhalconをGitを使ってインストールします。

必要条件のインストール、更新

必要条件を満たしていますが、念のため更新しておきます。同じコマンドで未インストールの場合はインストールされます。

sudo yum install gcc make

[root@localhost ~]# sudo yum install gcc make
Loaded plugins: fastestmirror

略

Updated:
  gcc.x86_64 0:4.8.5-4.el7                                                                 

Dependency Updated:
  cpp.x86_64 0:4.8.5-4.el7                  gcc-c++.x86_64 0:4.8.5-4.el7                   
  libgcc.x86_64 0:4.8.5-4.el7               libgomp.x86_64 0:4.8.5-4.el7                   
  libstdc++.x86_64 0:4.8.5-4.el7         libstdc++-devel.x86_64 0:4.8.5-4.el7           

Complete!

GCC compilerのインストール(or 更新)です。GCCに最新バージョンがあったようで更新され、それに伴い依存モジュールも更新されました。

sudo sudo yum install php-devel

root@localhost ~]# sudo yum install php-devel
Loaded plugins: fastestmirror

略

Package matching php-devel-5.4.16-36.el7_1.x86_64 already installed. Checking for update.
Nothing to do

php-develは最新のようです。当初PHP7予定してたのですが、php-develがまだyum対応していないようで依存関係失敗してしまったんです。拡張モジュールのPhalconはPHPコアの影響を受けやすいのでPHP7はもうしばらく様子見かな。PHP7も高速化されてるので使いたかったのですが・・・

Phalcon 拡張モジュールのダウンロード

Gitを使ってダウンロードします。今回は「/home/vagrant」にダウンロードしますが、ただのファイルのダウンロードなのでどこでもいいです。カレントをファイルの置きたいディレクトリに移動します。

[root@localhost ~]# cd /home/vagrant
[root@localhost vagrant]# pwd
/home/vagrant

Gitでファイルをダウンロードします。
git clone git://github.com/phalcon/cphalcon.git

[root@localhost vagrant]# git clone git://github.com/phalcon/cphalcon.git
Cloning into 'cphalcon'...
remote: Counting objects: 97158, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 97158 (delta 0), reused 0 (delta 0), pack-reused 97154
Receiving objects: 100% (97158/97158), 86.01 MiB | 2.07 MiB/s, done.
Resolving deltas: 100% (75627/75627), done.

[root@localhost vagrant]# ls
cphalcon
[root@localhost vagrant]#

cphalconディレクトリができています。cphalconディレクトリ内の階層は以下のようになっています(※一階層のみ)。

root@localhost vagrant]# tree . -d -L 2
.
└── cphalcon
    ├── build
    ├── docs
    ├── ext
    ├── optimizers
    ├── phalcon
    ├── php-tests
    ├── tests
    └── unit-tests

9 directories

Phalcon 拡張モジュールのインストール

cphalcon > build にカレントを移します。

[root@localhost vagrant]# cd cphalcon/build
[root@localhost build]# ls
32bits     gcccpuopt      install-gentoo  _resource       use-pgo-install
64bits     gen-build.php  pgo-install     safe
gccarch.c  install        README.md       travis-install
[root@localhost build]#

installがあるのでコマンドを叩きます。

sudo ./install

[root@localhost build]# sudo ./install
Configuring for:

略

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib64/php/modules/
Installing header files:          /usr/include/php/

Thanks for compiling Phalcon!
Build succeed: Please restart your web server to complete the installation

Installing shared extensions: /usr/lib64/php/modules/

/usr/lib64/php/modules/ に拡張モジュールがインストールされたとのこと。

[root@localhost modules]# cd /usr/lib64/php/modules/
[root@localhost modules]# pwd
/usr/lib64/php/modules
[root@localhost modules]# ls | grep phalcon
phalcon.so
[root@localhost modules]#

拡張モジュール phalcon.so が存在することが確認できました。

phalcon-install04

PHP設定の extension_dir(動的にロード可能な拡張モジュールを置くディレクトリを指定) で設定したディレクトリと一致しています。次にこのPhalconモジュールを使うように設定します。

Phalconモジュールを有効にする (iniファイル)

phalcon-install05
phalcon.so モジュールを有効にするため iniファイルを設定します。php.iniに直接設定してもいいのですが、additional .ini files で設定したディレクトリ内に置いたiniファイルは自動的に読まれるので、そこで専用のファイル作って設定します。
今回は、phalcon.ini ファイルを作ってそこに
extension=phalcon.so
を記述しました。下記は記述確認コマンドです。

[root@localhost ~]# cd /etc/php.d;pwd
/etc/php.d
[root@localhost php.d]# ls | grep phalcon.ini
phalcon.ini
[root@localhost php.d]# cat phalcon.ini
extension=phalcon.so

Apacheを再起動する

PHPの設定を変更したのでApacheを再起動します。

[root@localhost php.d]# systemctl restart httpd.service
[root@localhost php.d]# 

Phalconモジュールが反映されているか確認する

phpinfoで反映されているか確認します。
phalcon-install06
phalcon.ini ファイルが読み込まれていることが確認できます。
phalcon-install07
Phalconモジュールが反映されていることが確認できました。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です