因为半路出家的缘故,没用过几个PHP框架,第一个了解的框架是公司本身的,而后又试着用了Yii,CI。在读了CSDN在某度的高排名翻译文章(PHP开发框架流行度排名:Laravel居首)后,看了Laravel的皮毛。不得不说Laravel的文档真是漂亮,可是做为一个后台程序开发者,总以为也不是本身想要的。php
框架的做用:先后端代码解耦;数据库操做封装;内置通用程序模块(好比路由、认证、加密等);css
虽然整个网站中,框架性能并不是主要因素,可是仍是想把它发挥到极致,只能说是程序员的理想主义在做祟啦。
phalcon就是这种框架。PHP框架这么一个直接跟业务代码打交道的东西,都用本地化语言编写,够Geek。事实上,虽然说框架只是提供代码调度和封装,其自己的性能也不容忽视。html
本地化语言:就是能够编译成机器码(那种能够直接跑在本机CPU上的代码啦)的语言,C/C++/Obj-C, ASM这种的。优势是执行起来快快快,且有些硬件API,也许只有C接口,所以较解释型语言更适合嵌入式领域,缺点是需从新编译才能实现跨平台,且一样的功能,开发起来复杂度比脚本和Java要高mysql
Phalcon的方式是经过PHP扩展,将框架代码编译进去,使得编译后的php命令支持一些框架类和依赖注入。编译很是简单nginx
#下载安装依赖库 sudo apt-get install php5-dev libpcre3-dev gcc make php5-mysql php5-fpm #下载git库 git clone --depth=1 git://github.com/phalcon/cphalcon.git cd cphalcon/build sudo ./install #增长/etc/php5/fpm/conf.d/30-phalcon.ini sudo echo 'extension=phalcon.so' > /etc/php5/fpm/conf.d/30-phalcon.ini #增长/etc/php5/cli/conf.d/30-phalcon.ini sudo echo 'extension=phalcon.so' > /etc/php5/cli/conf.d/30-phalcon.ini
如今检查下安装是否成功。git
php -r 'echo phpinfo();' | grep -i phalcon
若是输出下面这样算做成功程序员
/etc/php5/cli/conf.d/30-phalcon.ini phalcon Phalcon Framework => enabled Phalcon Version => 1.3.4 phalcon.db.escape_identifiers => On => On phalcon.orm.column_renaming => On => On phalcon.orm.enable_literals => On => On phalcon.orm.events => On => On phalcon.orm.exception_on_failed_save => Off => Off phalcon.orm.not_null_validations => On => On phalcon.orm.virtual_foreign_keys => On => On phalcon.register_psr3_classes => Off => Off
也能够经过下面这种方式检测:github
php -r 'echo print_r(get_loaded_extensions());'
若是输出下面这样算做成功web
Array ( [0] => Core [1] => date [2] => ereg [3] => libxml [4] => openssl ...
Nginx的安装略去sql
配置修改:修改/etc/nginx/site-avaliable/default 或 /etc/nginx/conf.d/default,取决于/etc/nginx/nginx.conf的配置和我的喜爱
这里为了测试,在default文件中配置了两个域名,共用8080端口
server { listen 8080 default_server; server_name ~^(.+)$; index index.php index.html index.htm; set $root_path '/srv/www/htdocs/phalcon-website/public'; root $root_path; try_files $uri $uri/ @rewrite; location @rewrite { rewrite ^/(.*)$ /index.php?_url=/$1; } location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { root $root_path; } location ~ /\.ht { deny all; } location ~ \.php$ { fastcgi_index /index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; include 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; } } server { listen 8080; #这里在测试时用store_server域名,本机须要绑定hosts才能解析 server_name store_server; index index.php index.html index.htm; set $root_path '/srv/www/htdocs/store/public'; root $root_path; try_files $uri $uri/ @rewrite; location @rewrite { rewrite ^/(.*)$ /index.php?_url=/$1; } location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { root $root_path; } location ~ /\.ht { deny all; } location ~ \.php$ { fastcgi_index /index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; include 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; } }
这个是phalcon的脚手架工具,支持一组命令,可以为您自动生成代码。
git clone git://github.com/phalcon/phalcon-devtools.git cd phalcon-devtools/ && sudo ln -s ~/devtools/phalcon.php /usr/bin/phalcon
而后执行phalcon commands
,会出现命令提示
Phalcon DevTools (1.3.4) Available commands: commands (alias of: list, enumerate) controller (alias of: create-controller) model (alias of: create-model) all-models (alias of: create-all-models) project (alias of: create-project) scaffold migration webtools
执行create-project就能生成一套框架代码啦!
cd /srv/www/htdocs/ && phalcon create-project store
终于到了一个兴奋点了,哈哈
#重启fpm和nginx sudo service php5-fpm restart sudo service nginx restart
而后本机绑定host: store_server,在浏览器栏输入store_server:8080,就能看到大大的Congratulations了!
期间可能会遇到权限问题,缘由是不管nginx建立子进程,仍是php5-fpm建立子进程,用得都是www-data的用户名和群组。
要修改默认值,赋值为自定义的值。请分别修改/etc/nginx/nginx.conf和/etc/php5/fpm/pool.d/www.conf的user和group
至此,环境搭建完毕,接下来去探索Phalcon的各类内部机制吧!