LNMP(Linux+Nginx+Mysql+PHP)环境下安装yaf框架并编写一个MVC例子

1、下载yaf源码包yaf-2.2.9.tar.gz,并将其上传到服务器指定的位置,然后解压并安装:

[[email protected] src]# tar -xvf yaf-2.2.9.tar.gz

进入解压后的目录:

[[email protected] src]# cd yaf-2.2.9

一次执行:

[[email protected] yaf-2.2.9]# /usr/local/php/bin/phpize

[[email protected] yaf-2.2.9]# ./configure --with-php-config=/usr/local/php/bin/php-config

[[email protected] yaf-2.2.9]# make && make install

2、查看编译后的文件:

[[email protected] ~]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/yaf.so

-rwxr-xr-x 1 root root 771610 Jul  8 18:13 /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/yaf.so

//可以看到 yaf.so php扩展也已经帮我们编译好了

3、配置 php.ini

[[email protected] ~]# vim /usr/local/php/lib/php.ini

extension=yaf.so   //然后在php.ini中载入yaf.so

4、重启php-fpm

[[email protected] ~]# service php-fpm restart

Gracefully shutting down php-fpm . done

Starting php-fpm  done

5、查看phpinfo()

3、利用Yaf自带的快速代码生成工具 yaf_code_generator 生成代码:

1)下载yaf工具包,浏览https://github.com/laruence/php-yaf,下载源码包php-yaf-yaf-2.2.9.tar.gz,并将其上传到服务器指定位置,然后解压:

[[email protected] src]# tar -xvf php-yaf-yaf-2.2.9.tar.gz

然后进入解压后的目录:

[[email protected] src]# cd php-yaf-yaf-2.2.9

然后进入tools/cg目录下:

[[email protected] php-yaf-yaf-2.2.9]# cd tools/cg/

然后执行(app是生成的目录名):

[[email protected] cg]# /usr/local/php/bin/php  yaf_cg  app

执行以上代码,将在cg/output/目录生成一份yaf的骨架代码app

2)将生成的app项目骨架代码复制到nginx的html(网站根目录)目录下:

[[email protected] ~]# cp -r /usr/src/php-yaf-yaf-2.2.9/tools/cg/output/app  /usr/local/nginx/html/

3)一个典型的yaf应用的目录结构:

+ public

|- index.php //入口文件

|- .htaccess //重写规则

|+ css

|+ img

|+ js

+ conf

|- application.ini //配置文件

+ application

|+ controllers

|- Index.php //默认控制器

|+ views

|+ index   //控制器

|- index.phtml //默认视图

|+ modules //其他模块

|+ library //本地类库

|+ models  //model目录

|+ plugins //插件目录

入口文件:是所有请求的入口,一般都借助于rewrite规则,把所有的请求都重定向到这个入口文件,一个经典的入口文件如下:

[[email protected] app]# vim index.php

<?php

define(‘APPLICATION_PATH‘, dirname(__FILE__));

$application = new Yaf_Application( APPLICATION_PATH . "/conf/application.ini");

$application->bootstrap()->run();

?>

配置文件:在Yaf中, 配置文件支持继承,支持分节。 并对PHP的常量进行支持, 不用担心配置文件太大造成解析性能问题, 因为Yaf会在第一个运行的时候载入配置文件, 把格式化后的内容保持在内存中,直到配置文件有了修改,才会再次载入,一个简单的配置文件:

[[email protected] conf]# vim application.ini

[common]

application.directory = APPLICATION_PATH  "/application"

application.dispatcher.catchException = TRUE

[product : common]

重写规则:除非我们使用基于query string的路由协议(Yaf_Route_Simple, Yaf_Route_Supervar), 否则我们就需要使用WebServer提供的Rewrite规则, 把所有这个应用的请求, 都定向到上面提到的入口文件;

Nginx的Rewrite (nginx.conf),按如下修改文件:

[[email protected] conf]# vim nginx.conf

location / {

root   html/app;

#root html;

index  index.html index.htm index.php;

}

location ~ \.php$ {

root           html/app;

#root html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

include        fastcgi_params;

}

if (!-e $request_filename) {

#rewrite ^/(.*)  /index.php/$1 last; //这样不行

rewrite ^/(.*)  /index.php?$1 last;

}

修改完配置文件nginx.conf后记得重启:

[[email protected] conf]# service nginx restart

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

Stopping nginx:                                            [  OK  ]

Starting nginx:                                              [  OK  ]

4)一个基于Yaf框架的MVC的简单例子:

控制器(controllers):在Yaf中, 默认的模块/控制器/动作,都是以Index命名的,当然,这是可通过配置文件修改的。对于默认模块,控制器的目录是在application目录下的controllers目录下,Action的命名规则是"名字+Action";

[[email protected] controllers]# vim Test.php

<?php
class TestController extends Yaf_Controller_Abstract {
        public function testAction() {
                //1. fetch query
                $get = $this->getRequest()->getQuery("get", "default value");
                //2. fetch model
                $model = new TestModel();
                //3. assign
                $this->getView()->assign("lists", $model->selectName());
        return TRUE;
        }
}
?>

模型(models):数据获取类, 可以访问数据库,文件,其它系统等

[[email protected] models]# vim Test.php

<?php
/**
 * @models数据获取类, 可以访问数据库,文件,其它系统等
  */
class TestModel {
    public function __construct() {
    }
    public function selectName() {
          $host="localhost";
          $user="root";
          $passwd="20082009";
          $db="heat";
          $query = "select name,content from heat1 order by name";
          $mysqli = new mysqli($host,$user,$passwd) or dir("Unable to connect to mysql!");
          $mysqli->select_db($db);
          $mysqli->query("SET NAMES 'utf8'");//
          $result = $mysqli->query($query);
          while($rows = $result->fetch_array()){
             $lists[] = $rows;
             //$lists = iconv("utf-8","gbk",$lists);//编码转换函数iconv只能接受字符串参数
         }
         $result->free(); //释放资源
         $mysqli->close();//关闭数据库连接
         $result = $lists;
         //数组编码解决方法
         $result = eval('return '.iconv('utf-8','gbk',var_export($result,true)).';');
         return $result;
      }
}
?>

其中数据库heat中表heat1的内容为:

视图(views):Yaf支持简单的视图引擎, 并且支持用户自定义自己的视图引擎,比如Smarty。

对于默认模块,视图文件的路径是在application目录下的views目录中以小写的action名的目录中;

[[email protected] test]# vim test.phtml

<?php
//循环输出数组内容
foreach($lists as $list){
echo $list['name'], "  please see: ", $list['content'];
echo "<br />";
}
?>

在浏览器输入:http://172.16.2.33/index.php/Test/test,即显示如下页面:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 03:33:12

LNMP(Linux+Nginx+Mysql+PHP)环境下安装yaf框架并编写一个MVC例子的相关文章

CENTOS php 7.0 +nginx 环境下 安装yaf框架

 #php -v PHP 7.0.19 (cli) (built: May 12 2017 21:01:27) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies #nginx -v nginx version: nginx/1.12.0 CentOS Linux release 7.2.1511 (Core) 本文前提是已搭建好ph

LNMP(Linux+Nginx+MySQL+PHP)centos6.4安装

nginx命令 停止nginx服务:# /etc/init.d/nginx stop 启动nginx服务:# /etc/init.d/nginx start 编辑nginx配置文件:# vim /etc/nginx/nginx.conf yum安装 1.Nginx. 在/etc/yum.repos.d/目录下建立一个nginx.repo软件源配置文件.命令如下: # cd /etc/yum.repos.d/ # vim 然后填写如下文件内容 [nginx] name=nginx repo bas

Linux Debian 下LNMP服务器——nginx+mysql+php环境搭建及配置

昨天刚给公司服务器装了LNMP服务器环境,在这里简单记录一下过程备忘. 这里我在安装的时候是用的Dotdeb源,仅供参考. 1.导入Dotdeb源,据说Dotdeb源里的软件版本比较新. 在向源中导入Dotdeb前,我们需要先获取GnuPG key并导入: wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | apt-key add - 提示OK,表明导入成功.然后我们开始导入Dotdeb源,源列表的位置在“/etc/apt/sources

centos7安装Lnmp(Linux+Nginx+MySql+Php+phpMyAdmin+Apache)

centos7安装Lnmp(Linux+Nginx+MySql+Php)及Apache Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx是一个高性能的HTTP和反向代理服务器,Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多, 我们学习PHP,以及搭建我们自己的LNMP环境,不妨先在本机上尝试学习,下面我们一步一步来完成在CentOS7 下安装LNMP(Linux+Nginx+MySQL+PHP)及Apache. 查

LNMP=Linux+Nginx+MySQL+PHP

LNMP=Linux+Nginx+MySQL+PHP Nginx深入剖析与安装一.虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问. nginx软件则使用一个server{}标签来标示一个虚拟主机,一个web服务里可以有多个虚拟主机主机标签对,即同时可以支持多个虚拟主机站点. 二.虚拟主机类型 常见的虚拟主机类型有如下几种 2.1 基于域名的虚拟主机 所谓基于域名的

手工安装linux+nginx+mysql+php环境

前一篇我们介绍了使用yum安装linux+nginx+mysql+php环境 今天公司分配了个学习主机,但能内网使用,不能访问外网,就不能yum 安装了那我们来试试手动安装本操作都在centos7下进行 先检查gcc 编辑器有没有安装 gcc -v如没有, 从CentOS7的系统安装镜像中取出需要的rpm包,进入"Packages"目录,取出如下几个: mpfr-3.1.1-4.el7.x86_64.rpmlibmpc-1.0.1-3.el7.x86_64.rpmkernel-head

LNMP(linux+nginx+mysql+php)服务器环境配置

一.简介 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为 “engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过三年了.Igor Sysoev在建立的项目时,使用基于BSD许可. 在高并发连接的情况下,Nginx是Apache服务器不错的替代品.Nginx同时也可以作为7层负载均衡服

安装lnmp(linux nginx mysql php)

下载或者在云盘里找lnmp1.2-full.tar.gz 用 tar -zxvf lnmp1.2-full.tar.gz解压 进入 ,运行./install.sh安装.根据提示. 如果出现yum锁定,可另外开一个 temital ,运行  rm -rf /var/run/yum.pid 发现:Checking ...Nginx: OKMySQL: OKPHP: OKPHP-FPM: OK Install lnmp V1.2 completed! enjoy it. 说明安装完成 . /home/

linux+nginx+mysql+php环境的搭建

本文主要介绍,简单的搭建lnmp环境,自己的环境,自己做主 准备要求:全新的liunx环境,本文用的是centerOS6.0 废话不多说,直接看步骤: 1.开启nginx80端口和mysql3306端口 vim /etc/sysconfig/iptables 可以看到原先就已经开启了两个端口 所以仿这里继续添加端口 加入如下代码: -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state