はじめに
この記事は、オールアバウト Advent Calendar 2016の15日目の記事です。
こんばんわ。
オールアバウトではPhalconは使ってないですがプライベートネタで。
なぜPhalcon?
jsonデータのやりとりをするだけのサーバだったのでシンプルなマイクロフレームワークでよかったのと、PHP7にも対応してたので。(あと名前がカッコイイ...)
https://phalconphp.com/
ちなみに、今年のPHPカンファレンスでフレームワークアンケートでは6位だったようです。そこそこ人気?(全体数の5%だけど...orz)
https://freelance.levtech.jp/guide/detail/76/
EC2 Amazon AMI (t2.nano)構築
画面からポチポチするだけなのでここは割愛。
PHP7, nginx, その他のインストール
APIサーバで使いそうなのも一緒にインストール。
PHP7はremiから。
su -
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install nginx
yum --enablerepo=remi-php70 install php-devel php-mcrypt
yum --enablerepo=remi-php70 --disablerepo=amzn-main install php php-opcache php-mbstring php-pecl-apc php-mysqlnd php-xml php-mysql php-fpm php-pecl-zip php-bcmath
rpm -qa | grep php
chkconfigの設定
再起動時にonになる様にレベルを設定。
chkconfig --add nginx
chkconfig nginx on
chkconfig --add php-fpm
chkconfig php-fpm on
phalcon3の設定
Phalconはgithubにあるのでgitとインストールに必要なのを取得。
Phalcon3はzephirで動くのでgitでこちらも一緒にとってきます。
https://zephir-lang.com/
yum install pcre-devel gcc make re2c git
cd /usr/local/src
git clone https://github.com/phalcon/zephir
cd zephir/
./install -c
git clone http://github.com/phalcon/cphalcon
cd cphalcon
git checkout 3.0.x
zephir build --backend=ZendEngine3
エクステンションの設定はPHP7だと少し違う(のか?)様で引っかかりました。
/etc/php.d/配下にそれぞれiniファイルがナンバリングされているので以下の様にして作成。
php --ini
して場所を探して以下に追加しました。
extension=phalcon.so
composerも。
composer.jsonの内容は以下から。
https://phalconphp.com/ja/download/tools
mkdir /var/composer
cd /var/composer
curl -s http://getcomposer.org/installer | php
vi composer.json
php composer.phar install
sudo ln -s /var/composer/vendor/phalcon/devtools/phalcon.php /usr/bin/phalcon
sudo chmod ugo+x /usr/bin/phalcon
で、再起動すると無事に動きました。
/etc/init.d/nginx configtest
/etc/init.d/nginx start
/etc/init.d/php-fpm start
nginxとPHP-FPMの設定
nginxはバーチャルホストを使うのでポートをお好みで設定。
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
server {
listen [お好きなポート];
server_name localhost;
index index.php index.html;
set $root_path '[project-dir]/[project-name]/public';
root $root_path;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index /index.php;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
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;
}
}
php−fpmの起動するユーザをnginxに。
listen.owner = nginx
listen.group = nginx
phalconアプリ構築
phalconコマンドがあるのでこれで指定のディレクトリにアプリが作られます。
cd [project-dir]
phalcon project [project-name]
ちなみに、権限ゆるくしないとエラーになりました。
chmod -R 777 [project-dir]/[project-name]/cache/
chmod -R 777 /var/run/php-fpm/
で、起動。
/etc/init.d/nginx configtest
/etc/init.d/nginx restart
/etc/init.d/php-fpm restart
で、ブラウザからアクセス。
http://127.0.0.1:[設定したポート]/
あとは、json返すプログラムを書けば完成です。
なんか勘違いしてたらコメントくださいw
ではー。