Apache

Apache

Apache介绍

Apache源于NCSAhttpd服务器(National center for supercomputing Applications,简称NCSA),经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自”a patchy server“的读音,意思是充满补丁的服务器。因为它是自由软件,所以不断的有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并且可以作为代理服务器使用

Apache源码包下载

wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.29.tar.gz

Linux系统中源代码包安装过程

配置(configure)

  • 每个软件的源代码目录中都会存在一个名为configure的脚本文件,配置和安装过程被configure脚本中一系列命令行选项控制。每个软件包的配置方式是不同的,所以可以在其源代码目录中,通过./configure --help命令了解所有可用的编译选项及简短解释。配置好后,便可以开始编译模块。

编译(make)

  • 软件配置过程成功完成以后,会在当前目录下生成一个MAKEFILE文件。可以通过make命令按MAKEFILE文件的配置进行编译,编译成功以后则可执行的二进制的文件,便可以开始进行软件安装了。

安装(make install)

  • 根据配置和编译过程,在Linux命令行中通过执行make install命令,将软件安装到指定的位置

Apache安装

设计安装选项

  • 指定安装位置 usr/local/apache2/
  • 指定配置文件安装位置etc/httpd/

安装过程

  • 查询是否有低版本的Apache

    • rpm -qa|grep -i httpd
  • 如果存在低版本的Apache需要卸载

    • rpm -e httpd-manual --nodeps
    • rpm -e redhat-config-httpd --nodeps
    • rpm -e httpd --nodeps
  • 解压并删除apache源码包

    • tar zxvf httpd-2.4.29.tar.gz
    • rm -rf *.tar.gz
  • 配置Apache

    • ./configure \   # 执行当前目录下软件自带的配置命令
      --prefix=/usr/local/apache2 \   # 指定Apache软件安装的位置
      --sysconfdir=/etc/httpd \   # 指定Apache服务器的配置文件存放位置
      --with-z=/usr/local/zlib \  # 指定zlib库文件的位置
      --disable-userdir \ # 请求的映像到用户特定目录
      --enable-so \   # 以动态共享对象(DSO)编译
      --enable-rewrite=shared \   # 基于规则的URL操控
      --enable-expires=shared \   # 期满头控制
      --enable-deflate=shared \   # 缩小传输编码的支持
      --enable-static-support \   # 建立一个静态链接版本的支持
      
  • 编译和安装Apache

    make && make install

  • 启动、关闭和重启Apache服务

    • /usr/local/apache2/bin/apachectl start`
    • /usr/local/apache2/bin/apachectl stop
    • /usr/local/apache2/bin/apachectl restart
  • 查看Apache服务器是否开启成功

    • netstat -tnl
  • 设置Apache开机自启动

    • echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local
  • 查看Apache开机自启动是否设置成功

    • tail -5 /etc/rc.d/rc.local

目录结构说明

bin Apache执行文件的目录

  • apachectl
  • htpasswd

cgi-bin 预设给一些CGI网页程序存放的目录

error 默认错误应答文件存放的目录

htdocs 默认Web文档根目录

icons 预设的小图标存放的目录

logs 默认日志存放的目录

  • 动态查看访问日志
    • tail -f access_log

man 帮助手册存放的目录

modules 动态加载模块存放的目录

检查http.conf文件配置语法

# linux
/usr/local/apache2/bin/apachectl -t

# windows
C:\APP\myphp_www\PHPTutorial\Apache\bin\httpd.exe -t

httpd.conf文件配置

### 全局配置 Global Environment

# Apache服务器的根目录
ServerRoot  "usr/local/apache2"

# 监听IP、端口和协议
# Listen [ip]:protnumber[protocol]
Listen 80

# 加载模块
# LoadModule 模块名称 模块文件路径全名
# 服务器在输出内容到客户端以前,将内容压缩,节约带宽
LoadModule deflate_module modules/mod_deflate.so
# 允许通过配置文件控制http协议的过期时间、缓存控制等
LoadModule expires_module modules/mod_expires.so
# 通过一定的规则实时重写URL请求
LoadModule rewrite_module modules/mod_rewrite.so

# 指定提供服务的子进程的用户和组
# User 用户名
User daemon
# Group 组名称
Group daemon

# 网站管理员邮箱,网站出错时会显示在客户端
ServerAdmin you@example.com

# 文档根目录,站点存放的位置
DocumentRoot "/usr/local/apache2/htdocs"

# 服务器用于辨识自己主机名和端口号
ServerName www.example.com:80

# 错误日志存放位置
ErrorLog "logs/error_log"

# 访问日志存放位置
CustomLog "logs/access_log" common

<IfModule dir_module>
    # 目录索引
    DirectoryIndex index.html index.php index.py /php-bin/index.php
</IfModule>


## extra/httpd-default.conf全局配置选项

# 超时时间,单位秒
Timeout 300
# 是否使用长链接
KeepAlive On
# 一个长链接中最大请求次数
MaxKeepAliveRequests 100
# 一个长链接中两次请求之间的超时时间,单位秒
KeepAliveTimeout 5

## extra/httpd-mpm.conf(多路分支模块)全局配置选项

# 当服务器是Linux时生效
<IfModule mpm_prefork_module>
    # 服务器启动时启动的子进程数
    StartServers          5
    # 最小的空闲子进程数
    MinSpareServers       5
    # 最大的空闲子进程数
    MaxSpareServers      10
    # 同一时间服务器允许连接的客户端数量
    MaxClients          150
    # 每个子进程的生存期内最大的请求数
    MaxRequestsPerChild   0
</IfModule>

# 当服务器是Windows时生效
<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    3000   
</IfModule>

# 当Apache版本大于2.2是生效
<IfVersion >2.2>
</IfVersion>

# 当mpm_winnt_module模块不存在时生效
<IfModule !mpm_winnt_module>
</IfModule>

# Directory作用于目录
<Directory /var/web/dir1>
    # Files作用于文件
    <Files private.html>
    </Files>
</Directory>

# Location作用于网络空间
# 控制http://you.example.com/private
<Location /private>
</Location>

# 可以使用正则表达式
<DirectoryMatch /var/*.html>
</DirectoryMatch>

# 可以使用正则表达式
<FilesMatch \.(gif|jpe?g|png)$>
</FilesMatch>

# 可以使用正则表达式
<LocationMatch /private>
</LocationMatch>

# 给路径设置别名
Alias /abc/ "/var/www/html/"
<Directory "/var/www/html">
    # Indexes允许列出目录下所有文件
    # FollowSymlinks是否使用文件链接
    Options Indexes FollowSymlinks
    # 不适用.htaccess文件中的配置
    AllowOverride None
    # 先使用允许规则再使用拒绝规则
    Order allow,deny
    # 允许任何IP或主机访问
    Allow from all
    # 拒绝192.168.*的IP访问
    deny from 192.168.*
</Directroy>

## extra/httpd-vhosts.conf全局配置选项
<VirtualHost *:80>
    # 管理员邮箱
    ServerAdmin admin@baidu.com
    # 网站根目录
    DocumentRoot "C:\APP\myphp_www\PHPTutorial\WWW\www.baidu.com"
    # 服务名(域名)
    ServerName www.baidu.com
    # 错误日志存放位置
    ErrorLog "logs/www.baidu.com_error_log"
    # 访问日志存放位置
    CustomLog "logs/www.baidu.com_log" common
    <Directory "C:\APP\myphp_www\PHPTutorial\WWW\www.baidu.com">
        # 允许文件索引、允许使用文件链接
        Options Indexes FollowSymLinks
        # 不允许使用.htaccess文件
        AllowOverride None
        # 先使用允许规则再使用拒绝规则
        Order allow,deny
        # 允许所有访问者
        Allow from all
    </Directory>
</virtualHost>

虚拟主机

基于IP地址的虚拟主机

需要在同一台主机上绑定多个IP,在每个IP上建立一个虚拟主机,由于IP地址缺乏,此种方法不常使用

基于域名的虚拟主机

所有的虚拟主机都使用同一个IP地址,通过不同的域名来标识不同的虚拟主机

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容