Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
方式一:模块化的方式
一、安装条件
1. 确保linux上已经安装apr和apr-util
2. 确保linux上已经安装了PCRE
3. 确保linux上已经安装了gcc
4. 确保linux上没有安装rpm包的httpd
[root@web ~]# rpm -qa | grep httpd
我安装的是httpd-2.4.7,它所依赖的apr的版本是1.4.0,而用yum安装的最高是1.3.9。所以索性将apr、apr-util和pcre都使用源码。
apr:http://apache.fayea.com/apache-mirror/apr/apr-1.5.0.tar.bz2
apr-util:http://apache.fayea.com/apache-mirror/apr/apr-util-1.5.3.tar.bz2
pcre:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.bz2
二、安装
1. 解压各个软件包
[root@web ~]# tar xf httpd-2.4.7.tar.bz2 [root@web ~]# tar xf apr-1.5.0.tar.bz2 [root@web ~]# tar xf apr-util-1.5.3.tar.bz2 [root@web ~]# tar xf pcre-8.32.tar.bz2
2. 解决apr和apr-util的依赖关系
[root@web ~]# mv apr-1.5.0 ~/httpd-2.4.7/srclib/apr [root@web ~]# mv apr-util-1.5.3 ~/httpd-2.4.7/srclib/apr-util #移动到httpd解压后的文件srclib目录中,注意不要写版本号
3. 解决pcre的依赖关系
[root@web ~]# cd pcre-8.32 [root@web pcre-8.32]# ./configure --prefix=/usr/local/pcre [root@web pcre-8.32]# make && make install
4. 安装apache软件
[root@web httpd-2.4.7]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-track-vars --enable-rewrite --with-zlib --enable-mods-shared=most --with-included-apr --with-pcre=/usr/local/pcre [root@web httpd-2.4.7]# make [root@web httpd-2.4.7]# make install #--enable-ssl需要安装openssl-devel
–prefix=/usr/local/apache #指定httpd的安装路径
–sysconfdir=/etc/httpd #指定安装后配置文件的路径
–enable-so #这项是关键:支持动态模块装卸载,如果不写的话,php没办法以模块的方式编译成apache的模块了
–enable-ssl #支持https
–enable-rewrite #支持url重写
–with-zlib #支持使用zlib库将数据发送到客户端之前进行压缩
–enable-mpms-shared=most #构建MPM为动态模块,将所有的模块都设为动态共享,可以在系统运行时加载
--with-included-apr #和依赖的apr和apr-util软件相关
--with-pcre=
/usr/local/pcre #依赖于pcre告知pcre的安装路径
5. 完善安装
[root@web apache]# vim /etc/profile export PATH=$PATH:/usr/local/apache/bin [root@web apache]# . !$ #在PATH变量中添加apache的可执行文件 [root@web apache]# vim /etc/ld.so.conf.d/apache-x86_64.conf /usr/local/apache/lib [root@web lib]# ldconfig -v #让系统可以找到apache的库文件 [root@web lib]# vim /etc/man.config MANPATH /usr/local/apache/man #让系统可以找到apache的帮助文档 [root@web apache]# ln -sv /usr/local/apache/include /usr/include/apache `/usr/include/apache' -> `/usr/local/apache/include' #让系统可以找到apache的头文件
6. 启动添加启动脚本
这个脚本不需要手动写,只需要把rpm安装的那个/etc/init.d/httpd文件稍做修改就可以了。
[root@web logs]# vim /etc/httpd/httpd.conf PidFile "/var/run/httpd.pid" #在配置文件中增加这一行
[root@web ~]# vim /etc/init.d/httpd apachectl=/usr/local/apache/bin/apachectl httpd=${HTTPD-/usr/local/apache/bin/httpd} pidfile=${PIDFILE-/var/run/httpd.pid} #只需修改这3行即可
脚本已上传到附件里,将.txt后缀去掉即可
7. 设置开机自启动
[root@web logs]# chkconfig --add httpd [root@web logs]# chkconfig httpd on
安装mysql
http://svenman.blog.51cto.com/6867097/1359467我的这篇博客写了
安装php
1. 安装php主程序
[root@web ~]# tar xf php-5.5.9.tar.bz2 [root@web ~]# cd php-5.5.9 [root@web php-5.5.9]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-zlib-dir --enable-mbstring [root@web php-5.5.9]# make && make install [root@web php-5.5.9]# cp php.ini-production /usr/local/php/lib/php.ini
2. 配置apache使其可以调用php
注意:apache调用php有3种方式,CGI、FastCGI和模块,这里选择的调用方式就是将php作为apache的一个模块。
[root@web php-5.5.9]# vim /etc/httpd/httpd.conf LoadModule php5_module modules/libphp5.so #确保这一行没有被注释 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps #增加这2行 DirectoryIndex index.php index.html #修改主页文件
[root@web php-5.5.9]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
[root@web ~]# vim /etc/profile export PATH=$PATH:/usr/local/php/bin
3. 测试
[root@web ~]# cd /usr/local/apache/htdocs/ #源码安装的apache的网站根目录就在这里,可以通过配置文件修改为熟悉的/var/www/html/下 [root@web htdocs]# vim index.php <?php phpinfo(); ?>
看到这个页面就说明的apache可以成功调用php了,继续测试php到mysql的连接
[root@web htdocs]# vim index.php <?php $link=mysql_connect(localhost,'root','12345'); if ($link) echo "success"; else echo "failure"; ?>
[root@web htdocs]# service mysqld start Starting MySQL. [ OK ]
[root@web htdocs]# service mysqld stop Shutting down MySQL.. [ OK ]
这样就说明测试成功了。
安装php加速器xcache
下载地址:xcache.lighttpd.net/pub/Releases/3.0.4/xcache-3.0.4.tar.bz2
1. 解压并安装
[root@web ~]# tar xf xcache-3.1.0.tar.bz2 [root@web ~]# mv xcache-3.1.0 /usr/local/xcache [root@web ~]# cd !$ [root@web xcache]# phpize #如果没有在PATH中声明需使用/usr/local/php/bin/phpize这个路径 [root@web xcache]# ./configure --enable-xcache --enable-xcache-coverager [root@web xcache]# make && make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20121212/ #把安装结束的这个信息复制下来
注意:如果使用/usr/local/php/bin/phpize
的路径, 并且他不是 $PATH 内第一个可以找到 phpize 的, 那么记得 使用./configure –with-php-config=/usr/local/php/bin/phpize
2. 配置xcache
[root@web xcache]# cat xcache.ini >> /usr/local/php/lib/php.ini [root@web xcache]# echo -n "123456" | md5sum [root@web xcache]# vim /usr/local/php/lib/php.ini [xcache-common] extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20121212/" #添加这一行,指定共享库路径 [xcache.admin] xcache.admin.user = "xcache" xcache.admin.pass = "e10adc3949ba59abbe56e057f20f883e" #web方式访问xcache的用户名和密码,可以随便自己怎么设置 [xcache] xcache.shm_scheme = "mmap" xcache.mmap_path = "/tmp/xcache" #其它参数暂不修改
查看一下信息
3. 拷贝web管理的文件到网站根目录
[root@web xcache]# mkdir /usr/local/apache/htdocs/xcache-admin [root@web xcache]# cp -a htdocs/* /usr/local/apache/htdocs/xcache-admin
4. 测试
[root@oracle ~]# ab -c 500 -n 1000 http://192.168.2.91/index.php
方式二: FastCGI方式
标准的CGI对每个请求都会执行”PHP解析器会解析php.ini文件,初始化执行环境”,所以处理每个时间的时间会比较长。而Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。
我们在进程看到的php-fpm是用来管理php-cgi,php-cgi只是解释PHP脚本的程序。fastcgi是一个协议,php-fpm实现了这个协议,这就是他们之间的关系。
1. 安装apache
[root@web httpd-2.4.7]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-rewrite --with-zlib --with-pcre=/usr/local/pcre --with-included-apr --enable-track-vars --enable-mods-shared=most --with-mpm=event
2. 配置httpd参数
[root@web logs]#vim /etc/httpd/httpd.conf LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #去掉注释符 PidFile "/var/run/httpd.pid"#增加这一行 #DocumentRoot "/usr/local/apache/htdocs" #关闭中心主机 DirectoryIndex index.php index.html #增加index.php AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps #增加php文件类型 Include /etc/httpd/extra/httpd-vhosts.conf #开启虚拟主机
3. 安装php
[root@web ~]# yum install libmcrypt-devel mhash-devel libjpeg-devel libpng-devel libxml2-devel [root@web php-5.5.9]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-png-dir --with-jpeg-dir --with-zlib-dir --with-gd --with-pear --enable-mbstring --enable-fpm #最后一个参数让php支持fastcig
4. 为php提供配置文件:
[root@web php-5.5.9]# cp php.ini-production /usr/local/php/lib/php.ini
5. 配置php-fpm:
[root@web php-5.5.9]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #为php-fpm提供启动脚本 [root@web php-5.5.9]# chmod +x !$ chmod+x /etc/init.d/php-fpm [root@web php-5.5.9]# chkconfig --add php-fpm [root@web php-5.5.9]# chkconfig php-fpm on [root@web php-5.5.9]# mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf #为php-fpm提供配置文件
6. 修改php-fpm的配置文件
[root@web php-5.5.9]#vim /usr/local/php/etc/php-fpm.conf pid = run/php-fpm.pid #取消这一行的注释,因为脚本需要根据pid文件确定服务是否正在运行 listen = 127.0.0.1:9000 pm.max_children = 20 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 #根据需要修改
7. 配置httpd-vhosts.conf
[root@web ~]# vim /etc/httpd/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/usr/local/apache/htdocs/dong" ServerName www.luntan2.com ProxyRequests Off ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/dong/$1 ErrorLog "logs/mylog.err" CustomLog "logs/mylog.acc"combinedio </VirtualHost>
在相应的虚拟主机中添加类似如下两行:
ProxyRequests Off 关闭正向代理功能
ProxyPassMatch ^/(.*.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1 把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了路径,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
文章版权声明
1 原创文章作者:1405,如若转载,请注明出处: https://www.52hwl.com/33882.html
2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈
3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)
4 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别