CentOS7中默认安装的是httpd2.4,数据库使用的也是mariadb,php的模块和fpm都有,不建议编译安装,php
下面在CentOS6.6中演示编译安装httpd2.4,mariadb,php html
php编译分红两种,一种是编译成模块,另外一种是编译成fpmmysql
1、CentOS6中编译安装httpd2.4,mariadb,php编译成模块linux
CentOS6上编译安装httpd2.4web
编译安装步骤:sql
httpd2.4 须要1.4以上版本的apr和apr-util数据库
由于apr这些包,可能不仅被httpd所依赖,其余程序也可能依赖,因此就不能直接升级安装,须要从新编译安装到其余位置,apache
前提:vim
安装开发环境,安装pcre-develapi
(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 tools和Server Platform Development已经安装好,
而后下载apr-1.5.0.tar.bz2和apr-util-1.5.3.tar.bz2包到虚拟机上,而后解压
而后编译安装
编译成功了,而后进行安装
make && make install就好了
而后一样的方式编译安装apr-util
而后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
编译好,make && make install安装
启动要用apachectl 由于本身安装的包没有服务脚本,能够自行编写
首先保证80端口没有被占用,
要想启动须要/usr/local/apache/bin/apachectl这个路径,若是直接使用apachectl是rpm安装的httpd,为了方即可以在/etc/profile.d/下建立httpd.sh来把这个路径加入到PATH变量中,并重读这个文件
echo $PATH,能够查看到这个路径在最前面了,用which确认如下,就能够看到了
apachectl就能够启动了,使用ss –tnl 查看
从外部访问下,
能够看到启动成功了
在CentOS6中编译的httpd2.4须要注意下,里面的配置文件是 /etc/httpd24/httpd.conf
须要在里面加入一行PidFile "/var/run/httpd.pid"
而后在extra目录下,还有不少功能模块的配置文件,建议到时修改时,修改这些文件,能够之后方便自动换运维
若是想在CentOS6中使用脚本,管理安装后的httpd2.4须要写一个脚本
首先apachectl stop 停掉服务
而后进入/etc/rc.d/init.d下复制httpd到httpd24而后进行修改
而后把这个脚本加入到服务中,而后打开
就可使用服务启动了 service httpd24 start等
而后安装mariadb,直接编译安装须要另外的工具,这里咱们直接使用通用二进制格式的程序源码来进行
安装mariadb
首先停用使用(service mysqld stop)mysqld服务,而后卸载mysql-server,省得产生冲突,之前的日志文件也不须要也给删掉
这样mysql就被彻底清掉了,而后下载mariadb的最新版本,要适用于本身的电脑的平台结构的二进制格式的源码包,这里以mariadb-5.5.43-linux-x86_64.tar.gz这个版本的mariadb为例进行安装
首先建立一个mysql用户和组,而后解压这个包到/usr/local下,而后进入这个目录,而后建立一个链接指向mysql
切进mysql这个目录,而后要把里面的全部文件的属主和属组改成root,mysql
这里面有一个data目录是用来存放数据的,可是咱们不该该把数据存到这,应该从新挂载一个硬盘把数据存放到那里面,或者在根目录下建立一个目录,来存放数据
咱们挂载一盘硬盘,建立一个分区,而后作lvm
fdisk /dev/sdd(新加硬盘的名称),建立一个分区大小为10G,而后类型改成8e
而后同步下
而后建立pv,gv,lv等
而后进行初始化,文件类型任意,但最好用xfs,mysql对xfs文件系统的支持性好CentOS6中没有提供,须要安装yum install xfsprogs安装,而后就可使用make.xfs进行初始化,但之后的扩展可能有问题,为了演示咱们就以xfs文件系统为例
而后建立一个目录,让它开机自动挂载,编辑/etc/fstab
而后挂载如下,mount -a,而后查看下
而后进入/mydata目录,建立一个data目录来存放数据库的数据,要修改属主和属组为mysql
而后回到/usr/local/mysql,而后使用数据库初始化脚本,把初始化后的数据库数据放到咱们建立的目录下
查看下,这里面就有数据了
这样数据的存储位置就弄好了
而后建立mysql的服务脚本
复制/usr/local/mysql/support-files/mysql.server 到/etc/rc.d/init.d/mysqld,而后加入服务里
而后准备mysql的配置文件,mysql的配置文件的查找次序为:
/etc/my.cnf --> /etc/mysql/my.cnf -->--default-extra-file=/PATH/TO/CONF_FILE (启动这个服务时的选项指定的)-->~/.my.cnf(运行当前程序的家目录的文件),最后找到的文件生效
首先复制配置文件加入服务里,而后进行修改
修改内容增长三项
skip_name_resolve = on这是跳过反解这一项的配置
而后就能够启动测试下了
这样mariadb就安装好了
能够启动了
为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还须要进行以下步骤:
1、输出mysql的man手册至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的相关命令。具体实现过程这里再也不给出。
1、把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这一项,这里为了支持apache的worker或event这两个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
这样就编译好了,而后make && make install,可使用make –j # 来使用多线程来编译,这样速度会快
安装成功了
先打开/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目录下
而后编辑index.php
测试下,访问172.16.249.114
没有问题成功了,而后把mysql关掉,在确认下是否能连到数据库
这证实能够连到,而后把mysql服务启动(service mysqld start)
而后部署一个应用phpMyAdmin
解压unzip phpMyAdmin-4.4.14.1-all-languages.zip
而后把目录移动到/usr/local/apache/htdocs/目录下,而后设置phpMyAdmin的配置文件
修改phpMyAdmin的配置文件,在这里面这行加一个随机字符串而后就能够访问了
而后去给数据库的管理员加上密码
查看下
而后重读一下 使用 FLUSH PRIVILEGES
而后访问测试
这就能够了,一切正常,
下面进行下压力测试,而后进行安装xcache进行加速
首先先访问少点,而后作压力测试
压力测试ab -c 100 -n 10000 http://172.16.249.114/pma/index.php
能够看到每秒中大概访问45个左右的资源
在172.16.249.114上使用top命令查看,会发现压力很大
下面进行编译安装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
而后make&&make install就好了,要记住安装完成后提示的路径
这里路径是xcache的模块的位置
而后复制xcache.ini到/etc/php.d/目录下,而后修改
把刚才的目录加到这里面
而后保存退出,重启服务(service httpd24 reload)
查看测试页,会发现多一个xcache模块
这样加速就作好了,而后进行访问测试
首先先少访问点,而后压力测试
能够看到如今每秒能够响应250个左右的资源,加速效果是很明显的
2、把php编译成fpm
首先编译安装apache
一、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
二、编译安装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进行配置,添加服务脚本,加入服务等,跟前面的同样
三、安装mysql,跟前面的步骤同样,为了方即可以不用从新设一个分区,直接根下建立一个目录就能够了。
四、而后编译安装php
首先把刚才编译php的删掉,从新解压进行编译
./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
编译完成后,要有下面的这些,
而后就能够make和make install了
安装完成
然互把httpd服务停掉,而后进入/etc/httpd24/目录下把httpd.conf配置文件移动重命名为httpd.conf.mod_php,而后把刚才的备份文件复制一份命名为httpd.conf
要想让php以fpm的形式工做,首先进行配置
建立/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
为php-fpm提供配置文件:
# cp /usr/local/php5/etc/php-fpm.conf.default/usr/local/php5/etc/php-fpm.conf
编辑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
这是为了让远程主机访问的
而后查找pid关键字,加入pid = /usr/local/php5/var/run/php-fpm.pid
接下来就能够启动php-fpm了:
# service php-fpm start
使用以下命令来验正(若是此命令输出有中几个php-fpm进程就说明启动成功了):
# ps aux | grep php-fpm
而后要配置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
编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页
#vim /etc/httpd24/httpd.conf
添加以下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html
这里先以中心主机进行测试,直接在配置文件中加入下面两行
ProxyRequestsOff
ProxyPassMatch ^/(.*\.php)$fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1 这个路径是资源目录的路径
而后先检查语法错误,重启服务进行验证
这就能够访问了,并且是咱们安装的fpm格式的php
下面作两个虚拟主机,在fpm模式下 提供两个虚拟主机:
www.web1.com:phpMyAdmin, 同时提供ssl;
首先修改/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
下面这两行也要打开
而后添加虚拟主机,在/etc/httpd24/extra/httpd -vhosts.conf这个配置文件中修改
而后修改两个软件的配置文件(不会能够查看本人lamp的博客)
而后修改数据库
测试,首先修改物理机的hosts文件
均可以正常访问了
而后为虚拟主机www.web1.com作ssl
首先建立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
这样本身的证书建立好了
而后在172.16.249.114上建立证书,而后去找CA签证;首先建立csr文件,而后发给CA,CA签名后,在送还给172.16.249.114
首先在/web/vhosts中建立一个ssl目录,而后生成私钥,建立证书,而后发给CA签证
而后把证书发给CA,让CA签证,
要在/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文件
配置虚拟主机,指定证书和私钥的路径,
重启服务,而后把CA的证书加入浏览器中受信任的证书里进行访问,
这样ssl就作好了