说明:OpenResty 是一个基于Nginx与Lua的高性能web平台,但lua语言在写web程序方面有很多不足,比如基础库缺乏,写web程序太费精力。PHP语言简单快捷,容易上手,有很多快速开发web程序的各类框架。如果能有这么一个框架:在需要高性能的地方用lua,在业务逻辑复杂的地方用web。这样,既可以快速开发web网站,又能提高系统性能。

本系列总共6篇文章,将一步步说明怎么搭建环境,怎么开发restful API,lua框架villina的简单说明,一些小技巧等。

摘要:centos6.5下用源码安装php5.6openrestymysql5.6pdo_mysql扩展、redis3.0

源码统一放到/opt/src目录。

conf配置文件统一放到/etc/conf目录。

 

1. php5.6安装

 下载PHP

cd /opt/src/

wget http://cn2.php.net/distributions/php-5.6.17.tar.gz

tar -zxvf php-5.6.17.tar.gz

cd php-5.6.17

 

 配置PHP的编译参数

 ./configure --prefix=/opt/php --with-mysql --with-mysqli --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-libdir=/usr/lib64 --with-jpeg-dir=/usr/lib64 --with-freetype-dir=/usr/lib64 --with-png-dir=/usr/lib64

 

 如果出现错误:

configure: error: xml2-config not found. Please check your libxml2 installation

安装: yum install -y libxml2-devel

 如果出现错误:

configure: error: Cannot find OpenSSL's 

安装: yum install -y openssl-devel

 如果出现错误:

configure: error: Please reinstall the libcurl distribution

安装: yum install -y libcurl-devel

 如果出错误:

configure: error: jpeglib.h not found

安装: yum install -y libpng-devel libjpeg-devel

 如果出现错误:

configure: error: freetype-config not found.

安装: yum install -y freetype-devel

 安装下列软件:

yum install -y make cmake gcc gcc-c++ autoconf automake

 

 编译

make

make install clean

 

 复制php.ini

cp php.ini-development /opt/php/lib/php.ini

cd /opt/php/etc/

cp php-fpm.conf.default php-fpm.conf

 

 使用PHP-FPM管理脚本,在编译包里面已经配置好了,只需要复制到/etc/init.d/中即可

cd /opt/src/php-5.6.17/sapi/fpm/

cp init.d.php-fpm /etc/init.d/php-fpm

chmod +x /etc/init.d/php-fpm

 

 启动php-fpm

service php-fpm start

 

 加入开机启动策略

chkconfig --add php-fpm

chkconfig php-fpm on

 

2. OpenResty的安装

参考《OpenResty最佳实践》,照着做就OK了。

https://moonbingbing.gitbooks.io/openresty-best-practices/content/index.html

 

 下载OpenResty

去官网http://openresty.org/下载最新版的openresty,我这里用ngx_openresty-1.9.7.1.tar.gz

gz文件拷贝到/opt/src目录。

 

 解压tar.gz文件

输入命令tar xzvf ngx_openresty-1.9.7.1.tar.gz,按回车键解压源码包。若你下载的源码包版本不一样,将相应的版本号改为你所下载的即可, 或者直接拷贝源码包的名字到命令中。此时当前目录下会出现一个ngx _ openresty-1.9.7.1文件夹。

 cd ngx_openresty-1.9.7.1

 了解组件是否默认激活。官网上有个组件列表,我们可以参考,列表中大部分组件默认激活,也有部分默认不激活。 默认不激活的组件,我们可以在编译的时候将他们激活,下面步骤详说如何激活。

 配置安装目录及需要激活的组件。使用选项--prefix=installpath,指定其安装目录(默认为/usr/local/openresty); 使用选项--with-Components激活组件,--without则是禁止组件,你可以根据自己实际需要选择withwithout 输入如下命令,OpenResty将配置安装在/opt/openresty目录下(注意使用root用户),并激活luajithttp iconv module并禁止http redis2 _ module组件。

 ./configure --prefix=/opt/openresty\

             --with-luajit\

             --without-http_redis2_module \

             --with-http_iconv_module

 

 如果出错误:

./configure: error: the HTTP rewrite module requires the PCRE library.

安装: yum install -y pcre-devel

 

 在上一步中,最后没有什么error的提示就是最好的。若有错误,最后会显示error字样, 具体原因可以看源码包目录下的build/nginx-VERSION/objs/autoconf.err文件查看。若没有错误,则会出现如下信息,提示下一步操作:

  Type the following commands to build and install:

  gmake

  gmake install

 编译、安装。根据上一步命令提示,输入gmake

输入gmake install.

 上面的步骤顺利完成之后,安装已经完成。可以在你指定的安装目录下看到一些相关目录及文件。

 设置环境变量

为了后面启动OpenResty的命令简单一些,不用在OpenResty的安装目录下进行启动,我们通过设置环境变量来简化操作。 OpenResty目录下的nginx/sbin目录添加到PATH中。就是打开文件 /etc/profile 在文件末尾加入export PATH=$PATH:/opt/openresty/nginx/sbin,若你的安装目录不一样,则做相应修改。 注意:这一步操作需要重新加载环境变量才会生效,可通过命令source /etc/profile或者重启服务器等方式实现。

 启动openresty:

nginx -p /var/www/html/api/ -c /etc/conf/nginx/nginx.conf

 

3. MySQL安装

 下载MySQL

cd /opt/src/

wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz

tar -zxvf mysql-5.6.17.tar.gz

cd mysql-5.6.17

 

 我们先配置下MySQL的编译参数 一般我们就配置下安装路径就可以了 如你有特殊配置也可以在安装之后修改参数也可以的

cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql

 

 如果报错: Curses library not found.  Please install appropriate package

yum install ncurses-devel

安装了ncurses-devel包后,删除CMakeCache.txt

 

 编译需要较长的时间

make

make install clean

 

 添加mysql用户

useradd mysql -M -s /sbin/nologin

cd /opt/mysql/scripts

 

 安装数据库

./mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data

cd /opt/mysql/support-files

 

 复制mysql管理脚本

cp mysql.server /etc/rc.d/init.d/mysql

 

 复制mysql配置文件

cp my-default.cnf /etc/my.cnf

 

 添加mysql服务

chkconfig --add mysql

 

 加入开机启动策略

chkconfig mysql on

service mysql start

 

4. PHP扩展PDO_MYSQL安装

参考:http://www.cnblogs.com/qq78292959/p/4084868.html

 下载pdo_mysql扩展的源码包。

下载页面在这里:http://pecl.php.net/package/PDO_MYSQL

wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

 

 解压缩。

tar -zxvf PDO_MYSQL-1.0.2.tgz

 

 进入解压后的目录,然后执行phpize

/usr/local/php/bin/phpize

Configuring for:

PHP Api Version: 20100412

Zend Module Api No: 20100525

Zend Extension Api No: 220100525

 

 下面生成makefile

后面的两个参数必须要添加,一开始我没有添加,结果分别都提示找不到php-configmysqlheader文件。

./configure --with-php-config=/opt/php/bin/php-config --with-pdo-mysql=/opt/mysql

 

 MySQLdb ImportError: libmysqlclient.so.18解决方法

ln -s /opt/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18

说明:报告此错误时,也跟这个问题有关。libmysqlclient.so.18: cannot open shared object file: No such file or directory in Unknown on line 0 

 

 在make之前还要做一个mysqlheader文件的软连接。因为mysql安装的时候指定了目录,不做软连接的话,还是找不到header文件。

ln -s /opt/mysql/include/* /usr/local/include/

 

 makemake install

make

make install

 

之后会提示如下,意思是扩展被安装到了如下目录里。

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

 

 为了方便,我把pdo_mysql.so文件移动到extensions目录下。

mv /usr/local/php/lib/php/extensions/no-debug-zts-20100525/pdo_mysql.so

/usr/local/php/lib/php/extensions/

 

 随后就可以修改php.ini文件了

找到; extension_dir = ./”这一行,去掉注释,并修改路径。

extension_dir = “/usr/local/php/lib/php/extensions/”

这里经过我测试,发现php只会从该目录寻找扩展so,而并不寻找该目录下的子目录。所以之前我为了统一管理,把so文件都移动到该目录下。

 

找到; extension=php_pdo_mysql.dll这一行,去掉注释,并修改后面的文件名。

extension=pdo_mysql.so

文件名不太一样,这里要把php_前缀去掉,否则找不到文件。后面的dllwindows下的文件名,我们改成so

 

 最后重启php-fpm就可以了。用phpinfo()查看发现已经生效了。

 

5. redis的安装

(1) 下载一个redis源码包。

wget http://download.redis.io/releases/redis-2.8.13.tar.gz

tar.gz文件放到/opt/src目录.

 

(2) 解压后进入目录:

tar xzvf redis-2.8.19.tar.gz

 

(3) 编译:

make

make install

 

(4) 设置配置文件路径和简单配置:

mkdir -p /etc/conf/redis

cp redis.conf/etc/conf/redis

vi /etc/conf/redis/redis.conf

仅修改: daemonize yes no-->yes

 

然后就可以使用该配置文件启动redis server了:

/usr/local/bin/redis-server /etc/redis/redis.conf

查看redis是否启动:

ps aux | grep redis

 

设置开启自启动:

echo "/usr/local/bin/redis-server /etc/redis/redis.conf &" >> /etc/rc.local

 

6. redis扩展的安装

phpredis下载地址:https://github.com/nicolasff/phpredis

 

unzip phpredis-master.zip 

cd phpredis-master

/opt/php/bin/phpize

./configure --with-php-config= /opt/php/bin/php-config

make 

make install

 

vi /opt/php/lib/php.ini

加入

extension=redis.so

 

保存后重启Apache,如果是连接的nginx,则需要重启php-fpm