hanghang123 发表于 2017-4-10 14:28:03

Apache 源码安装和配置


实施人系统软件
孙晓航Centos6.5httpd-2.4.25.tar.gzapr-1.5.2.tar.gzapr-util-1.5.4.tar.gzpcre-8.40.tar.gz
环境要求系统是最小化安装,缺少的编译文件用yum装。关闭防火墙,linux安全机制
Yum安装插件yum install -y gcc gcc-c++ cmake ncurses-devel bison opensslopenssl-devel libxml2 libxml2-devel libmcrypt libmcrypt-devel zlib zlib-devellibpng libpng-devel libtool jpeg6 libjpeg libjpeg-devel freetype freetype-develautoconf automake gd libXpm-devel curl curl-devel
编译安装apr、apr-util、pcre。# tar zxf apr-1.5.2.tar.gz
# cd apr-1.5.2
[root@localhostapr-1.5.2]# ./configure --prefix=/usr/local/apr      //--prefix制定安装位置
[root@localhostapr-1.5.2]# make && make install    //&& 这里指不间断执行下一个命令
# tar zxf apr-util-1.5.4.tar.gz
# cd apr-util-1.5.4
# ./configure// --prefix=/usr/local/apr-util   //指定安装目录 --with-apr=/usr/local/apr/   //制定apr安装目录# make && makeinstall# ./configure--prefix=/usr/local/pcre && make && make install安装apache# tar zxf httpd-2.4.25.tar.gz # cd httpd-2.4.25# ./configure--prefix=/usr/local/apache-2.4.20 --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/--with-pcre=/usr/local/pcre/ --enable-so --enable-modules=most--enable-mods-shared=most --enable-rewrite --enable-ssl--enable-mpms-shared=all# make && makeinstall
# ln -s/usr/local/apache-2.4.20/ /usr/local/apache# echo'/usr/local/apache/bin/apachectl start' >> /etc/rc.local# cp/usr/local/apache-2.4.20/bin/apachectl /etc/init.d/httpd# service httpd start**** Hidden Message ********* Hidden Message *****打开浏览器访问主机的IP如下file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png配置文件解析一、Apache 主要配置文件注释
/application/apache/conf/httpd.conf    # apache主要的配置文件
由于前文的编译安装我制定的安装目录为/application,所以我的配置文件在/application/apache/conf/httpd.conf,如果是rpm和yum安装的话,你的目录默认在/etc/httpd.conf

# egrep -v "^.*#|^$"httpd.conf |nl         #去掉注释和空格行
1 ServerRoot "/application/apache2.2.22"   # apache根目录,应只能root访问
   2Listen 80                           # apache服务默认的监听端口80 如果需要同时监听多个端口可以在后面加行:listen 81
   3<IfModule !mpm_netware_module>
   4<IfModule !mpm_winnt_module>
   5User daemon                         # apache的用户,默认为daemon
   6Group daemon                        # apache的用户,默认为daemon
   7</IfModule>
   8</IfModule>
   9ServerAdmin you@example.com          # 系统管理员邮箱,如果出现问题,会在首页显示
10DocumentRoot "/application/apache2.2.22/htdocs" # apache的默认web站点目录路径,结尾不要添加斜线
11<Directory />                  # 11 - 16 行为对根目录的限制
12      Options FollowSymLinks      #followsymlinks表示允许使用符号链接,默认为禁用
13      AllowOverride None         # 表示禁止用户对目录配置文件(.htaccess进行修改)重载,普通站点不建议开启
14      Order deny,allow         # 以deny方式优先处理,没有明确说明拒绝的话都通过,即允许未被明确拒绝的访问(从后往前)。
15      Deny from all            # 明确指出拒绝所有访问
16</Directory>
17<Directory "/application/apache2.2.22/htdocs"> # 17 - 22 行为默认apache默认站点目录的限制配置(如果配置的站点不存在,出现403错误)
18      Options Indexes FollowSymLinks      # FollowSymLinks 禁止使用符号链接Indexes 表示允许用户浏览目录
                                                 Options -Indexes FollowSymLinks 或者 OptionsFollowSymLinks表示取消目录浏览的功能
19      AllowOverride None                  # 表示禁止用户对目录配置文件(.htaccess进行修改)重载,不建议开启
20      Order allow,deny                      # 以allow优先处理,没有明确说明允许的话都拒绝,拒绝未被明确允许
21      Allow from all                        # 允许所有的访问
22</Directory>
23<IfModule dir_module>
24      DirectoryIndex index.html             # 配置默认的apache首页文件,如果虚拟机中没有配置,应用这里的配置,多个用空格隔开
25</IfModule>
26<FilesMatch "^\.ht">                      # 防止.htaccess和.htpasswd等重要隐藏文件被web用户查看
27      Order allow,deny
28      Deny from all
29      Satisfy All
30</FilesMatch>
31ErrorLog "logs/error_log"               # 错误的日志路径logs为apache服务安装目录的相对路径
32LogLevel warn
33<IfModule log_config_module>
34      LogFormat "%h %l %u %t \"%r\"%>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined# 访问日志格式
35      LogFormat "%h %l %u %t \"%r\"%>s %b" common                                    # 访问普通日志格式
36      <IfModule logio_module>
37      LogFormat "%h %l %u %t\"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\" %I %O" combinedio
38      </IfModule>
39      CustomLog "logs/access_log" common    #默认站点访问日志配置
40</IfModule>
41<IfModule alias_module>                   # 41 - 51 CGI的配置,没有特殊需求可以注释和删除,目前基本已经淘汰
42      ScriptAlias /cgi-bin/ "/application/apache2.2.22/cgi-bin/"
43</IfModule>
44<IfModule cgid_module>
45</IfModule>
46<Directory "/application/apache2.2.22/cgi-bin">
47      AllowOverride None
48      Options None
49      Order allow,deny
50      Allow from all
51</Directory>
52DefaultType text/plain   # DefaultType定义不能确定mime类型时服务器提供的默认MIME类型,如果服务主要包含text或html文档,“text/plain”是一个最好的选择
53<IfModule mime_module>               
54      TypesConfig conf/mime.types
55      AddType application/x-compress .Z   # addencoding允许你在信息传送中使用maxaic/X 2.1+解压缩信息(不能支持所有的浏览器)
56      AddType application/x-gzip .gz .tgz
57</IfModule>
58<IfModule ssl_module>
59SSLRandomSeed startup builtin
60SSLRandomSeed connect builtin
61</IfModule>

二、Apache扩展的配置文件
/application/apache/conf/extra         # apache扩展的配置文件
# ll
total56
-rw-r--r--1 root root2859 Jan 10 01:49 httpd-autoindex.conf
-rw-r--r--1 root root1753 Jan 10 01:49 httpd-dav.conf
-rw-r--r--1 root root2344 Jan 10 01:49 httpd-default.conf
-rw-r--r--1 root root1103 Jan 10 01:49 httpd-info.conf
-rw-r--r--1 root root5078 Jan 10 01:49 httpd-languages.conf
-rw-r--r--1 root root   932 Jan 10 01:49 httpd-manual.conf
-rw-r--r--1 root root3789 Jan 10 01:49 httpd-mpm.conf
-rw-r--r--1 root root2207 Jan 10 01:49 httpd-multilang-errordoc.conf
-rw-r--r--1 root root 11185 Jan 10 01:49 httpd-ssl.conf
-rw-r--r--1 root root   817 Jan 10 01:49 httpd-userdir.conf
-rw-r--r--1 root root1507 Jan 10 01:49 httpd-vhosts.conf # 虚拟主机配置文件

三、httpd-vhosts.conf虚拟主机配置文件注释
# egrep -v "^.*#|^$"httpd-vhosts.conf |nl
   1NameVirtualHost *:80                               # 基于名称的虚拟主机配置( *:80表示监听本机所有ip)
   2<VirtualHost *:80>                              # 定义一个虚拟主机
   3      ServerAdmin webmaster@dummy-host.example.com   # 配置管理员邮箱
   4      DocumentRoot"/application/apache2.2.22/docs/dummy-host.example.com"# 程序的站点目录
   5      ServerName dummy-host.example.com            # 域名服务,需要apache mode_alias模块支持
   6      ServerAlias www.dummy-host.example.com         # 虚拟主机别名
   7      ErrorLog"logs/dummy-host.example.com-error_log"# 错误的日志路径
   8      CustomLog"logs/dummy-host.example.com-access_log" common#访问日志配置(生产环境我们用combined格式代替common格式)
   9</VirtualHost>
10<VirtualHost *:80>
11      ServerAdmin webmaster@dummy-host2.example.com
12      DocumentRoot"/application/apache2.2.22/docs/dummy-host2.example.com"
13      ServerName dummy-host2.example.com
14      ErrorLog"logs/dummy-host2.example.com-error_log"
15      CustomLog"logs/dummy-host2.example.com-access_log" common
16</VirtualHost>

四、Apache服务存放站点的目录
/application/apache/htdocs             # 默认存放网页的路径,输入IP 到此目录 能够见到it's wroks! 就是此目录
# lessindex.html
<html><body><h1>Itworks!</h1></body></html>


五、Apache服务目录结构说明
# ls /application/apache/
bin buildcgi-binconferrorhtdocsicons includeliblogsmanmanualmodules
bin启动文件目录说明
|--bin                  #apache服务的命令目录
||-- ab               # http服务性能测试工具
||-- apachectl          # apache启动命令
||-- apr-1-config      
||-- apu-1-config
||-- apxs               # http服务编译和安装扩展模块使用工具,在DSO方式模块编译时用到
||-- checkgid
||-- dbmmanage
||-- envvars
||-- envvars-std
||-- htcacheclean       # 清理磁盘缓冲区的控制命令
||-- htdbm
||-- htdigest
||-- htpasswd         # 建立和更新基本认证文件
||-- httpd            # httpd为apache的控制命令程序
||-- httxt2dbm
||-- logresolve
|   -- rotatelogs         # apache自带的日子轮询命令(cronolog生产环境使用比较多)。

conf配置文件目录
# ls /application/apache/conf/
extra httpd.confmagicmime.typesoriginal
/application/apache/conf/      # apache配置所有的配置文件目录
|--extra                        # 额外的apache配置文件目录如:httpd-vhost.conf
||-- httpd-autoindex.conf      
||-- httpd-dav.conf
||-- httpd-default.conf
||-- httpd-info.conf
||-- httpd-languages.conf
||-- httpd-manual.conf
||-- httpd-mpm.conf
||-- httpd-multilang-errordoc.conf
||-- httpd-ssl.conf
||-- httpd-userdir.conf
||-- httpd-vhosts.conf
|--httpd.conf                  # apache主配置文件
|--magic
|--mime.types
|--original
||-- extra
||   |-- httpd-autoindex.conf
||   |-- httpd-dav.conf                # dav支持配置
||   |-- httpd-default.conf            # 这个文件里配置的是apache的相关服务参数:超时时间、保持链接
||   |-- httpd-info.conf
||   |-- httpd-languages.conf         # 语言支持
||   |-- httpd-manual.conf
||   |-- httpd-mpm.conf # 服务器池管理,也是优化apache的一个配置文件(apache的模式以及配置链接数,常用模式为worker模式和profork模式,默认porfork)
||   |-- httpd-multilang-errordoc.conf
||   |-- httpd-ssl.conf                # 提供apachessl支持配置文件
||   |-- httpd-userdir.conf
||   |-- httpd-vhosts.conf             # 虚拟机的配置文件
||-- httpd.conf

站点存放目录
# ls -l htdocs/    # 默认的首页文件都放在此目录当中。
total4
-rw-r--r--1 root root 44 Nov 212004 index.html

日志存放目录
# tree logs
logs                # apache服务默认的日志路径,包括错误日志和访问日志
|--access_log       # apache服务访问日志 tail -f命令可以查看网页用户访问的信息
|--cgisock.16406   
|--error_log      # apache服务的错误日志。如:apache服务启动故障
|--httpd.pid      # httpd的pid文件,http进程启动后,会把所有进程的id号写到此文件

模块目录
# ls -l manual/   # apache的模块目录如php mencache
total2984
-rw-r--r--1 root root   543 May62008 bind.html
-rw-r--r--1 root root 11422 Jan32012 bind.html.de



robinhqf 发表于 2017-4-10 16:54:50

学习了,很详细

sailoroyy 发表于 2017-9-30 15:13:47

学习一下看看

sailoroyy 发表于 2017-10-9 10:35:56

学习一下谢谢

ds0234 发表于 2017-10-18 12:44:40

不错,现在就试用下
页: [1]
查看完整版本: Apache 源码安装和配置