说明:OpenResty 是一个基于Nginx与Lua的高性能web平台,但lua语言在写web程序方面有很多不足,比如基础库缺乏,写web程序太费精力。PHP语言简单快捷,容易上手,有很多快速开发web程序的各类框架。如果能有这么一个框架:在需要高性能的地方用lua,在业务逻辑复杂的地方用web。这样,既可以快速开发web网站,又能提高系统性能。
本系列总共6篇文章,将一步步说明怎么搭建环境,怎么开发restful API,lua框架villina的简单说明,一些小技巧等。
摘要:centos6.5下用源码安装php5.6、openresty、mysql5.6、pdo_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则是禁止组件,你可以根据自己实际需要选择with及without。 输入如下命令,OpenResty将配置安装在/opt/openresty目录下(注意使用root用户),并激活luajit、http 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-config和mysql的header文件。
./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之前还要做一个mysql的header文件的软连接。因为mysql安装的时候指定了目录,不做软连接的话,还是找不到header文件。
ln -s /opt/mysql/include/* /usr/local/include/
⑹ make和make 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_前缀去掉,否则找不到文件。后面的dll是windows下的文件名,我们改成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。