1、安装apache

1、安装

wget http://mirrors.cnnic.cn/apache//httpd/httpd-2.2.31.tar.gz

2、安装zlib

yum install zlib zlib-devel-y

3、解压、编译

tar xf httpd-2.2.31.tar.gz

cd httpd-2.2.31

./configure --prefix=/application/apache2.2.27 \

--enable-deflate \

--enable-expires \

--enable-headers \

--enable-modules=most \

--enable-so \

--with-mpm=worker \

--enable-rewrite

make &&make insatll

ln -s /application/apache2.2.27/ /application/apache

Ø  编译详解

Ø  --prefix=/application/apache2.2.27 \

Ø  安装目录

Ø  --enable-deflate \

Ø  压缩

Ø  --enable-expires \

Ø  缓存

Ø  --enable-headers \

Ø  激活headers

Ø  --enable-modules=most \

Ø  激活大多模块

Ø  --enable-so \

Ø  --with-mpm=worker \

Ø  work模式一个主进程 多个线程提供服务

Ø  --enable-rewrite

Ø  支持伪静态功能

2、apache目录结构

这里是编译安装后的目录结构

[root@web02 apache]# tree -L 1

.

|-- bin         命令

|-- build

|-- cgi-bin

|-- conf        配置文件

|-- error

|-- htdocs      网站的根目录

|-- icons

|-- include

|-- lib

|-- logs         日志文件,包括访问日志,错误日志

|-- man

|-- manual

`-- modules      模块目录

bin目录

conf 目录

log

3、主配置文件

[root@web02 conf]# cat httpd.conf

ServerRoot "/application/apache2.2.27"    服务的根目录

Listen 80                        服务监听的端口,监听的IP默认是主机素有的IP

<IfModule !mpm_netware_module>       模块的开头

<IfModule !mpm_winnt_module>          模块的开头

User daemon                           所属用户(编译安装的时候默认是daemon)

Group daemon

</IfModule>

</IfModule>

ServerAdmin you@example.com            管理员的邮箱

DocumentRoot "/application/apache2.2.27/htdocs"默认的网站文件目录

<Directory />                               权限控制,(对根目录)

Options FollowSymLinks                   可以带符号链接

AllowOverride None                       禁止相关功能:重载等

Order deny,allow

Deny from all                             不让任何让访问根目录

</Directory>

<Directory "/application/apache2.2.27/htdocs">     这是增加站点需要增加的配置

Options Indexes FollowSymLinks              展示目录结构

AllowOverride None

控制开发能不能使用扩展模块defautl中的AccessFileName .htaccess。

NONE是不能 ALL是可以

Order allow,deny

Allow from all

</Directory>

<IfModule dir_module>                        指定访问的首页文件

DirectoryIndex index.html

</IfModule>

<FilesMatch "^\.ht">                           文件配置

Order allow,deny

Deny from all

Satisfy All

</FilesMatch>

ErrorLog "logs/error_log"                        错误日志目录

LogLevel warn                                  错位日志级别

<IfModule log_config_module>                    访问日志的格式类型

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

<IfModule logio_module>

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

</IfModule>

CustomLog "logs/access_log" common

</IfModule>

<IfModule alias_module>                      支持cgi动态语言没用

ScriptAlias /cgi-bin/ "/application/apache2.2.27/cgi-bin/"

</IfModule>

<IfModule cgid_module>

</IfModule>

<Directory "/application/apache2.2.27/cgi-bin">

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

DefaultType text/plain                    缺省的类型

<IfModule mime_module>

TypesConfig conf/mime.types

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

</IfModule>

<IfModule ssl_module>                    ssl相关的内容

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>

4、第一个优化

当主配置文件中有

Options Indexes FollowSymLinks

我们移除apache文件目录的文件

[root@web02 apache]# cd htdocs/

[root@web02 htdocs]# mv index.html /tmp

[root@web02 htdocs]# ll

total 0

这时候apache就会显示目录结构因为找不到主页文件这是非常危险的。

修改配置文件

Options -Indexes FollowSymLinks

平滑重启apache

5、扩展的配置文件

[root@web02 extra]# ll

total 60

-rw-r--r--. 1 root root  2859 May 19 16:25 httpd-autoindex.conf

-rw-r--r--. 1 root root  1753 May 19 16:25 httpd-dav.conf

-rw-r--r--. 1 root root  2344 May 19 16:25 httpd-default.conf

-rw-r--r--. 1 root root  1103 May 19 16:25 httpd-info.conf

-rw-r--r--. 1 root root  5078 May 19 16:25 httpd-languages.conf

-rw-r--r--. 1 root root   949 May 19 16:25 httpd-manual.conf

-rw-r--r--. 1 root root  3789 May 19 16:25 httpd-mpm.conf

-rw-r--r--. 1 root root  2207 May 19 16:25 httpd-multilang-errordoc.conf

-rw-r--r--. 1 root root 12418 May 19 16:25 httpd-ssl.conf

-rw-r--r--. 1 root root   817 May 19 16:25 httpd-userdir.conf

-rw-r--r--. 1 root root  1507 May 19 16:25 httpd-vhosts.conf

重点的httpd-vhosts.conf httpd-mpm.conf

了解httpd-default.conf

其他的当没看见

1、httpd-vhosts.conf:

如果要配置多个虚拟域名就需要多个 HOST (两个<VirtualHost *:80>之间的)

NameVirtualHost *:80  基于域名的虚拟主机 *表示所有 后面是端口

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

DocumentRoot "/application/apache2.2.27/docs/dummy-host.example.com"

ServerName dummy-host.example.com

ServerAlias www.dummy-host.example.com

ErrorLog "logs/dummy-host.example.com-error_log"

CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

Ø  ServerAdmin       管理员邮箱

Ø  DocumentRoot     站点目录

Ø  ServerName       站点网址

Ø  ServerAlias        站点网址别名

Ø  ErrorLog          错误日志路径

Ø  CustomLog        访问日志路径和格式

2、httpd-mpm.conf

<IfModule !mpm_netware_module>

PidFile "logs/httpd.pid"pid文件

</IfModule>

<IfModule !mpm_winnt_module>

<IfModule !mpm_netware_module>

LockFile "logs/accept.lock"                   锁文件

</IfModule>

</IfModule>

<IfModule mpm_prefork_module>              prefork模式(默认的模式)

StartServers          5

MinSpareServers       5

MaxSpareServers      10

MaxClients          150                  并发

MaxRequestsPerChild   0

</IfModule>

<IfModule mpm_worker_module>        work模式

StartServers          2

MaxClients          150

MinSpareThreads      25

MaxSpareThreads      75

ThreadsPerChild      25

MaxRequestsPerChild   0

</IfModule>

<IfModule mpm_beos_module>

StartThreads            10

MaxClients              50

MaxRequestsPerThread 10000

</IfModule>

<IfModule mpm_netware_module>

ThreadStackSize      65536

StartThreads           250

MinSpareThreads         25

MaxSpareThreads        250

MaxThreads            1000

MaxRequestsPerChild      0

MaxMemFree             100

</IfModule>

<IfModule mpm_mpmt_os2_module>

StartServers           2

MinSpareThreads        5

MaxSpareThreads       10

MaxRequestsPerChild    0

</IfModule>

<IfModule mpm_winnt_module>

ThreadsPerChild      150

MaxRequestsPerChild    0

</IfModule>

3、httpd-default.conf

cat extra/httpd-default.conf

Timeout 300               连接超时 300秒

KeepAlive On              连接保持

MaxKeepAliveRequests 100   最多能接受多少个永久的连接

KeepAliveTimeout 5          在同一个连接上等待下一个请求的时间

UseCanonicalName Off

AccessFileName .htaccess      一般开发会把伪静态的语法写在这里面

ServerTokens Full

ServerSignature On           隐藏版本

HostnameLookups Off

6、虚拟主机

在一个机器上部署多个不同域名、不同站点目录、不同端口、不同IP的站点,就需要虚拟主机。

跟NGINX一样apache也支持基于域名基于IP 基于端口的虚拟主机

6.1 基于域名的虚拟主机

a 站点目录规划

域名

站点目录

www.etiantian.org

/var/html/www

blog.etiantian.org

/var/html/blog

bbs.etiantian.org

/var/html/bbs

b 创建站点目录

mkdir /var/html/{www,blog,bbs} -p

c 创建测试文件

for name in www blog bbs;do echo "http://$name.etiantian.org">/var/html/$name/index.html;done

[root@web02 ~]# cat /var/html/{www,blog,bbs}/index.html

http://www.etiantian.org

http://blog.etiantian.org

http://bbs.etiantian.org

d 修改配置文件

cd /application/apache

vim conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

ServerAdmin 731431337@qq.com

DocumentRoot "/var/html/www"

ServerName www.etiantian.org

ServerAlias etiantian.org

ErrorLog "logs/www_error_log"

CustomLog "logs/www_access_log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin 731431337@qq.com

DocumentRoot "/var/html/blog"

ServerName blog.etiantian.org

ServerAlias etiantian.org

ErrorLog "logs/blog_error_log"

CustomLog "logs/blog_access_log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin 731431337@qq.com

DocumentRoot "/var/html/bbs"

ServerName bbs.etiantian.org

ServerAlias etiantian.org

ErrorLog "logs/bbs_error_log"

CustomLog "logs/bbs_access_log" common

</VirtualHost>

vhost这个配置文件默认不在主配置文件中是注释状态

需要在主配置文件中打开(去除前面的#号)

在主配置文件的下面加上

<Directory "/var/html">

Options  FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

这一段可以到去掉注释的主配置文件的17到22行复制修改

如果不加的话会报错403。

e 检查语法、优雅重启

[root@web02 conf]# ../bin/apachectl -t

httpd: Could not reliably determine the server's fully qualified domain name, using 172.16.1.7 for ServerName

Syntax OK

[root@web02 conf]# ../bin/apachectl graceful

httpd: Could not reliably determine the server's fully qualified domain name, using 172.16.1.7 for ServerName

f 测试

[root@web02 conf]# curl www.etiantian.org

http://www.etiantian.org

[root@web02 conf]# curl bbs.etiantian.org

http://www.etiantian.org

[root@web02 conf]# curl blog.etiantian.org

http://www.etiantian.org

6.2 基于端口

在主配置文件

[root@web02 conf]# cat httpd.conf

Listen 80

Listen 8000

Listen 9000

在vhost配置文件

NameVirtualHost *:80

NameVirtualHost *:8000

NameVirtualHost *:9000

<VirtualHost *:80>

ServerAdmin 731431337@qq.com

DocumentRoot "/var/html/www"

ServerName www.etiantian.org

ServerAlias etiantian.org

ErrorLog "logs/www_error_log"

CustomLog "logs/www_access_log" common

</VirtualHost>

<VirtualHost *:8000>

ServerAdmin 731431337@qq.com

DocumentRoot "/var/html/blog"

ServerName www.etiantian.org

ServerAlias etiantian.org

ErrorLog "logs/blog_error_log"

CustomLog "logs/blog_access_log" common

</VirtualHost>

<VirtualHost *:9000>

ServerAdmin 731431337@qq.com

DocumentRoot "/var/html/bbs"

ServerName www.etiantian.org

ServerAlias etiantian.org

ErrorLog "logs/bbs_error_log"

CustomLog "logs/bbs_access_log" common

</VirtualHost>

7、调整apache 启动FQDN的问题

我们在每次重启apache的时候都会提示

[root@web02 conf]# ../bin/apachectl graceful

httpd: Could not reliably determine the server's fully qualified domain name, using 172.16.1.7 for ServerName

在主配置文件中加入

ServerName 127.0.0.1:80

就可以。其实这块不优化也不会对apache的运行产生任何影响。

8、apache日志

8.1 日志格式

要指定格式只需要在日志路径后面接就可以

8.2 日志轮询

不同于nginx 需要用脚本去实现日志轮询,apache可以使用工具。

cronolog工具

安装

按年、月生成不同目录
CustomLog "|/usr/local/sbin/cronolog
/logs/%Y/%m/access_www_%Y%m%d.log"  combined  (
按天记录日志,缺点不会自动覆盖)

___________________________________________________________
apache自带日志轮询工具rotatelogs(不推荐使用rotatelogs进行日志轮询)

■ rotatelogs 日志轮询
___________________________________________________________
ErrorLog "|/usr/local/apache1.3.33/bin/rotatelogs /logs/%Y%m%d.error.log
604800"
CustomLog "|/application/apache/bin/rotatelogs
/logs/access_www_%Y%m%d..log 86400 480" combined
CustomLog "|/application/apache/bin/rotatelogs
/logs/access_www_%Y%m%d..log 86400" combined
提示:也可以按照达到多大文件而轮询日志,此处就不提了。

___________________________________________________________
■ rotatelogs 日志轮询说明
___________________________________________________________
语法
rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]

选项
-l 
使用本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环境中
使用-l会导致不可预料的结果。 
logfile 
它加上基准名就是日志文件名。如果logfile中包含"%",则它会被视为用于strftime()的格式字符串;
否则它会被自动加上以秒为单位的".nnnnnnnnnn"后缀。这两种格式都表示新的日志开始使用的时间。
rotationtime 
日志文件滚动的以秒为单位的间隔时间。 
offset 
相对于UTC的时差的分钟数。如果省略,则假定为"0"并使用UTC时间。比如,要指定UTC时差为
"-5小时"的地区的当地时间,则此参数应为"-300"。 
filesizeM 
指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。

___________________________________________________________
■ 日志轮询生产环境实际配置
___________________________________________________________
按天轮询的常见生产环境实际配置: 
<VirtualHost *:80>
        ServerAdmin 31333741@qq.com
        ServerName blog.etiantian.org
        DocumentRoot "/var/blog"
        ServerAlias etiantian.org
        ErrorLog
"logs/www.etiantian.org-error_log"
        #CustomLog
"logs/www.etiantian.org-access_www_log" common
        CustomLog
"|/usr/local/sbin/cronolog /logs/access_www_%Y%m%d.log" combined
</VirtualHost>
提示:/logs/access_www_%Y%m%d.log
这里要写绝对路径,不能是logs/access_www_%Y%m%d.log

不同轮询命令同时记录三份日志,并做多种轮询的写法,这个配置生产环境,并不常用,
这里写出来是告诉大家语法功能上可以这样进行配置。

<VirtualHost *:80>
        ServerAdmin 31333741@qq.com
        ServerName blog.etiantian.org
        DocumentRoot "/var/blog"
        ServerAlias etiantian.org
        ErrorLog
"logs/www.etiantian.org-error_log"
        #CustomLog
"logs/www.etiantian.org-access_www_log" common
        CustomLog
"|/usr/local/sbin/cronolog /logs/access_www_%Y%m%d.log" combined
        CustomLog
"|/usr/local/sbin/cronolog /logs/access_www_%Y%m%d%H.log" combined
        CustomLog "|/application/apache/bin/rotatelogs
/logs/access_www_%Y%m%d%H%M.log 86400" combined
</VirtualHost>

9、不记录指定格式的元素日志

我们希望在日志里不记录图片等格式的日志  为了PV计算的准确性

10、隐藏apache版本信息

在编译安装apache之前修改

这些是apache软件的版本号等

unix/os.h有apache的运行平台

编译安装之后可以修改

这些是去隐藏apache的版本信息

去主配置文件开启这些参数

apache基本安装配置的更多相关文章

  1. 分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例【转】

    Kylin 麒麟官网:http://kylin.apache.org/cn/download/ 关键字:olap.Kylin Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的 ...

  2. Linux下apache+phppgadmin安装配置

    1.安装pg 安装PostgreSQL数据库 修改pg_hba.conf配置文件,使得数据库可以通过外部访问. 具体可以配置为: # TYPE DATABASE USER ADDRESS METHOD ...

  3. windows下PHP与Apache的安装配置

    1.下载安装apache:官网 http://httpd.apache.org/download.cgi#apache24 下载httpd-2.2.25-win32-x86-no_ssl.msi并安装 ...

  4. linux Apache CGI 安装配置

    Apache 中的提交了一种利用扩展应用程序执行动态网页的机制. 称为Common Gateway Interface (通用网关接口)简称CGI. 本文假定已安装好linux(本文的linux版本为 ...

  5. hadoop集群监控工具Apache Ambari安装配置教程

    ambari 1.2.4 下载地址:http://www.apache.org/dist/incubator/ambari/ambari-1.2.4/ambari-1.2.4-incubating.t ...

  6. CentOS7 Apache的安装配置

    前些天安装了Nginx,为了好玩我就又安装Apache,Apache的安装还算顺利.在此做一下学习记录和经验分享. 一.安装httpd 1.先查看一下系统有没有已经安装了httpd的,如果啥都没查到, ...

  7. Apache(ApacheHaus)安装配置教程

    1,Apache下载 选择一个版本,点击Download 点击File For Microsoft Windows 由于Apache HTTP Server官方不提供二进制(可执行)的发行版,所以我们 ...

  8. Mac下Apache Tomcat安装配置

    Java Web如果稍微知道一点,一般对Tomcat都不会陌生,Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomca ...

  9. CentOS6.5 yum安装 apache+svn安装配置

    首页是关于svn的备份和还原 比较快捷的方式: 备份:svnadmin hotcopy /opt/svn/svntest/ /var/tmp/svntest_20120604 --clean-logs ...

随机推荐

  1. hdoj 2524 矩形A + B

    矩形A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  2. 清理Win8.1更新冗余的批处理代码

    以下为批处理文件内容,复制到文本文件,另存为.bat文件,以管理员方式运行即可. @echo off title 清理Win8.1更新冗余 color 2e echo 提示:本程序可能需要以管理员方式 ...

  3. 自己写的一个Js小插件

    这是效果图.上面一个过滤标签.下面弹出框,选择日,周,月.我的用途主要是报表查询的时候根据这3种类型来查询数据用的. 这里分享下代码. Js代码 (function ($) { $.extend($. ...

  4. C++编译器函数模版机制剖析 - 函数模版的本质

    思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> u ...

  5. Safari浏览器Session问题

    Safari浏览器中经常出现session无法写入或同一个会话中Session ID常变动的事情.尤其以iOS7版本居多. 问题本身并不难猜,应该就是cookie无法写入引起的.奇怪的是,部分同版本的 ...

  6. android103 内容观察者

    #内容观察者 * 通过内容提供者可以访问到数据库,当数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知,类似于广播接受者,但是他不是广播. cr ...

  7. ARM GCC CodeSourcery 下载地址

    Sourcery G++ Lite 2011.03-42: https://sourcery.mentor.com/GNUToolchain/package8737/public/arm-none-e ...

  8. Io_Language

    Object ancestor := method ( prototype := self proto if (prototype != Obejct, writeln ("Slots of ...

  9. java注解研究

    注解作用 常见的作用有以下几种: 生成文档.这是最常见的,也是java 最早提供的注解.常用的有@see @param @return @author等. 跟踪代码依赖性,实现替代配置文件功能.比较常 ...

  10. Android 自定义View修炼-实现自定义圆形、圆角和椭圆ImageView(使用Xfermode图形渲染方法)

    一:简介: 在上一篇<Android实现圆形.圆角和椭圆自定义图片View(使用BitmapShader图形渲染方法)>博文中,采用BitmapShader方法实现自定义的圆形.圆角等自定 ...