首页 > 代码库 > Apache 编译安装2.2
Apache 编译安装2.2
一、Apache介绍
1、Apache是什么?
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。Apache源于NCSA server服务。
1.1 Apache的应用场合
1》使用Apache运行静态HTML页,图片,(处理静态文件不如Nginx)
2》使用Apache结合PHP、Perl等程序,lamp被称之为经典组合
3》使用Apache结合Tomcat/resin运行jsp,java等程序,成为中小企业的首选
4》使用Apache做代理.负载均衡,rewrite规则过滤等
二、Apache的编译安装
2、开始安装Apache软件包
Apache的安装非常简单,具体操作过程如下
2.1 下载安装包
[root@loveyu /]# mkdir -p /home/loveyu/tools [root@loveyu /]# cd /home/loveyu/tools [root@loveyu tools]# wget http://mirrors.hust.edu.cn/apache [root@loveyu tools]# ls -l -rw-r--r-- 1 root root 7684420 Jan 13 02:38 httpd-2.2.32.tar.gz
2.2 编译安装Apache
编译安装参数说明(通过命令./configure -help 查看Apache的编译参数)
1》./configure检查编译环境是否符合编译需求,并定义当前程序编译时启用哪个特性或功能,以及安装路径的定义
2》--prefix=/usr/local/apache指定Apache的安装路径为/usr/local/apache,如果不指定安装路径,则为默认路径为/usr/local/apache
3》--enable-deflate提供对内容的压缩传输编码支持,一般html,js,css的内容的站点,使用此参数会极大提高传输速度,提升访问者的体验
4》--enable-expires激活允许通过配置文件控制http的"expires:"金额"cache-control"头内容,及即对网站图片,js,css等内容,提供客户端浏览器缓存设置。这是Apache调优的一个重要选项之一
5》--enable-heads 提供允许对http请求头的控制
6》--with-mpm-worker选择Apache mpm的模式为worker模式,因worker模式原理是更多的使用线程来处理请求,所以可以处理更多的并发请求,而系统资源的开销小于基于进程的mpm prefork(默认为他)
7》--enable-rewrite 提供基于URL规则的重写功能。即根据已知URL地址,转换其他想要的URL地址,这是Apache调优的一个重要选项之一,(伪静态功能)
8》 --enable-so激活Apache服务的DSO(全称Dynamic Shared Object,动态共享对象)支持,即在以后可以以DSO的、方式编译安装共享模块,这个模块本身不能以DSO方式编译
[root@loveyu tools]#./configure --prefix=/usr/local/apache --enable-deflate --enable-expires --enable-heads --with-mpm-worker --enable-rewrite --enable-so [root@loveyu tools]#make #执行编译命令 [root@loveyu tools]#make install [root@loveyu tools]# ln -s /var/local/apache/ /application/apache #将其做个做链接,方便使用 [root@loveyu tools]# ls -ld /application/apache lrwxrwxrwx 1 root root 17 May 7 11:45 apache -> /usr/local/apache [root@loveyu local]# /application/apache/bin/apachectl -l检查安装
/application/apache/bin/目录下apachectl是一个shell脚本,用来启动、检查、Apache服务。
2.2 检验安装成果
apache 完成安装后并不直接提供服务,需要先启动Apache服务,具体操作如下
/application/apache/bin/apachectl start [root@loveyu local]# netstat -lnt #检查80端口 lsof -i tcp:80 #反查80端口 ps -ef |grep http查看进程 在浏览器中输入192.168.0.102出现IT works则表时Apache安装成功
注意:在此过程中要学会看/application/apache/logs/error_log Apache的错误日志。
2.3 部署一个简单的web站点
Apache的默认站点目录,是安装目录下的/application/apache/htdocs,这可以从Apache主配置文件/application/apache/conf/httpd.conf中查到
[root@loveyu local]# cat /application/apache/conf/httpd.conf|grep -i Documentroot # DocumentRoot: The directory out of which you will serve your DocumentRoot "/usr/local/apache/htdocs"执行默认的Apache站点目录 # This should be changed to whatever you set DocumentRoot to. # access content that does not live under the DocumentRoot. [root@loveyu local]#cat /application/apache/htdocs/index.html <html><body><h1>my name is fenghui</h1></body></html>
2.4Apache的bin和log子目录说明
1》bin 下的子目录 ab #Apache http服务器性能测试工具,简单易用,同类软件有jmeter,loadrunner,webbench等 apachectl #Apache的启动命令,apachectla是一个脚本 apxs #它是一个为Apache http服务器编译和安装扩展模块的工具,在进行DSO方式模块编译时会用到.如后文在编译PHP软件时就用到了此命令--with-apxs2=/application/apache/bin/apxs htcacheclean #这是清理磁盘缓冲区的命令,需要在编译时指定相关参数才可以,一般很少用 htpasswd #建立和更新基本认证文件,如,配置nagios等监控服务时会用到 httpd #httpd为apache的控制命令,也还可以用apachect执行httpd rotatelogs #apache 自带的日志轮询命令,也可以用,但在老男孩的工作场景习惯有cronolog等替代 2》logs子目录(这是Apache默认的日志路径包括错误日志即访问日志) access_log #这是Apache的默认访问日志文件,使用tail -f access.log 可以查看网站用户访问情况信息 error_log #这是Apache的错误日志文件,如果Apache出现启动故障等问题时,一定要看这个文件 httpd.pid #这是httpd的pid文件,http进程启动后,会把所有进程的ID号写到此文件 [root@loveyu apache]# ps -ef |grep httpd|grep -v grep root 28666 1 0 11:56 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 28667 28666 0 11:56 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 28668 28666 0 11:56 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 28669 28666 0 11:56 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 28670 28666 0 11:56 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 28671 28666 0 11:56 ? 00:00:00 /usr/local/apache/bin/httpd -k start daemon 28727 28666 0 12:02 ? 00:00:00 /usr/local/apache/bin/httpd -k start [root@loveyu apache]# cat logs/httpd.pid 28666 3》modules Apache的模块目录,比如PHP,memcaceh等模块编译后都在这里
2.5Apache的扩展文件
Apache的扩展配置文件是通过在httpd.conf主配置文件中嵌入include命令实现的,不过默认情况是注释状态 摘录http.conf主配置文件 中部分include行,如下所示; # Virtual hosts #Include conf/extra/httpd-vhosts.conf 如果取消此行前面的#号,表示开启虚拟主机的配置,即加载conf/extra/httpd-vhosts.conf # Local access to the Apache HTTP Server Manual #Include conf/extra/httpd-manual.conf # Distributed authoring and versioning (WebDAV) #Include conf/extra/httpd-dav.conf
[root@loveyu conf]# tree -L 2 /application/apache/conf/extra/ /application/apache/conf/extra/ ├── httpd-autoindex.conf ├── httpd-dav.conf ├── httpd-default.conf #这个文件配置的是Apache的相关服务参数,如超时时间,保持连接时间等 ├── httpd-info.conf ├── httpd-languages.conf #语言支持配置 ├── httpd-manual.conf ├── httpd-mpm.conf #服务器池管理,也就是优化Apache的一个配置文件,如选择Apache的模式及配置连接数等,常用的模式有worker模式和profork模式 ├── httpd-multilang-errordoc.conf ├── httpd-ssl.conf #提供Apache SSL支持配置文件 ├── httpd-userdir.conf └── httpd-vhosts.conf #这是虚拟主机的配置文件
2.6Apache虚拟主机的配置
2.6.1基于域名的虚拟主机实战配置
1》开启配置文件httpd.conf中包含httpd-vhosts.conf文件配置
使用vi命令编辑Apache主配置文件httpd.conf。具体步骤: [root@loveyu loveyu]# cd /application/apache/conf/ [root@loveyu conf]# cp httpd.conf httpd.conf.loveyu.20170511 [root@loveyu conf]# vi httpd.conf 404 # Virtual hosts 405 Include conf/extra/httpd-vhosts.conf #取消"#"号等于打开虚拟主机的配置
2》配置虚拟主机(如果默认的虚拟主机配置不删除,重启Apache会报语法错误)进入虚拟主机配置文件,编辑虚拟主机配置文件 vi httpd-vhosts.conf具体操作如下
[root@loveyu /]# cd /application/apache/conf/extra/ [root@loveyu extra]# cp httpd-vhosts.conf httpd-vhosts.conf.loveyu.20170511 [root@loveyu extra]# grep -v \# httpd-vhosts.conf NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin 1732889314@qq.com DocumentRoot "/var/blog" #(这个站点目录必须存在不然会报错) ServerName blog.feitianxihuanni.org ServerAliasfeitain.org ErrorLog "logs/blog-error_log" CustomLog "logs/blog-access_log" common </VirtualHost> [root@loveyu extra]# mkdir /var/blog -p #检查语法错误: [root@loveyu extra]# ../../bin/apachectl -t Syntax OK
3》建立虚拟主机的站点目录和首页index.html(测试用)
[root@loveyu extra]# mkdir /var/blog -p
[root@loveyu extra]# chown -R apache.apache /var/blog赋予权限,这个目录就是将来放程序用的。此处的授权相当重要,本命令不是最安全的配置,更优化的站点目录权限控制方法,见后文优化Apache部分,对于本节可以不执行
[root@loveyu extra]# ../../bin/apachectl graceful重启Apache服务
#提示:这里是graceful参数,graceful表示优雅的重启,这个参数可以在重启是使正在浏览的用户没有感觉,不会强行中断用户的访问参数,而是处理完毕请求后在重新启动
4》在我们的笔记本电脑上编辑hosts文件添加如下内容
hosts文件的通用路径为:C:\Windows\System32\drivers\etc,hosts文件是本地的DNS解析文件,其功能是把指定的域名解析成对应的IP,多个域名对应一个IP,默认情况下hosts文件中的配置解析优先于DNS服务器。
192.168.0.102www.feitian.com添加到hosts文件中,下面是虚拟主机的配置文件,加入了扩展模块,在后面的博客中我们会介绍。
[root@loveyu extra]# egrep -v "^#|^$" httpd-vhosts.conf NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin 2219701263@qq.com DocumentRoot "/var/blog" ServerName www.feitian.com ServerAlias feitian.com ErrorLog "logs/blog-error_log" # CustomLog "logs/blog-access_log" common CustomLog "|/usr/local/sbin/cronolog /var/logs/access_www_%w.log" combined ExpiresActive On ExpiresDefault "access plus 12 month" ExpiresByType text/css "now plus 12 month" ExpiresByType image/jpeg "access plus 12 months" ExpiresByType image/x-icon "access plus 2 months" ExpiresByType text/javascript "access plus 12 month" ExpiresByType image/gif "access plus 12 month" ExpiresByType image/jpg "access plus 12 mont" ExpiresByType image/png "access plus 12 mont" ExpiresByType application/x-shockwave-flash "access plus 12 month" ExpiresByType video/x-flv "access plus 12 month" <ifmodule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript text/css AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilter DEFLATE js css DeflateCompressionLevel 6 SetOutputFilter DEFLATE </ifmodule> </VirtualHost>
下面是站点目录中的index.html文件
[root@loveyu extra]# ll /var/blog/ total 4 -rw-r--r-- 1 root root 161 Aug 3 18:50 index.html [root@loveyu extra]# cat /var/blog/index.html <html> <head><title>feitian blog</title> </head> <body> <br><br><br><br> I am fenghui <br><br> https://user.qzone.qq.com/2219701263/infocenter </body> </html>
本文出自 “13122323” 博客,请务必保留此出处http://13132323.blog.51cto.com/13122323/1953402
Apache 编译安装2.2