zoukankan      html  css  js  c++  java
  • GY的实验室

    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的各种内部机制吧!

  • 相关阅读:
    bzoj2064分裂(dp)
    关于逆元的学习笔记(尚未完成)
    线性基学习笔记
    bzoj2460元素(线性基,贪心)
    CF280C Game on tree(期望dp)
    XJOI contest800
    关闭极域电子教室学生端的各种方法
    大坑!有网,电脑qq登不上去!!
    4.25 ZJOI2017 10AM
    bzoj1621
  • 原文地址:https://www.cnblogs.com/sandea/p/4392239.html
Copyright © 2011-2022 走看看