本实验系统为CentOS_6.4-x86_64,安装软件包为Nginx-1.9.5,MySQL-5.6.24,php-7.0.0RC4,所有包均采用源码编译。
一、安装Nginx:
1、解决依赖关系,编译安装nginx需要事先需要安装开发包组”Development Tools”和 “Development Libraries”。同时,还需要安装openssl-devel、pcre-devel包:
2、添加运行nginx服务进程的用户nginx:
接着开始编译和安装:
3、为nginx提供SysV init脚本,而后为此脚本赋予执行权限,添加至服务管理列表,并让其开机自动启动,启动服务并测试了:
新建文件/etc/rc.d/init.d/nginx,内容如下:
4、测试是否成功启动
二、源码安装mysql-5.6.24
1、准备数据存放的文件系统
新建一个逻辑卷,并将其挂载至特定目录即可:这里的挂载目录为/mnt/SQLdata ,
[root@DQ ~]# pvcreate /dev/sda6
[root@DQ ~]# vgcreate sqlstore /dev/sda6
[root@DQ ~]# lvcreate -n storelv -L 1G sqlstore
[root@DQ ~]# mke2fs -j /dev/sqlstore/storelv
[root@DQ ~]# mkdir /mnt/SQLdata
[root@DQ ~]# mount /dev/sqlstore/storelv /mnt/SQLdata/
2、新建用户以安全方式运行进程:
3、首先需要安装cmake,这里选用二进制包,解压即可使用
4、编译安装mysql-5.6.24
5、提供配置文件,将mysql目录下support-files/my-default.cnf复制到/etc,具体内容需要手动添加
thread_concurrency的值为系统CPU个数乘以2,这里使用如下简单配置:
6、为mysql提供sysv服务脚本,添加至服务列表,而后就可以启动服务测试使用了。
[root@DQ mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@DQ mysql]# chmod +x !$
chmod +x /etc/init.d/mysqld
[root@DQ mysql]# chkconfig --add mysqld
[root@DQ mysql]# chkconfig mysqld on
7、为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
输出mysql的man手册至man命令的查找路径;输出mysql的头文件至系统头文件路径/usr/include;输出mysql的库文件给系统库查找路径;而后让系统重新载入系统库;将mysql添加到PATH环境变量,让系统可以直接使用的相关命令。
说明:在make进行到14%时,报错缺少库文件
于是查看系统上已安装的zlib包,在执行yum list all |grep zlib查看其它相关包,选择zlibrary-devel用yum进行安装,再次尝试编译不再报错
多出来的3个包为yum解决依赖关系时自动安装
三、编译安装php-7.0
1、解决依赖关系:请配置好yum源后执行如下命令(本机上已经配好epel源,也可以挂载本地系统光盘)
如果想让编译的php支持mcrypt、mhash扩展和libevent,此处还需要安装如下几个rpm包:
另外,也可以根据需要安装libevent,系统一般会自带libevent,但版本有些低。因此可以升级安装,它包含libevent和libevent-devel两个rpm包。
说明: libevent是一个异步事件通知库文件,其API提供了在某文件描述上发生某事件时或其超时时执行回调函数的机制,它主要用来替换事件驱动的网络服务器上的event loop机制。目前来说, libevent支持/dev/poll、kqueue、select、poll、epoll及Solaris的event ports。
2、解压编译PHP-7.0
首先下载源码包至本地目录https://downloads.php.net/
说明: 解压完成后,切换到源码目录下,查看一下有没有README和INSTALL文档,如果有其中一般会有编译配置步骤说明,而后在编译之前先查看一下帮助选项,这里列出下面编译用到的几个选项
[root@DQ php-7.0.0RC4]# ./configure --help
--enable-fpm Enable building of the fpm SAPI executable
--with-config-file-path=PATH
Set the path in which to look for php.ini [PREFIX/lib]
--with-config-file-scan-dir=PATH
Set the path where to scan for configuration files
--with-openssl=DIR Include OpenSSL support (requires OpenSSL >= 0.9.8)
--with-freetype-dir=DIR GD: Set the path to FreeType 2 install prefix
--with-kerberos=DIR IMAP: Include Kerberos support. DIR is the Kerberos install prefix
--with-mcrypt=DIR Include mcrypt support
--with-mysqli=FILE Include MySQLi support. FILE is the path to mysql_config. If no value or mysqlnd is passed as FILE, the MySQL native driver will be used
--with-libxml-dir=DIR DOM: libxml2 install prefix
3、为php提供配置文件;为php-fpm提供Sysv init脚本,并将其添加至服务列表;为php-fpm提供配置文件:
注意:php7中www.conf这个配置文件配置phpfpm的端口号等信息,如果修改默认的9000端口号需在这里改,再改nginx的配置
4、编辑php-fpm的配置文件:/usr/local/php/etc/php-fpm.conf配置fpm的相关选项为实际所需要的值,并启用pid文件,启动php-fpm并验正
四、整合nginx和php
1、编辑/etc/nginx/nginx.conf,启用如下选项:
并在所支持的主页面格式中添加php格式的主页,类似如下:
2、重新载入nginx的配置文件,在/usr/html新建index.php的测试页面,测试php是否能正常工作
五、安装xcache,为php加速:
Xcache 是 php 底层的缓存,它将PHP程式编译成字节码(byte code),再透过服务器上安装对应的程式来执行PHP脚本。而 memcached 是应用层缓存,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
xcache 是不需要修改PHP程序的,只要安装了就可以自动为程序加速,而memcached则需要修改程序的,需要在操作数据库之前先询问下 memcached 有没有缓存数据,如果有且没有过期则不再访问数据库,以达到减少数据库查询的目的。
注:LAMP 的瓶颈在M即数据库,以新的KVDB代替旧的关系数据库可以直接提高web应用程序的性能。
1、解压安装
make报错,目前还没有找到原因,参见http://xcache.lighttpd.net/,可能xcache-3.2.0还没有增加php7.0的支持,之前编译PHP5.6.8时安装xcache-3.2.0按照此步骤成功扩展了该模块
正确安装结束时,会出现类似如下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
再次尝试编译php-5.6.14,安装xcache时仍旧报错,错误与php7中相同