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地址,通过不同的域名来标识不同的虚拟主机