CentOS7中默认安装的是httpd2.4,数据库使用的也是mariadbphp的模块和fpm都有,不建议编译安装,

 

下面在CentOS6.6中演示编译安装httpd2.4mariadbphp

php编译分成两种,一种是编译成模块,另一种是编译成fpm

 

一、CentOS6中编译安装httpd2.4mariadbphp编译成模块

CentOS6上编译安装httpd2.4

        编译安装步骤:

       httpd2.4 需要1.4以上版本的aprapr-util

   因为apr这些包,可能不只被httpd所依赖,其他程序也可能依赖,所以就不能直接升级安装,需要重新编译安装到其他位置,

           前提:

                 安装开发环境,安装pcre-devel

              (1)apr

                         #  ./configure --prefix=/usr/local/apr

                         #  make && make install

              (2)apr-util

                          #  ./configure --prefix=/usr/local/apr-util --with=/usr/local/apr

                          #  make && make install

                          #  groupadd -r apache

                          #  useradd -r -g apache apahce

                          #  ./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so--enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/--enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

                         #  make && make install

 

        启动服务:apachectl

    首先要保证开发环境有,就是包组Development toolsServer Platform Development已经安装好,

然后下载apr-1.5.0.tar.bz2apr-util-1.5.3.tar.bz2包到虚拟机上,然后解压

wKioL1YJLHfzkiHQAADyLLSUc48289.jpg

然后编译安装

wKiom1YJLK-wi1nEAAFL6VS7elg208.jpg

编译成功了,然后进行安装

make &&  make  install就行了

 

然后同样的方式编译安装apr-util

wKioL1YJLMXAkuvIAAIjRWYEWDM713.jpg

然后make  &&  make install就行了

这两个包就安装好了

然后创建apache用户和组

groupadd -r apache useradd -r-g apache apahce,如果已存在就不用创建了

然后编译安装httpd2.4

还需要安装pcre-devel包,如果没有这个包没办法对httpd做开发编译

 

httpd2.4编译使用的选项

./configure --prefix=/usr/local/apache--sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite--with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/--enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

wKiom1YJLQqxnrTQAAJeO0_2TuM012.jpg

编译好,make  && make  install安装

 

启动要用apachectl 因为自己安装的包没有服务脚本,可以自行编写

首先保证80端口没有被占用,

wKioL1YJLXzh7XU1AAL3m4Xopd8922.jpg

要想启动需要/usr/local/apache/bin/apachectl这个路径,如果直接使用apachectlrpm安装的httpd,为了方便可以在/etc/profile.d/下创建httpd.sh来把这个路径加入到PATH变量中,并重读这个文件

wKiom1YJLYbi1EqlAACC1hBHYKE904.jpg

wKioL1YJLdfBTg6kAADs2G1FjMs112.jpg

echo $PATH,可以查看到这个路径在最前面了,用which确认以下,就可以看到了

wKiom1YJLgSRhLwHAAFJOp-ZrN4899.jpg

apachectl就可以启动了,使用ss  –tnl 查看

wKioL1YJLhnR4qXJAANYgtiA-Sc713.jpg

从外部访问下,

wKiom1YJLiPDLcxgAACBauRwV7Y827.jpg

可以看到启动成功了

CentOS6中编译的httpd2.4需要注意下,里面的配置文件是 /etc/httpd24/httpd.conf

需要在里面加入一行PidFile  "/var/run/httpd.pid"

然后在extra目录下,还有很多功能模块的配置文件,建议到时修改时,修改这些文件,可以以后方便自动换运维

wKioL1YJLpHw928PAAJB2xiyfFs568.jpg

 

如果想在CentOS6中使用脚本,管理安装后的httpd2.4需要写一个脚本

首先apachectl  stop 停掉服务

然后进入/etc/rc.d/init.d下复制httpdhttpd24然后进行修改

wKioL1YJOq_yXaqWAAFVF1eRaQw331.jpg

 

wKioL1YJPcySukJOAAJyMywj1IE379.jpg

然后把这个脚本加入到服务中,然后打开

wKiom1YJPdTTAtpkAAEabHnkbhM049.jpg

就可以使用服务启动了 service  httpd24 start

然后安装mariadb,直接编译安装需要另外的工具,这里我们直接使用通用二进制格式的程序源码来进行

 

安装mariadb

 

首先停用使用(service  mysqld  stopmysqld服务,然后卸载mysql-server,免得产生冲突,以前的日志文件也不需要也给删掉

wKioL1YJQ62Dy6f4AAEXfu0RAGQ434.jpg

这样mysql就被完全清掉了,然后下载mariadb的最新版本,要适用于自己的电脑的平台结构的二进制格式的源码包,这里以mariadb-5.5.43-linux-x86_64.tar.gz这个版本的mariadb为例进行安装

首先创建一个mysql用户和组,然后解压这个包到/usr/local下,然后进入这个目录,然后创建一个连接指向mysql

wKiom1YJQ07CPFJoAAFL6VS7elg340.jpg

 

spacer.gif

切进mysql这个目录,然后要把里面的所有文件的属主和属组改为rootmysql

spacer.gif

这里面有一个data目录是用来存放数据的,但是我们不应该把数据存到这,应该重新挂载一个硬盘把数据存放到那里面,或者在根目录下创建一个目录,来存放数据

我们挂载一盘硬盘,创建一个分区,然后做lvm

fdisk /dev/sdd(新加硬盘的名称),创建一个分区大小为10G,然后类型改为8e

spacer.gif

然后同步下

spacer.gif

然后创建pvgvlv

 

spacer.gif

然后进行初始化,文件类型任意,但最好用xfsmysqlxfs文件系统的支持性好CentOS6中没有提供,需要安装yum  install xfsprogs安装,然后就可以使用make.xfs进行初始化,但以后的扩展可能有问题,为了演示我们就以xfs文件系统为例

spacer.gif

然后创建一个目录,让它开机自动挂载,编辑/etc/fstab

spacer.gif

然后挂载以下,mount  -a,然后查看下

spacer.gif

然后进入/mydata目录,创建一个data目录来存放数据库的数据,要修改属主和属组为mysql

spacer.gif

然后回到/usr/local/mysql,然后使用数据库初始化脚本,把初始化后的数据库数据放到我们创建的目录下

spacer.gif

查看下,这里面就有数据了

spacer.gif

这样数据的存储位置就弄好了

然后创建mysql的服务脚本

复制/usr/local/mysql/support-files/mysql.server  /etc/rc.d/init.d/mysqld,然后加入服务里

spacer.gif

然后准备mysql的配置文件,mysql的配置文件的查找次序为:

/etc/my.cnf --> /etc/mysql/my.cnf -->--default-extra-file=/PATH/TO/CONF_FILE (启动这个服务时的选项指定的)-->~/.my.cnf(运行当前程序的家目录的文件),最后找到的文件生效


首先复制配置文件加入服务里,然后进行修改

spacer.gif

修改内容增加三项

spacer.gif

skip_name_resolve = on这是跳过反解这一项的配置

然后就可以启动测试下了

spacer.gif

这样mariadb就安装好了

spacer.gif

可以启动了

 

为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:

1、输出mysqlman手册至man命令的查找路径:

编辑/etc/man.config,添加如下行即可:

MANPATH /usr/local/mysql/man

2、输出mysql的头文件至系统头文件路径/usr/include

这可以通过简单的创建链接实现:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

3、输出mysql的库文件给系统库查找路径:

# echo '/usr/local/mysql/lib' >/etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库:

# ldconfig

4、修改PATH环境变量,让系统可以直接使用mysql的相关命令。具体实现过程这里不再给出。

 

一、把php编译成模块

 

下面进行编辑安装php,首先下载,这里以php-5.4.40.tar.bz2版本为例

首先保证编译环境是好的,Desktop Platform Development这个包组安装过,然后bzip2-devellibmcrypt-devel libxml2-devel这几个也安装过,

然后解压,进行编译安装php

# tar xf php-5.4.40.tar.bz2

# cd php-5.4.40

# ./configure --prefix=/usr/local/php--with-mysql=/usr/local/mysql --with-openssl--with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr--enable-xml  --enable-sockets--with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc--with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts

 

--enable-maintainer-zts这一项,这里为了支持apacheworkerevent这两个MPM,编译时使用了--enable-maintainer-zts选项,如果使用的是prefork就不需要这一项。

因为前面我们编译的httpd使用的是prefork模块,所以这里编译不使用这一项

使用的命令是下面这个

./configure --prefix=/usr/local/php--with-mysql=/usr/local/mysql --with-openssl--with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib--with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs--with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2

spacer.gif

spacer.gif

这样就编译好了,然后make  &&  make install,可以使用make  –j  # 来使用多线程来编译,这样速度会快

spacer.gif

安装成功了

 

先打开/etc/httpd24/httpd.conf查看LoadModule模块这一块,确认php5_module这个模块加入进来了;然后找到AddType这一块,加入如下二行

  AddType application/x-httpd-php .php

  AddType application/x-httpd-php-source .phps

然后再定位至DirectoryIndex index.html 修改为:

   DirectoryIndex  index.php  index.html

然后为php提供配置文件:在编译安装的目录下(/root/php-5.4.40/

# cp php.ini-production /etc/php.ini 复制完无须修改就行,

而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。

然后去提供一个测试页,路径在/usr/local/apache/htdocs目录下

spacer.gif

然后编辑index.php

spacer.gif

测试下,访问172.16.249.114

spacer.gif

 

没有问题成功了,然后把mysql关掉,在确认下是否能连到数据库

spacer.gif

 

这证明可以连到,然后把mysql服务启动(service mysqld start

然后部署一个应用phpMyAdmin

解压unzip  phpMyAdmin-4.4.14.1-all-languages.zip

然后把目录移动到/usr/local/apache/htdocs/目录下,然后设置phpMyAdmin的配置文件

spacer.gif

修改phpMyAdmin的配置文件,在这里面这行加一个随机字符串然后就可以访问了


spacer.gif


然后去给数据库的管理员加上密码

spacer.gif

查看下

spacer.gif

然后重读一下 使用 FLUSH   PRIVILEGES

然后访问测试

spacer.gif

这就可以了,一切正常,


下面进行下压力测试,然后进行安装xcache进行加速

首先先访问少点,然后做压力测试

spacer.gif

压力测试ab -c 100 -n 10000 http://172.16.249.114/pma/index.php

spacer.gif

可以看到每秒中大概访问45个左右的资源

172.16.249.114上使用top命令查看,会发现压力很大

spacer.gif

下面进行编译安装xcache来进行加速,以xcache-3.2.0.tar.bz2为例

解压,然后进行编译

步骤

# tar xf xcache-3.0.3.tar.gz

# cd xcache-3.0.3

# /usr/local/php/bin/phpize 首先执行这一步,要不不出现configure脚本

# ./configure --enable-xcache--with-php-config=/usr/local/php/bin/php-config

# make && make install

spacer.gif

然后make&&make  install就行了,要记住安装完成后提示的路径

spacer.gif

这里路径是xcache的模块的位置

然后复制xcache.ini/etc/php.d/目录下,然后修改

spacer.gif

把刚才的目录加到这里面

spacer.gif

然后保存退出,重启服务(service httpd24 reload

查看测试页,会发现多一个xcache模块

spacer.gif

这样加速就做好了,然后进行访问测试

首先先少访问点,然后压力测试

spacer.gif

spacer.gif

可以看到现在每秒可以响应250个左右的资源,加速效果是很明显的

 


二、把php编译成fpm


首先编译安装apache


1、httpd-2.4.9需要较新版本的apr和apr-util,因此需要事先对其进行升级。升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。这里选择使用编译源代码的方式进行。

(1) 编译安装apr

# tar xf apr-1.5.0.tar.bz2

# cd apr-1.5.0

# ./configure --prefix=/usr/local/apr

# make && make install

(2) 编译安装apr-util

# tar xf apr-util-1.5.3.tar.bz2

# cd apr-util-1.5.3

# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

# make && make install

2、编译安装httpd-2.4.10

# tar xf httpd-2.4.10.tar.bz2

# cd httpd-2.4.10

# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

# make && make install

然后对httpd进行配置,添加服务脚本,加入服务等,跟前面的一样

3、安装mysql,跟前面的步骤一样,为了方便可以不用重新设一个分区,直接根下创建一个目录就可以了。

4、然后编译安装php


首先把刚才编译php的删掉,重新解压进行编译

spacer.gif

./configure --prefix=/usr/local/php5--with-mysql=/usr/local/mysql --with-openssl--with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib--with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc/php5/--with-config-file-scan-dir=/etc/php5.d --with-bz2

为了跟上面的编译不冲突,把目录修改为php5

编译完成后,要有下面的这些,

spacer.gif

然后就可以makemake  install

spacer.gif

安装完成

然互把httpd服务停掉,然后进入/etc/httpd24/目录下把httpd.conf配置文件移动重命名为httpd.conf.mod_php,然后把刚才的备份文件复制一份命名为httpd.conf

spacer.gif

要想让phpfpm的形式工作,首先进行配置

创建/etc/php5/etc/php5.d目录(mkdir /etc/php5{,.d}

然后复制配置文件cp php.ini-production /etc/php5/php.ini

php-fpm提供SysV init脚本,并将其添加至服务列表:

# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

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

# chkconfig --add php-fpm

# chkconfig php-fpm on

spacer.gif

php-fpm提供配置文件:

# cp /usr/local/php5/etc/php-fpm.conf.default/usr/local/php5/etc/php-fpm.conf

spacer.gif

编辑php-fpm的配置文件:

# vim /usr/local/php5/etc/php-fpm.conf

配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 5

pid = /usr/local/php5/var/run/php-fpm.pid

spacer.gif

这是为了让远程主机访问的

 

spacer.gif

然后查找pid关键字,加入pid = /usr/local/php5/var/run/php-fpm.pid

spacer.gif

接下来就可以启动php-fpm了:

# service php-fpm start

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):

# ps aux | grep php-fpm

spacer.gif

 

然后要配置httpd的相关内容

1、启用httpd的相关模块

 

Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载

LoadModule proxy_modulemodules/mod_proxy.so

LoadModule proxy_fcgi_modulemodules/mod_proxy_fcgi.so

vim /etc/httpd24/httpd.conf

spacer.gif

编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页

 #vim /etc/httpd24/httpd.conf  

 添加如下二行

  AddType application/x-httpd-php .php

  AddType application/x-httpd-php-source .phps

spacer.gif

 定位至DirectoryIndex  index.html

   修改为:

   DirectoryIndex  index.php  index.html

spacer.gif

这里先以中心主机进行测试,直接在配置文件中加入下面两行

ProxyRequestsOff

       ProxyPassMatch ^/(.*\.php)$fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1 这个路径是资源目录的路径

spacer.gif

然后先检查语法错误,重启服务进行验证

spacer.gif

spacer.gif

这就可以访问了,而且是我们安装的fpm格式php

 

 

下面做两个虚拟主机,在fpm模式下 提供两个虚拟主机:

         www.web1.com:phpMyAdmin, 同时提供ssl

         www.web2.com:wordpress;



首先修改/etc/httpd24/httpd.conf下的配置文件,然后把中心主机禁掉,然后创建两个虚拟主机

DocumentRoot"/usr/local/apache/htdocs"这一行注释掉,紧挨着的下面一行要改为

<Directory "/web/vhosts">

主配置文件中还要加入几个模块

LoadModule socache_shmcb_modulemodules/mod_socache_shmcb.so

LoadModule ssl_module modules/mod_ssl.so

spacer.gif

下面这两行也要打开

wKiom1YJSdXwYy2mAAI-ADKCR_k682.jpg

然后添加虚拟主机,在/etc/httpd24/extra/httpd -vhosts.conf这个配置文件中修改

spacer.gif

 

然后修改两个软件的配置文件(不会可以查看本人lamp的博客)

然后修改数据库

spacer.gif

 

测试,首先修改物理机的hosts文件

spacer.gif

spacer.gif

都可以正常访问了


然后为虚拟主机www.web1.comssl


首先创建CA和自己给自己发证书,在172.16.249.195上创建一个CA,这个CA是以前实验创建过的,现在不演示了

首先找到CA目录,然后生成私钥(umask077 openssl genrsa –out private/cakey.pem 2048 ),然后创建自己的签名 opensslreq -new-x509 -key private/cakey.pem -out cacert.pem -days 7300

spacer.gif

这样自己的证书创建好了

然后在172.16.249.114上创建证书,然后去找CA签证;首先创建csr文件,然后发给CACA签名后,在送还给172.16.249.114

首先在/web/vhosts中创建一个ssl目录,然后生成私钥,创建证书,然后发给CA签证

spacer.gif

然后把证书发给CA,让CA签证,

spacer.gifwKioL1YJTRayuINXAAMT8fxKoRU742.jpgCA把证书发给172.16.249.114

spacer.gif

要在/etc/httpd24/httpd.conf下搜索关键字LoadModule,把下面几行的注释去掉

LoadModule include_module modules/mod_include.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

LoadModule ssl_module modules/mod_ssl.so


然后在172.16.249.114中配置/etc/httpd24/extra/httpd-ssl.conf文件

配置虚拟主机,指定证书和私钥的路径,

wKiom1YJU36ApIanAAR5HuXuEwQ810.jpg

重启服务,然后把CA的证书加入浏览器中受信任的证书里进行访问,

spacer.gif

这样ssl就做好了