Yii框架Register模块开发流程

本文用以下五个步骤来详细介绍:

1. 用gii创建所需Module, Model, Controller,Crud以及Form

2. 注册界面显示部分(以下则以access模块作为例子讲解)

3. 编辑逻辑部分代码

4. 修改Controller

5. 总结

一. 用gii创建所需Module, Model, Controller,Crud以及Form

在浏览器输入地址http://127.0.0.1/icampus/sns/index.php?r=gii进入gii界面,输入密码123456,进入可视化代码生成工具页面。按照module -> model -> controller -> crud -> form 的顺序分别生成代码。

1

1.选择Module Generator,在Module ID输入框中输入模块名称access(为了演示这里输入的是access2,以后类同),点击Preview,确认没错以后点击Generate即可生成代码。

2

然后可以在icampus\sns\protected\modules文件夹下看到生成的access2文件夹。

 2.把上图中代码部分添加到\icampus\sns\protected\config\main.php中的modules数组里面,以便可以访问,如下图所示。

3

3. 点击Model Generator,参照下图的输入,填入所需内容,如表名前缀icp_access;注册所需要用的表示user,所以Table Name这里填入icp_access_user;Model Class可自定义,不妨用AccessUser2来创建;然后输入正确的Model Path。

4

至此model也建立好了,可以在icampus\sns\protected\modules\access2文件夹下看到多出来一个model文件夹,里面有model文件AccessUser2.php

4. 点击Controller Generator,参照下图所示,填写具体输入框。Controller ID这里填写module名称/model名称,即access2/AccessUser2

5

然后点击Generate,即会在模块的controller文件夹(icampus\sns\protected\modules\access2\controllers)下生成AccessUser2Controlller.php

5. 点击Crud Generator,参考下图填写

6

然后点击Generate即可

6. 点击Form Generator,参考下图填写各个输入框

7

点击Generate即可生成所需要的form页面。然后会提示将下列代码添加到controller中。

8

打开AccessUser2Controlller.php,将上述方法复制进去即可。

至此,注册模块所有需要自动生成的步骤已经完成。注意:最好按顺序来(module -> model -> controller -> crud -> form)

二. 注册界面显示部分(以下则以access模块作为例子讲解)

1.由于数据库中字段如lastlogin, salt等是不需要用户输入的,所以首先必须在view中去掉这些部分;由于注册的时候需要用户重复密码以及为了防止恶意注册采取了验证码,必须在view中添加这两个字段。

打开\icampus\sns\protected\modules\access\views\accessUser文件夹中register.php

[php] <div class="row">
<?php echo $form->labelEx($model,’name’); ?>
<?php echo $form->textField($model,’name’); ?>
<?php echo $form->error($model,’name’); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,’password’); ?>
<?php echo $form->passwordField($model,’password’); ?>
<?php echo $form->error($model,’password’); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,’passwordConfirm’); ?>
<?php echo $form->passwordField($model,’passwordConfirm’); ?>
<?php echo $form->error($model,’passwordConfirm’); ?>
</div>

<div class="row">
<?php echo $form->labelEx($model,’verifyCode’); ?>
<?php echo $form->textField($model,’verifyCode’); ?>
<?php echo $form->error($model,’verifyCode’); ?>
</div>
<div class="row">
<?php $this->widget(‘CCaptcha’); ?>
</div>[/php]

可以看到每一个字段都是写在一个div里的,可以很方便的让我删除或者添加,div组中的

form->labelEx表示要显示的说明文字;

form->passwordField表示采取的格式;

form->error表示错误提示;

从上面代码可以看到,我们保留的字段有name,password,passwordConfirm,以及verifyCode。其中密码输入框不能明文显示,所以采用form->passwordField形式;用户名与验证码输入框需要明文显示,所以我们采用form->textField形式。

最后三行即是显示验证码图片。

效果图如下图所示。

1

三. 编辑逻辑部分代码

由于刚才我们删除了一些字段显示,又添加了一些字段显示。所以需要作一些逻辑修改。

1. 打开icampus\sns\protected\modules\access\models文件下下的AccessUser.php,首先添加两个public字段,如果不声明为public,会导致访问出错。

[php]
public $passwordConfirm;
public $verifyCode;
[/php]

2. 修改下面这个函数,将上述两个字段在要求用户输入的时候,需要显示的说明文字写上去。比如需要用户重复输入密码的时候,我希望显示的提示信息是“Confirm your password”

[php]
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
‘id’ => ‘ID’,
‘name’ => ‘Name’,
‘password’ => ‘Password’,
‘lastlogin’ => ‘Lastlogin’,
‘passwordConfirm’ => ‘Confirm your password’,
‘verifyCode’ => ‘repeat the following code’,
‘salt’ => ‘Salt’,
);
}
[/php]

3. 修改下面的函数,添加规则。由于两次密码必须一致,所以给passwordConfirm添加一条验证规则(即下面代码中的13行),验证码也需要添加规则(下面代码中的15行)。

[php]
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array(‘name, password, salt’, ‘length’, ‘max’=>255),
array(‘lastlogin’, ‘safe’),

//the "passwordConfirm" shoud be equal to the "password"
array(‘passwordConfirm’, ‘compare’, ‘compareAttribute’=>’password’),
//the verifyCode
array(‘verifyCode’, ‘captcha’, ‘on’=>’register’, ‘allowEmpty’=>!extension_loaded(‘gd’)),

// The following rule is used by search().
// Please remove those attributes that should not be searched.
array(‘id, name, password, lastlogin, salt’, ‘safe’, ‘on’=>’search’),
);
}
[/php]

4. 如果需要,重写beforeSave()函数。因为注册的时候,需要作给密码加密等操作,所以我重写了beforeSave()函数

[php]/**
* Author: HuKeping
* Date: 2013-4-1 22:08:00
* Brief: override the super beforeSave() function to do some thing before save the record to database.
* salt is a unix timestamp by the time of the very moment.
* password is encoded by md5 and then attached with the md5ed salt string and md5 the new string again.
* lastlogin is initialized with the time of the very moment.
* set the timezone to PRC is to make the timezone correct.
*
*/
public function beforeSave()
{
if($this->isNewRecord)
{
$salt = time(); //get the unix timestamp here
date_default_timezone_set(‘PRC’); //set the timezone to PRC
$this->lastlogin = date(‘Y-m-d H:i:s’, time()); //the timestamp in mysql is not the same with it in php
$salt = md5($salt); //encode the salt by md5
$password = md5(md5($this->password) . $salt); //md5 again
$this->password = $password; //set the password
$this->salt = $salt; //set the salt
}
else
{
return false;
}
return parent::beforeSave();
}[/php]

注意1:如果没有出错,一定要返回true,否则记录不会插入数据库

注意2:最好在验证以后,保存之前,在beforeSave()里进行所需要的编码(如md5加密)等操作,否则有可能会验证出错(比如密码与md5过后的密码比较),导致save()操作失败。

四. 修改Controller

需要在controller中添加访问规则以及action等。打开\icampus\sns\protected\modules\access\controllers文件夹下AccessUserController.php

1. 在下面的函数中,把‘register’以及启用验证码‘captcha’添加进所有用户的权限中

14

2. 为了使用验证码,需要添加一个action,如下图所示

[php]
/**
*
* Author: HuKeping
* Date: 2013-4-1 15:48:22
* Brief: add the verification action
* minLength is the mininum number of characters that used to as the verify code
* maxLength is the maximum number of characters that used to as the veryfy code
* when minLength == maxLength, the number of bytes is set, otherwise it’s random.
*/
public function actions()
{
return array(
‘captcha’=>array(
‘class’ => ‘CCaptchaAction’,
‘backColor’ => 0xCCCCCC,
‘minLength’ => 4,
‘maxLength’ => 4,
),
);
}
[/php]

其中数组中的各个参数已经在注释中写明。

3. 修改自动生成的actionRegister函数,如下图所示

16

至少添加最后一句 $model->save(),即更新数据库。执行这一句之前,框架会自动执行刚才写的beforeSave()。执行完save()以后,整个注册流程也到此结束。

五. 总结

总的来说,流程就是

  1. gii自动生成模块
  2. 根据需求修改视图
  3. 根据视图修改逻辑
  4. 修改权限、规则等。

不算读书笔记的笔记——《murder in Mesopotamia》

IMG_0026

Somehow,the more I get older,and the more I see of people and sadness and illness and everything,the sorrier I get for everyone
                                                                ————–Leatheran, the nurse
其实,自己几个月读的书,还不如人家两周读的书多。可也是喜欢不是么,也愿意这一小小爱好随意写写,让脑子从代码堆里暂时解放出来。

呐,在开头的开头,是偶然在未明BBS看到的一篇帖子,提到了阿加莎和她的作品,看着挺有意思,加上正好当时手头上书已经读完啦,就决定去买一本阿婆的书来瞅瞅。大家好像对《古墓之谜》评价挺高的,作为第一次读人家作品的菜鸟级人物,当然听大家的最保险啦:)

本来打算买中文版的,又见很多人说翻译得太烂(其实也许不是译者水平烂,只是文化差异在那里摆着,有很多东西翻译以后就失去那种意境、那种味道了),所以此书就在某一天落到了我的口袋里。至于为什么中文叫《古墓之谜》,英文叫《murder in Mesopotamia》,就没有去深究了,很常见的现象。

算起来这是我看的第二本英文小说,第一本《who moved my cheese》单词比较简单,这本看起来就比较费劲了,不过终于,在那天回本部的地铁上看完了,耶~!虽然不是句句清晰,甚至都不能记全书中人物的名字,但也算掌握了故事的大概。

跟所有悬疑小说一样,往往最不起眼的或者最不可能的或者在感情上最不能接受的,往往就是凶手,差别只在于作案的手法,这大概也才是吸引读者的地方。这本书自然是把这些细节描写得淋漓尽致,但我印象最深的却是他们之间的爱情纠葛以及最后小护士的一番自我体会——Somehow,the more I get older,and the more I see of people and sadness and illness and everything,the sorrier I get for everyone。不知道该怎么翻译才恰当,只是觉得自己也是这样,越大越有一种抱歉的情绪在滋生。

好啦,写完啦,所以说不像是一篇读书笔记嘛。而且本来也不咋会写的,呵呵O(∩_∩)O~.

PS:大学姐真好~今天陪我去逛书店买书,可是太累,地铁上都睡着了55。。

IMG_0311_25

 

晚安。

2013.3.28 00:48:32 @ my bed

其实,还是挺喜欢软微这座园子的

又到了周二晚上,明天周三(是的,这是废话),上午有课,下午例行跑校医院。

所以不用去实验室,所以可以翘一天班,所以心情大好,所以可以晃晃悠悠的在园子里散步,慢慢感受夜里的宁静,也感受这里的光与影。晃荡着来了兴致,索性跑回寝室把三脚架、照相机带出来,记录一下也不知道是倒数第几个还能呆在这里的夜晚。

白天的软微是荒凉的,荒凉到我只愿呆在实验室里。幸而夜色会还这里一份宁静。

本来夜里一个人出来散步就很容易有一些感触,也想写一些东西,但转念一下,老弟说得对啊,堂堂七尺男儿,矫情你妹儿,于是作罢。直接上图。

IMG_3597_1280

这是每天从寝室到实验室必经的石板小道,设计得还不错。

右边就是女生宿舍,拍的时候大学姐不知什么时候站我身后了,,,,,啊啊啊啊啊啊啊啊啊啊啊啊啊~我在大学姐心目中的形象毁了啊啊啊啊啊啊啊啊啊啊啊啊啊啊~好了,上图。

IMG_3625_25

大学姐也出来散步了,hurry!!!!!!!果断拉一起同行啊:)

那就不能继续拍这里了~~转拍那边转弯的路口吧,过去拍了挺多,选了一张自己感觉比较合适的。就是下面这张啦。

IMG_3645_25

嘿嘿,大学姐也觉得这张不错,心情一好,决定赐一个合拍机会~于是有了下面这张HoHoHo~

IMG_3639_25

可为什么我的鞋子下面那么黑啊。。。。。。。。。。。。

不说了,说多了都是泪,再传一张白天校园草地的图吧,在下雨,光线不是很好~~附带大学姐一枚:)

IMG_5587_12.5

草地中间那些一块儿一块儿的是园丁师傅修剪草坪以后留下来的枯草,让他们重回泥土当肥料有木有,天然绿色有机肥O(∩_∩)O哈哈~

再传一张小花园的

IMG_0320_3

 

这就是花园区啦,正确面是宿舍楼和某些专业的实验小别墅楼。

Enjoy!

整整一个曾经

这是我最喜欢的一只猫,喵名——哈士奇。

和它结缘的时候,还只是一只小奶喵,整天被他们扔来扔去的,可怜又可爱,没少到实验室来皮:)IMG_0098_2_25

已经很久很久不见它了,估计走了吧,也或许是死了。哦对了,它知道自己叫哈士奇,每次一叫它名字,多远也会跑过来,每当这个时候,一点点傲娇情绪会很自然的升起——看,哥一叫它就过来了,吼吼。

可是已经很久很久没看到过它了。

一直它都是作为桌面来着,平时也就不怎么特别想它。今天晚上,大家都在实验室加班,快到凌晨了,想吃东西,和大学姐一起去买,回来在小花园碰到了一只黑猫,新生的,嗯,我肯定。以前都没见过它。外面又已经零下了,和学姐开门让它进屋,招呼几下就过来了,真乖。上楼拿吃的下来喂它,当转身的那一刹那,哈士奇那虎圆虎圆的大蛮腰视觉冲击迎面扑来,就这么回忆上了。

“快吃快吃,死猫”,也许只有骂它才能止得住。

想想这鱼挺咸的,上去削一个纸杯给它喝水吧,刚接好水下来就看见它巴巴的望着我。蹲下喂喂水,吃饱喝足了,赶紧把它送出门。

回来坐到工位上,看着桌面上的哈士奇,看着学姐发失败的黑猫照片。是有点点想它了。以前应该是爱它的吧,

也许爱了整整一个曾经。

 

2013.3.26 00:29:27 @ 十号楼西边二楼

Linux(Ubuntu12.10)搭建PHP开发环境(源码包方式)

哇哈哈哈哈,今天拿到了全新刀片服务器的权限!就在这机器上来配置吧!!!

这将是一篇很长很长的文章。需要安装的包实在太多了。

我将一点一点的写,尽量细化到每一步。所以完成这篇博客需要的时间可能会比较长。

But, just rock it!

OK.开题了。众所周知,在Linux下安装PHP有几种方法,但是最好的还是自己下载所有的源码包,然后编译一个适合自己的环境(当然,也就可以用最新的东西,只要不版本冲突)。LAMP组合中每个成员都是开源的软件,都可以从各自的官方网站上免费下载安装程序的源代码文件,并在自己的系统上编译,编译之前会检查系统的环境,并可以针对目标系统的环境进行优化,所以和自己系统的兼容性是最好的,不仅如此,允许你根据自己的需求进行定制安装。

这是LAMP环境最理想的搭建方法,也是最复杂的安装方式。所以要搭建一个最完美的LAMP工作环境,多花费一些时间和精力在源代码包的安装上,还是值得的。

零. 好了,现在列一下所需要的包,是我搭配环境的时候用到的。有些是最新的,有些不是。

(下载地址下次补齐,今天准备回去了。)

1. httpd-2.4.4

官网:http://httpd.apache.org/download.cgi#apache24

2. mysql-5.6.10

官网:http://downloads.mysql.com/archives.php?p=mysql-5.6&v=5.6.11

3. php.5.3.22

官网:http://www.php.net/downloads.php

4. libxml2-2.6.30

官网:ftp://xmlsoft.org/libxml2/

5. libmcrypt-2.5.8

官网:http://mcrypt.hellug.gr/lib/

6. zlib-1.2.7

官网:http://www.zlib.net/

7. gd-2.0.35

官网:https://bitbucket.org/libgd/gd-libgd/downloads

8. autoconf-2.61

官网:http://ftp.gnu.org/gnu/autoconf/

9. freetype-2.3.5

官网:http://sourceforge.net/projects/freetype/files/

10. libpng-1.6.0

官网:http://www.libpng.org/pub/png/libpng.html

11. jpeg-6b

官网:http://www.ijg.org/

12. apr-1.4.6

官网:http://apr.apache.org/download.cgi

13. apr-util-1.4.1

官网(同上,是一个地址):http://apr.apache.org/download.cgi

14. pcre-8.32

官网:http://www.pcre.org/

15. libtool-2.2.6

官网:http://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz

一. 先检测一下基本的系统环境信息

1.$ uname -a
Selection_103

2. 看一下gcc装了没有
$ gcc -v
Selection_104

果然没有(当然没有啦!!新机器!!哇卡卡卡卡卡卡卡!!),
$ sudo apt-get install gcc

下面开始正式编译源码包并安装。

二. 编译各个源码包并安装

2.1 安装libxml2最新库文件
2.1.1 在上面的链接或者网上下载 libxml2-2.6.30.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录libxml2-2.6.30下,并进入libxml2-2.6.30目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf libxml2-2.6.30.tar.gz         // 解压缩
$ cd libxml2-2.6.30/                                    // 进入目录

2.1.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下:
$ ./configure –prefix=/usr/local/libxml2
选项–prefix=/usr/local/libxml2作用,是在安装时将软件安装到/usr/local/libxml2目录下
执行成功后,会看见Done configuring的提示,如下图所示。
Selection_106

2.1.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译
出现错误:In function ‘open’,inlined from ‘xmlNanoHTTPSave__internal_alias’ at nanohttp.c:1588:12:
/usr/include/x86_64-linux-gnu/bits/fcntl2.h:51:24: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
解决方法:http://keping.me/2013-3-12/

2.1.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
如果安装成功以后,在/usr/local/libxml2/目录下将生成bin、include、lib、man和share五个目录。
Selection_109
*在后面安装PHP5源代码包的配置时,会通过在configure命令的选项中加上
“–with-libxml-dir=/usr/ local/libxml2“选项,用于指定安装libxml2库文件的位置

2.2 安装libmcrypt最新库文件
2.2.1 在上面的链接或者网上下载 libmcrypt-2.5.8.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录libxml2-2.6.30下,并进入libxml2-2.6.30目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf libmcrypt-2.5.8.tar.gz        // 解压缩
$ cd libmcrypt-2.5.8                                     // 进入目录

2.2.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下:
$ ./configure –prefix=/usr/local/libmcrypt
选项–prefix=/usr/local/libmcrypt作用,是在安装时将软件安装到/usr/local/libmcrypt目录下
这里需要系统安装了g++,如果没有提前安装g++,那就先sudo apt-get install g++吧,我这新服务器就没有装。

2.2.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译

2.2.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
如果安装成功就会在/usr/local/libmcrypt/目录下生成bin、include、lib、man和share五个目录。
Selection_110
*在后面安装PHP5源代码包的配置时,会通过在configure命令的选项中加上
“–with-mcrypt-dir=/usr/local/libmcrypt”选项,指定这个libmcrypt库文件的位置。

2.2.5 安装libltdl库。
安装完成libmcrypt库以后,进入到解压缩的目录/usr/local/src/ libmcrypt-2.5.8下,找到libltdl库源代码文件所在的目录libltdl,进入这个目录,按照下面几个命令配置、编译、安装就可以了。命令如下:
$ cd /usr/local/src/libmcrypt-2.5.8/libltdl         // 进入软件源代码目录
$ ./configure  –enable-ltdl-install                       // 配置ltdl库的安装
$ make                                                                  // 编译
$ make install                                                       // 安装
安装完成后,会在/usr/local/include/目录下发现 ltdl.h头文件,如下图所示。
Selection_112

2.3 安装zlib最新库文件
2.3.1 在上面的链接或者网上下载 zlib-1.2.7.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录zlib-1.2.7/下,并进入zlib-1.2.7目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf zlib-1.2.7.tar.gz                  // 解压缩
$ cd zlib-1.2.7/                                             // 进入目录

2.3.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下:
$ ./configure –prefix=/usr/local/zlib
选项–prefix=/usr/local/zlib作用,是在安装时将软件安装到/usr/local/zlib目录下

2.3.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译

2.3.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
如果安装成功就会在/usr/local/zlib/目录下生成include、lib和share三个目录。如下图
Selection_113
*在后面安装PHP5源代码包的配置时,会通过在configure命令的选项中加上
“–with-zlib-dir=/usr/local/zlib”选项,指定这个zlib库文件的位置。

2.4 安装libpng最新库文件
2.4.1 在上面的链接或者网上下载 libpng-1.6.0.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录libpng-1.6.0下,并进入libpng-1.6.0目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf libpng-1.6.0.tar.gz             // 解压缩
$ cd libpng-1.6.0/                                        // 进入目录

2.4.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下:
$ ./configure –prefix=/usr/local/libpng
选项–prefix=/usr/local/libpng作用,是在安装时将软件安装到/usr/local/libpng目录下
出现错误:configure: error: zlib not installed
解决方法(我很讨厌这个方法其实,但研究几天未果):http://keping.me/2013-3-12-2/

2.4.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译

2.4.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
如果安装成功就会在/usr/local/libpng目录下生成bin、include、lib和share四个目录。如下图
Selection_116
*在后面安装GD2库配置时,会通过在configure命令的选项中加上
“–with-png-dir=/usr/local/libpng”选项,指定这个libpng库文件的位置。

2.5 安装jpeg6最新库文件
2.5.1 在上面的链接或者网上下载 jpegsrc.v6b.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录jpeg-6b下,并进入jpeg-6b目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf jpegsrc.v6b.tar.gz              // 解压缩
$ cd jpeg-6b/                                                // 进入目录

2.5.2 安装GD2库前所需的jpeg6库文件,需要自己手动地创建安装需要的目录,它们在安装时不能自动创建。命令行如下:
$ sudo mkdir /usr/local/jpeg6                                                           // 建立jpeg6软件安装目录
$ sudo mkdir /usr/local/jpeg6/bin                                                    // 建立存放命令的目录
$ sudo mkdir /usr/local/jpeg6/lib                                                     // 创建jpeg6库文件所在目录
$ sudo mkdir /usr/local/jpeg6/include                                             // 建立存放头文件目录
$ sudo mkdir -p /usr/local/jpeg6/man/man1                                  // 建立存放手册的目录

2.5.3 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下(为了直观,使用“\”将一个命令换成多行):
$ sudo ./configure \
> –prefix=/usr/local/jpeg6/ \                             // 安装时将软件安装到/usr/local/jpeg6目录下
> –enable-shared \                                              // 建立共享库使用的GNU的libtool
> –enable-static                                                   // 建立静态库使用的GNU的libtool

2.5.4 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译
出现错误:
./libtool –mode=compile gcc -O2 -I. -c ./jcapimin.c
make: ./libtool: Command not found
make: *** [jcapimin.lo] Error 127
解决方法:http://keping.me/2013-4-12/

2.5.5 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
*在后面安装GD2库配置时,会通过在configure命令的选项中加上
“–with-jpeg-dir=/usr/local/jpeg6”选项,指定这个jpeg库文件的位置。
至此,我们已经使用了如下图所示的这么多的安装包~~休息一下先。
Selection_117

2.6 安装freetype最新库文件
2.6.1 在上面的链接或者网上下载 freetype-2.3.5.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录freetype-2.3.5下,并进入freetype-2.3.5目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf freetype-2.3.5.tar.gz          // 解压缩
$ cd freetype-2.3.5/                                     // 进入目录

2.6.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下:
$ ./configure –prefix=/usr/local/freetype
选项–prefix=/usr/local/freetype作用,是在安装时将软件安装到/usr/local/freetype目录下

2.6.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译

2.6.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
如果安装成功就会在/usr/local/freetype目录下生成bin、include、lib和share四个目录。如下图
Selection_118
*在后面安装GD2库配置时,会通过在configure命令的选项中加上
“–with-freetype-dir=/usr/local/freetype”选项,指定这个freetype库文件的位置。

2.7 安装autoconf最新库文件
2.7.1 在上面的链接或者网上下载 autoconf-2.61.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录autoconf-2.61下,并进入autoconf-2.61目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf autoconf-2.61.tar.gz          // 解压缩
$ cd autoconf-2.61/                                     // 进入目录

2.7.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下:
$ ./configure
出现错误:configure: error: GNU M4 1.4 is required
解决方法:$ sudo apt-get install m4

2.7.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译

2.7.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装

2.8 安装GD最新库文件
2.8.1 在上面的链接或者网上下载 gd-2.0.35.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录gd-2.0.35下,并进入gd-2.0.35目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf gd-2.0.35.tar.gz                 // 解压缩
$ cd gd-2.0.35/                                            // 进入目录

2.8.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下(为了直观,使用“\”将一个命令换成多行):
$ sudo ./configure \
> –prefix=/usr/local/gd2/ \                             // 安装时将软件安装到/usr/local/gd2目录下
> –with-zlib=/usr/local/zlib/ \                         // 指定到哪去找zlib库文件的位置
> –with-jpeg=/usr/local/jpeg6/ \                    // 指定到哪去找jpeg6库文件的位置
> –with-png=/usr/local/libpng/ \                    // 指定到哪去找libpng库文件的位置
> –with-freetype=/usr/local/freetype/           // 指定到哪去找freetype 2.x字体库的位置

2.8.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译
出现错误:gd_png.c:16:53: fatal error: png.h: No such file or directory
解决方法:http://keping.me/2013-3-13/

2.8.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
如果安装成功就会在/usr/local/gd2目录下生成bin、include和lib三个目录。如下图
Selection_119
*在后面安装PHP5源代码包的配置时,会通过在configure命令的选项中加上
“–with-gd=/usr/ local/gd2/“选项,用于指定安装GD库文件的位置

2.9 安装新版本的Apache服务器
2.9.1 在上面的链接或者网上下载 httpd-2.4.4.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录 httpd-2.4.4下,并进入 httpd-2.4.4目录,命令如下:
$ cd /usr/local/usr/                                      // 进入源码包所在目录
$ sudo tar zxvf httpd-2.4.4.tar.gz               // 解压缩
$ cd  httpd-2.4.4/                                         // 进入目录

2.9.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下(为了直观,使用“\”将一个命令换成多行):
$ sudo ./configure \
> –prefix=/usr/local/apache2 \                       // 指定Apache软件安装的位置
> –sysconfdir=/etc/httpd  \                             // 指定Apache服务器的配置文件存放位置
> –with-z=/usr/local/zlib/ \                             // 指定zlib库文件的位置
> –with-included-apr  \                                    // 使用捆绑APR/APR-Util的副本
> –disable-userdir \                                          // 请求的映象到用户特定目录
> –enable-so \                                                   // 以动态共享对象(DSO)编译
> –enable-deflate=shared \                             // 缩小传输编码的支持
> –enable-expires=shared \                            // 支持头文件过期控制
> –enable-rewrite=shared \                            // 基于规则的URL操控
> –enable-static-support                                 // 建立一个静态链接版本的支持
出现错误:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
解决方法:http://keping.me/2013-3-13-2/

2.9.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译

2.9.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装
如果安装成功就会在/usr/local/apache2目录下生成bin、build、cgi-bin、error、htdocs、icons、include、lib、logs、man、manual和modules十二个目录,如下图。
Selection_121

2.9.5 启动Apache服务器,命令如下:
$ sudo /usr/local/apache2/bin/apachectl start
出现错误:AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
解决方法:修改httpd.conf配置文件,由于我们配置安装Apache服务器的时候,指定的配置文件放在了/etc/httpd目录下,如下图
Selection_122
我们需要去修改这个文件,命令如下:
$ sudo vim /etc/httpd/httpd.conf
找到ServerName所在的地方,如下图所示
Selection_123
在这下面添加一行ServerName localhost,如下图所示
Selection_124
重新启动Apache服务器即可,命令如下:
sudo /usr/local/apache2/bin/apachectl restart
通过查看进程的方式,查看是否启动成功,命令如下:
$ ps -ef | grep httpd
如果看到许多(一般是4到5个)输出就说明对了,如下图:
Selection_125
也可以通过在浏览器输入localhost,查看是否启动成功,如果成功,会有下图效果:
Selection_126

2.9.6 添加开机自启动
每种服务器软件都有必要制作成开机时自启动,Apache服务器开机自启动,只要在“/etc/rc.local”文件中,加上Apache服务器的启动命令即可,命令如下:
$ sudo vim /etc/rc.local
加上启动命令,如下图所示。
Selection_128

2.10 安装Mysql
2.10.1 在上面的链接或者网上下载 mysql-5.6.10.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录 mysql-5.6.10下,并进入 mysql-5.6.10目录,命令如下:
$ cd /usr/local/usr/                                         // 进入源码包所在目录
$ sudo tar zxvf mysql-5.6.10.tar.gz              // 解压缩
$ cd  mysql-5.6.10/                                        // 进入目录

2.10.2 安装cmake。由于mysql貌似从5.5已经不用./configure来配置了,换成了cmake,所以需要安装cmake,检测系统中是否有cmake,命令如下:
$ cmake -version
如果没看到类似下图的输出
Selection_129
则需要自己先安装一下,命令如下:
$ sudo apt-get install cmake

2.10.3 新增用户组,命令如下:
$ sudo groupadd mysql

2.10.4 新增用户,命令如下:
$ sudo useradd mysql -g mysql

2.10.5 新建数据库执行文件目录,命令如下:
$ sudo mkdir -p /usr/local/mysql

2.10.6 新建数据库数据文件目录,命令如下:
$ sudo mkdir -p /db/mysql/data

2.10.7 修改目录拥有者,命令如下:
$ sudo chown -R mysql:mysql /usr/local/mysql
$ sudo chown -R mysql:mysql /db/mysql/data
$ sudo chown -R mysql:mysql /usr/local/mysql/.
$ sudo chown -R mysql:mysql /db/mysql/data/.

2.10.8 使用cmake进行配置,命令如下:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/db/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306

出现错误:CMake Error at cmake/readline.cmake:83 (MESSAGE):
Curses library not found. Please install appropriate package,

remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:126 (FIND_CURSES)
cmake/readline.cmake:193 (MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:325 (MYSQL_CHECK_READLINE)

解决办法:按照提示,既然少ncurses包,那就安装一下,命令如下:
$ sudo apt-get install libncurses5-dev
然后把当前目录下这个缓存文件删除,命令如下:
$ sudo rm CMakeCache.txt
然后,重新用cmake进行配置,复制上面的命令即可。

2.10.9 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译
可能会花比较长的时间编译
Selection_130

2.10.10 使用make install命令进行安装,命令如下:
$ make install                                              // 安装

2.10.11 复制配置文件,命令如下:
$ sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

2.10.12 进入安装路径,命令如下:
$ cd /usr/local/mysql

2.10.13 执行配置脚本,命令如下:
$ sudo ./scripts/mysql_install_db –user=mysql –datadir=/db/mysql/data

2.10.14 复制服务启动脚本,命令如下:
$ sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

2.10.15 启动MySQL服务,命令如下:
$ sudo service mysql start

2.10.16 设置root密码,命令如下:
$ sudo /usr/local/mysql/bin/mysqladmin -u root password 123456
即新密码设置为来123456

2.10.17 设置开机自启动,命令如下:
$ sudo update-rc.d mysql defaults

2.10.18 设置mysql为系统命令,命令如下:
$ sudo ln -s /usr/local/mysql/bin/* /bin/
以后你在系统下直接执行:
$ mysql -u root -p
就可以登录了。

2.10.19 设置访问权限。
在MySQL安装过程中,使用mysql_install_db程序安装了MySQL数据库授权表,表定义了初始MySQL用户账户和访问权限,所有初始账户均没有密码。这些账户为超用户账户,可以执行任何操作。初始root账户的密码为空,因此任何人可以用root账户不用任何密码来连接MySQL服务器,并具有所有权限,这意味着MySQL安装未受保护。如果你想要防止客户端不使用密码用匿名用户来连接,你应当为匿名账户指定密码或删掉匿名账户,应当为MySQL root账户指定密码。使用“mysql –u root”启动MySQL客户端控制台,连接MySQL服务器。命令行如下:
$ mysql -u root -p
Selection_131

然后用刚才的密码123456登录,接着执行:
mysql> DELETE FROM mysql.user WHERE Host=’localhost’ AND User=”;
Query OK, 1 rows affected (0.08 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 1 rows affected (0.01 sec)

mysql的安装配置到此结束,,,,,,,,,,呼~~~~~~~~~~~

2.11 安装最新版本的PHP
2.11.1 在上面的链接或者网上下载php-5.3.22.tar.gz,放到/usr/local/src/目录下,解压软件包到当前目录php-5.3.22下,并进入php-5.3.22目录,命令如下:
$ cd /usr/local/usr/                                         // 进入源码包所在目录
$ sudo tar zxvf php-5.3.22.tar.gz                  // 解压缩
$ cd php-5.3.22/                                             // 进入目录

2.11.2 使用“configure”命令检查并配置安装需要的系统环境,并生成安装配置文件,命令行如下(为了直观,使用“\”将一个命令换成多行):
$ sudo ./configure \
> –prefix=/usr/local/php \                                                    // 设置PHP5 的安装路径
> –with-config-file-path=/usr/local/php/etc \                     // 指定PHP5配置文件存入的路径
> –with-apxs2=/usr/local/apache2/bin/apxs \                   // 告诉PHP查找Apache 2的地方
> –with-mysql=/usr/local/mysql/ \                                      // 指定MySQL的安装目录
> –with-libxml-dir=/usr/local/libxml2/ \                             // 告诉PHP放置libxml2库的地方
> –with-png-dir=/usr/local/libpng/ \                                   // 告诉PHP放置libpng库的地方
> –with-jpeg-dir=/usr/local/jpeg6/ \                                    // 告诉PHP放置jpeg库的地方
> –with-freetype-dir=/usr/local/freetype/ \                        // 告诉PHP放置freetype库的地方
> –with-gd=/usr/local/gd2/ \                                                // 告诉PHP放置gd库的地方
> –with-zlib-dir=/usr/local/zlib/ \                                         // 告诉PHP放置zlib库的地方
> –with-mcrypt=/usr/local/libmcrypt/ \                              // 告诉PHP放置libmcrypt库的地方
> –with-mysqli=/usr/local/mysql/bin/mysql_config \       // 变量激活新增加的MySQLi功能
> –enable-soap \                                                                    // 变量激活SOAP和Web services支持
> –enable-mbstring=all \                                                       // 使多字节字符串支持
> –enable-sockets                                                                   // 变量激活socket通信特性

(如果下载的是php5.5.4 ,可能会出现错误:/php-5.5.1/ext/gd/gd.c:1330: undefined reference to `XpmLibraryVersion’
只需要加上–with-xpm-dir=/usr/lib/x86_64-linux-gnu/ 即可。)

2.11.3 使用make命令编译源码文件并生成安装文件,命令如下:
$ make                                                          // 编译

2.11.4 使用make install命令进行安装,命令如下:
$ make install                                              // 安装

2.11.5 建立配置文件,在使用configure命令安装配置时使用了“–with-config-file-path=/usr/local/php/etc/”选项,指定了配置文件的位置。将源码包目录下的“php.ini- dist”文件复制到指定的目录“/usr/local/php/etc/”中,并改名为“php.int”即可。命令如下:
$ sudo cp php.ini-dist /usr/local/php/etc/php.ini      // 创建配置文件

2.11.6 整合Apache与PHP。上面PHP编译之前,我们使用configure命令安装配置时,使用了“–with-apxs2=/usr/local/apache2/bin/apxs”选项以使Apache 2将PHP作为功能模块使用。但我们还需要修改Apache配置文件,添加PHP的支持,告诉Apache将哪些后缀作为PHP解析。例如,让Apache把.php或.phtml后缀的文件解析为PHP。使用vim打开Apache的配置文件/etc/httpd/httpd.conf,找到“AddType application/x-gzip .gz .tgz”指令项,并在其下方添加一条指令“Addtype application/x-httpd- php .php .phtml”。也可以将任何后缀的文件解析为PHP,只要在添加的语句中加入并用空格分开,这里以多添加一个.phtml来示例。如下所示。
Selection_132
添加最后一条“AddType application/x-httpd-php-source .phps”是为了将 .phps 作为 PHP 的源文件进行语法高亮显示

2.11.7 重启Apache服务器,重启以后才能重新加载配置文件使修改生效。命令如下:
$ sudo /usr/local/apache2/bin/apachectl stop           // 停止Apache服务
$ sudo /usr/local/apache2/bin/apachectl start           // 开启Apache服务

2.11.8 测试PHP环境是否可以正常运行,在/usr/local/apache2/htdocs目录下建一个phpinfo目录,在phpinfo目录下新建一个index.php的文件,在该php文件中添加如下代码:
<?php
phpinfo();
?>
打开浏览器,在地址栏中输入URL为http://localhost/phpinfo/index.php来运行该文件,如果出现如下图所示的内容表示LAMP环境安装成功。
Selection_133
上例中使用了phpinfo()函数,作用是输出有关PHP当前状态的大部分信息内容,这包括关于PHP的编译和扩展信息、PHP版本、服务器信息和环境、PHP的环境、操作系统信息、路径、主要的和本地配置选项的值、HTTP头信息和PHP的许可等。因为每个系统的安装不同,phpinfo()函数可以用于检查某一特定系统配置设置和可用的预定义变量等。它也是一个宝贵的调试工具,因为它包含了所有EGPCS(Environment,GET,POST,Cookie,Server)数据。

三. I’M FUCKING DONE IT!!!!!!!!!!

angry-desk-flip-l (2)

金融产品创新

IMG_3597_1280

大家好,由于学院BBS上传附件失效的关系,

金融产品创新的课件暂时可以从这里下载,等待学院BBS恢复。

tips:地址二下载速度会快很多。但因为是未经允许用的实验室的服务器,所以不保证不被发现,不保证一定有效~

ps:回复过十,爆你们助教哥哥靓照

Have fun!

第四讲:师兄推荐 (new)                                        地址二

第一讲:金融产品创新-第一讲课件下载               地址二

第二讲:  3月30号课件地址二

第二讲:2013年的中国资本市场.ppt地址二

第三讲:5月4号课件                                           地址二

 

什么叫做二哥在人大。there it is!

large_OonM_57930000e6fd118c

Ubuntu安装mysql5.6.10

Ubuntu下继续安装PHP开发环境,到了安装mysql这一步,由于下的是mysql的最新版本mysql-5.6.10,而mysql貌似从5.5已经不用./configure来配置了,换成了cmake。

于是只能google。最后结合几篇文章与mysql官网的配置介绍Source-Configuration Options,搞定了这个配置。

Selection_019

文本如下:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_MEMORY_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DENABLED_LOCAL_INFILE=1 \
> -DMYSQL_DATADIR=/db/mysql/data \
> -DMYSQL_USER=mysql \
> -DMYSQL_TCP_PORT=3306

哦对了,有可能会要sudo。

然后出现了一个问题。

Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:83 (MESSAGE):
Curses library not found. Please install appropriate package,

remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:126 (FIND_CURSES)
cmake/readline.cmake:193 (MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:325 (MYSQL_CHECK_READLINE)
— Configuring incomplete, errors occurred!

既然少ncurses包,那就安装一下。

sudo apt-get install libncurses5-dev

然后把当前目录下这个缓存文件删除

sudo rm CMakeCache.txt

终于配置通过。

然后编译源码,需要等待一段时间。

sudo make

Selection_020

然后安装

sudo make install

这个就比较快了。两下搞定。

接下来就是配置了。配置了几个小时,,具体我忘了。好复杂啊~真回忆不起来具体有哪些步骤了,反正是一直网上边搜边做。sigh~