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. github上值得关注的前端项目

    https://segmentfault.com/a/1190000002804472

  2. Play!framework 项目部署到Tomcat

    Play Framework有自带的服务器,也可部署到其他服务器上.这里讲解下如何将Play的项目部署到Tomcat. 1.准备war包 首先进入play目录: 比如我的: cd C:\play-1. ...

  3. jQuery EasyUI, datagrid, treegrid formatter 参数比较 row index

    如题: datagrid中,见官方文档: formatter function The cell formatter function, take three parameter:value: the ...

  4. SQL中使用WITH AS提高性能(二)

    继上一节 对比两条查询,第一是用了with as 第二条语句没用with as 查看执行计划的效果 WITH vep AS ( SELECT package.OrderCode , RANK() OV ...

  5. WINFORM跟随WPF窗体移动

    <Window x:Name="mainWindow1" x:Class="WpfApplication9.MainWindow"         xml ...

  6. [Canvas] Introduction to drawing with p5js

    In this lesson we look at using color and the basic drawing methods of p5js, and how they can be com ...

  7. Redis学习手册(内存优化)

    自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化.其中,Hash.List和由Integer组成的Sets都可以通过该方式来优化存储结构,以便占用更少的空间,在有些 ...

  8. android112 c代码打印日志,c反编译调用java

    activity: package com.itheima.ccalljava; import android.os.Bundle; import android.app.Activity; impo ...

  9. linux find命令详解--转

    转自:http://blog.csdn.net/jakee304/article/details/1792830 (一)Get Start 最简单的find用法莫过于如此: $ find . 查找当前 ...

  10. KafkaSpout 浅析

    最近在使用storm做一个实时计算的项目,Spout需要从 KAFKA 集群中读取数据,为了提高开发效率,直接使用了Storm提供的KAFKA插件.今天抽空看了一下KafkaSpout的源码,记录下心 ...