Phalcon简介

由于半路出家的缘故,没用过几个PHP框架,第一个了解的框架是公司自己的,然后又试着用了Yii,CI。在读了CSDN在某度的高排名翻译文章(PHP开发框架流行度排名:Laravel居首)后,看了Laravel的皮毛。不得不说Laravel的文档真是漂亮,但是作为一个后台程序开发者,总觉得也不是自己想要的。

框架的作用:前后端代码解耦;数据库操作封装;内置通用程序模块(比如路由、认证、加密等);

虽然整个网站中,框架性能并非主要因素,但是还是想把它发挥到极致,只能说是程序员的理想主义在作祟啦。
phalcon就是这种框架。PHP框架这么一个直接跟业务代码打交道的东西,都用本地化语言编写,够Geek。事实上,虽说框架只是提供代码调度和封装,其本身的性能也不容忽视。

本地化语言:就是可以编译成机器码(那种可以直接跑在本机CPU上的代码啦)的语言,C/C++/Obj-C, ASM这种的。优点是执行起来快快快,且有些硬件API,也许只有C接口,因此较解释型语言更适合嵌入式领域,缺点是需重新编译才能实现跨平台,且同样的功能,开发起来复杂度比脚本和Java要高

1. Ubuntu编译

Phalcon的方式是通过PHP扩展,将框架代码编译进去,使得编译后的php命令支持一些框架类和依赖注入。编译非常简单

#下载安装依赖库
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

2. 检查php扩展

现在检查下安装是否成功。

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

也可以通过下面这种方式检测:

php -r 'echo print_r(get_loaded_extensions());'

如果输出下面这样算作成功

Array
(
[0] => Core
[1] => date
[2] => ereg
[3] => libxml
[4] => openssl
...

3. Nginx配置

Nginx的安装略去

配置修改:修改/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;
}
}

4. phalcon-devtools安装

这个是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

5. 启动服务器

终于到了一个兴奋点了,哈哈

#重启fpm和nginx
sudo service php5-fpm restart
sudo service nginx restart

然后本机绑定host: store_server,在浏览器栏输入store_server:8080,就能看到大大的Congratulations了!

6. 服务器虚拟用户名修改

期间可能会遇到权限问题,原因是无论nginx创建子进程,还是php5-fpm创建子进程,用得都是www-data的用户名和群组。
要修改默认值,赋值为自定义的值。请分别修改/etc/nginx/nginx.conf和/etc/php5/fpm/pool.d/www.conf的user和group


至此,环境搭建完毕,接下来去探索Phalcon的各种内部机制吧!

GY的实验室 - Phalcon+Nginx+PHP-FPM环境搭建(转)的更多相关文章

  1. Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建)

    Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建) 具体案例:局域网内有两台主机,一台Linux.一台Windows,现在需要配置一台Cacti监控服务器对这两台 ...

  2. HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客

    HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机   2014年06月02日 17:20   评论»       文章目录 Debian上安装 Ce ...

  3. Nginx详解二十三:Nginx深度学习篇之Nginx+Lua开发环境搭建

    Nginx+Lua开发环境 1.下载LuaJIT解释器wget http://luajit.org/download/LuaJIT-2.0.2.tar.gztar -zxvf LuaJIT-2.0.2 ...

  4. wnmp(windows+nginx+mysql+php)环境搭建和配置

    要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); nginx-1.4.7;MySQL Server 5.5php-5.4.39-nts 下载地址 环境下载 Nginx是 ...

  5. nginx + lua +redis环境搭建

    环境搭建,其实主要是lua的环境,这个环境够麻烦的,在网上找了很多前辈的文章,终于完成了 ,安装redis wget http://download.redis.io/releases/redis-3 ...

  6. [Linux][Ubuntu18.04.1] nginx+php+MySQL环境搭建

    说在前面 今天在腾讯云的CVM服务器搭建了一下环境[主机:标准型S2,Unbuntu18.04的LST版本] 采用了nginx服务器(Nginx 静态处理性能比 Apache高3倍以上,不过apach ...

  7. CentOS Nginx+jdk+tomcat 环境搭建

    一.jdk安装 jdk下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloa ...

  8. CentOS下nginx php mysql 环境搭建

    CentOS下搭建PHP运行环境. 首先是在虚拟机上装好一个命令行的CentOS,如果只是弄服务器的话,不要装图形界面,会比较卡. 一.安装编译工具及库文件 yum -y install make z ...

  9. 【linux下多实例Tomcat+Nginx+redis+mysql环境搭建】

    一.搭建环境之前最好自己先创建一个文件夹,再次文件夹下在创建文件夹来安放项目包和Tomcat等应用以及性能测试监控的文件 1.项目存放地址: mkdir export (创建一个文件),mkdir a ...

随机推荐

  1. Python基础数据类型之集合

    Python基础数据类型之集合 集合(set)是Python基本数据类型之一,它具有天生的去重能力,即集合中的元素不能重复.集合也是无序的,且集合中的元素必须是不可变类型. 一.如何创建一个集合 #1 ...

  2. Matplotlib基本图形之条形图2

    Matplotlib基本图形之条形图2 1.绘制多条条形图 示例代码: import time import numpy as np import matplotlib.pyplot as plt b ...

  3. WPF之DataAnnotations 注解说明

    参考:https://www.cnblogs.com/yaosuc/p/4527886.html 1.基础验证: using System.ComponentModel.DataAnnotations ...

  4. BZOJ 3282 Tree ——Link-Cut Tree

    [题目分析] 明显的LCT维护连通性的题目. access的操作是比较巧妙的,可以把结点到根变成偏爱路径,而且保证了该点是链上深度最深的点. 而且需边的思想也很巧妙,保证了复杂度. 但是只能用于修改路 ...

  5. BZOJ 3749: [POI2015]Łasuchy【动态规划】

    Description 圆桌上摆放着n份食物,围成一圈,第i份食物所含热量为c[i]. 相邻两份食物之间坐着一个人,共有n个人.每个人有两种选择,吃自己左边或者右边的食物.如果两个人选择了同一份食物, ...

  6. 算法复习——带修改莫队(bzoj2453)

    题目: Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少.当然,A ...

  7. 算法复习——树链剖分模板(bzoj1036)

    题目: 题目背景 ZJOI2008 DAY1 T4 题目描述 一棵树上有 n 个节点,编号分别为 1 到 n ,每个节点都有一个权值 w .我们将以下面的形式来要求你对这棵树完成一些操作:I.CHAN ...

  8. Java程序性能优化之缓冲优化

    优化前的代码: package com; import javax.swing.*; import java.awt.*; /** * 使用Eclipse,右键Run As,Java Applet运行 ...

  9. uva 10710 快速幂取模

    //题目大意:输入一个n值问洗牌n-1次后是不是会变成初始状态(Jimmy-number),从案例可看出牌1的位置变化为2^i%n,所以最终判断2^(n-1)=1(mod n)是否成立#include ...

  10. 济南学习 Day 5 T3 am

    [题目描述] 众所不知,rly现在不会玩国际象棋.但是,作为一个OIer,rly当然做过八皇后问题.在这里再啰嗦几句,皇后可以攻击到同行同列同对角线,在 n*n的棋盘中,摆放n个皇后使它们互相不能攻击 ...