CentOS7中默认安装的是httpd2.4,数据库使用的也是mariadb,php的模块和fpm都有,不建议编译安装,
下面在CentOS6.6中演示编译安装httpd2.4,mariadb,php
php编译分成两种,一种是编译成模块,另一种是编译成fpm
一、CentOS6中编译安装httpd2.4,mariadb,php编译成模块
CentOS6上编译安装httpd2.4
编译安装步骤:
httpd2.4 需要1.4以上版本的apr和apr-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 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 �Ctnl 查看
从外部访问下,
可以看到启动成功了
在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的相关命令。具体实现过程这里不再给出。
一、把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 �Cj # 来使用多线程来编译,这样速度会快
安装成功了
先打开/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个左右的资源,加速效果是很明显的
二、把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的删掉,重新解压进行编译
./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;
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
下面这两行也要打开
然后添加虚拟主机,在/etc/httpd24/extra/httpd -vhosts.conf这个配置文件中修改
然后修改两个软件的配置文件(不会可以查看本人lamp的博客)
然后修改数据库
测试,首先修改物理机的hosts文件
都可以正常访问了
然后为虚拟主机www.web1.com做ssl
首先创建CA和自己给自己发证书,在172.16.249.195上创建一个CA,这个CA是以前实验创建过的,现在不演示了
首先找到CA目录,然后生成私钥(umask077 ;openssl genrsa �Cout 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签证,
CA把证书发给172.16.249.114
要在/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就做好了