安装apache前需要安装gcc,gcc-c++,这里apache2.2.26需要安装Apr与Apr-util.这里使用源码安装
apache安装路径:/usr/local/apache2
apache是模块化软件
安装前可以根据自己的需求制定参数安装
这里我们配置几个常用的参数
1、制定安装位置
2、制定配置文件安装
3、制定zlib库文件的位置
**zlib库是通用的压缩库,提供inin-memory压缩和解压函数,并能检测解压出来的完整性(integrity),zlib也支持读写gzip(.gz)格式的文件
4、禁用请求的映像到用户特定目录?
5、以动态共享对象(DSO)编辑
6、基于规则的URL操作
apache安装过程
下载apache
#wget http://www.apache.org/dist/httpd/httpd-2.2.26.tar.gz
解压apache
#tar gz httpd-2.2.26.tar.gz
#cd http-2.2.26/srclib/apr
#./configure --prefix=/usr/local/apr && make && make install
#cd ../apr-util
#./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-util && make && make install
#cd httpd-2.2.26#./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --prefix=/usr/local/apache2 \ //指定apache安装路径
>--sysconfdir=/etc/httpd \ //指定配置文件存放路径>--with-z=/usr/local/zlib \ //指定zlib库路径,前提是要安装zlib>--disable-userdir \ //禁用请求的映像到用户特定目录,如果需要开通个人主页功能,改参数不填,
>--enable-so \ //以动态共享对象编译
>--enable-deflate=shared \ //缩小传输码支持
>--enable-expires=shared \ //期满头控制
>--enable-rewrite=shared \ //基于规则URL操控
>--enable-static-support //建立一个静态链接版本的支持
#make && make install
Apache目录结构
#tree /usr/local/apache
bin #执行文件目录。如apachetl、htpasswd
cgi-bin #预设给一些CGI网页程序存放的路径。
error #默认错误应答目录。
htdocs #默认web文档根目录
icons #提供apache预设给予一些小图标
logs #apache日志文件存放目录
man #apache配置文件帮助手册目录
modules #apache动态加载模块的目录
*mod_deflate.so #服务器输出内容前先将内容压缩后输出
*mod_rewrite.so #服务器基于一定的规则重新URL请求
*mod_expire.so #服务器允许通过配置文件控制http协议过期时间、缓存
#查看apache加载的静态模块
#/usr/local/apache2/bin/apachectl -l
/etc/http/ #apache主配置目录conf.conf
*mine.type #类型gif、png、text等
/etc/httpd/extra #多个辅助配置文件*.conf
httpd-autoindex.conf #配置目录列表
httpd-languages.conf #配置语言支持
httpd-info.conf #配置服务器状态与信息显示
httpd-mpm.conf #配置控制多路处理模块
httpd-ssl #配置SSL模块
httpd-userdir.conf #配置用户主目录,高版本不支持
httpd-vhosts.conf #设置虚拟主机
httpd-multilang-errordoc.conf #配置多语言错误应答
httpd-dav.conf #配置dav配置模块
httpd-default.conf #配置与apache自身相关,优化作用
httpd-manual.conf #配置文档访问辅助配置文件
apache配置文件中语法
1、# 注释
2、文件每一行包含一个指令
3、\ 表示续行 与下行间不能有其他任何字符
4、指令名 参数 如:Listen 80
5、配置文件组的指令名是不区分大小写
6、指令的参数是区分大小写
7、空白行或指令前的空白都被忽略(调整格式用)
8、目录分隔符用 "/"
检查配置是否错误
#/usr/local/apache2/bin/apachectl configtest
#/usr/local/apache2/bin/apachectl -t /etc/httpd/httpd.conf
//以上两种都可以检查配置文件是否错误.
启动apache脚本
#/usr/local/apache2/bin/apachectl [-k start|restart|graceful|stop] #开始|重启|温和重启|停止,
如果网站正在运行可以使用"apachectl -k graceful"重启httpd后台
apache服务器的参数设置
1、主配置文件
#cat /etc/httpd/conf/httpd.conf
ServerRoot "/usr/local/apache2" //指定apache安装的根目录,服务器基础目录
Listen 80 //apache监听端
语法:Listen [端口|IP地址:端口] [协议]
如:Listen 192.168.1.1:80
Listen 192.168.1.1:8080
Listen 192.168.0.1:80 https Listen [1992:db8:00a:220f:fe99:fea7]:80
LoadModule php5_module modules/libphp5.so //加载模块。
语法:LoadModule 模块名称 模块文件路径全名
如:加载mod_rewrite.so模块
LoadModule rewrite_module modules/mod_rewrite.so
#apache默认将已经编译的DSO
#(Dynamic Shared Object)模块存放于apache安装目录子目录modules中
User daemon
Group daemon //apache进程执行者和执行者所属的用户组,如果要用UID或者GID,必须在前加#
语法:User [用户名/#UID]
Group [用户组/#GID]
#最好单独建立一个访问apache的用户,不要使用root用户或者nobody,nobody
#root权限表达、其它服务也会使用nobody用户
ServerAdmin zhuxyid@gmail.com //指定web管理员的邮箱地址,这个地址会出现在系统连接出错的时候,可以便于访问者能够及时通知web管理员
ServerName www.example.com:80 //设置了服务器用于辨识自己的主机名和端口号。就是说它后面的值是机器自己的主机名,可以带端口号。这主要用于创建重定向URL。比如,一个放置web服务器的主机名为simple.example.com ,但同时有一个DNS别名www.example.com 。而您希望web服务器更显著一点,您可以使用如下的指令:[ServerName www.example.com:80]
DocumentRoot "/usr/local/apache2/htdocs" //文档存放的位置,在未配置虚拟主机或虚拟目录或者别名的情况下,用户通过http访问w#eb服务器,所有的输出资料文件都存放在这里。
语法:DocumentRoot [目录绝对路径]
ErrorLog "logs/error_log" //指定记录apache运行过程中所产生的错误信息的日志文件位置。
语法:ErrorLog [文件的绝对路径或者相对路径]
LogLevel warn //指定Errorlog文件中记录的错误信息级别
语法 LogLevel [debug/info/notice/warm/error/crit/alert/emerg] //参数debug最详细,emerg最简单,建议warm
DirectoryIndex index.html index.php //默认的访问的索引,如果/usr/local/apache2/htdocs下什么目录也没有也可以指定其他目录下
如:DirectoryIndex index.html index.php /php-bin/index.php
2、辅助配置文件
httpd-default.conf //配置与apache自身相关,优化作用。
Timeout 300 //默认超时时间300s
KeepAlive On //开启建立持久链接多次请求。
MaxKeepAliveRequests 100 //启用持久链接时,对某个请求连接数。
KeepAliveTimeout 5 //启用持久链接时,对某个请求超时秒数。
httpd-mpm.conf //多路处理模块配置,不同的操作系统用不同的模块,这里是linux使用多路模块,这功能必须在配置的时候进行编译。
StartServers 5 //设置apache启动时默认的进程数
MinSpareServers 5 //默认子进程用完后,最少的空闲子进程
MaxSpareServers 10 //空闲子进程最大数
MaxClients 150 //最大客户端,同一时间服务器允许连接数
MaxRequestsPerChild 0 //子进程在生成期内,最大请求。0表示永不
apache服务器配置段(容器)
配置段(容器)
<> //开始
</> //结束
常见例子:开通个人主页(编译时需要把--disable-userdir选项去掉)
#vi /etc/httpd/httpd.conf
#UserDir disable //注释掉这行,如果没有则不管UserDir public_html //设置用户个人主页目录为public_html<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews -Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
#useradd test
#mkdir /home/test/public_html
#echo "This is test homepage!" > /home/test/public_html/index.html
#chmod o+x /home/*
**假设web服务器地址为192.168.1.254,则输入http://192.168.1.254/~test即可访问个人主页 配置虚拟目录 a、设置虚拟目录,并启用认证功能
Alias /test "/web/test"
<Directory>
AuthType Basic
AuthUserFile /web/test/passwd
AuthName "welcome my homepage"
Require valid-user
AllowOverride None
Order allow,deny
Allow from all
</Directory>
**保存重启后使用一下命令
#/usr/local/apache/bin/htpasswd /web/test/passwd zhuxy
**设置zhuxy访问密码后,才可以使用认证登陆 b、设置虚拟目录,并只允许某个IP访问
Alias /test1 /web/test1
<Direcotry /web/test1>
Options Indexes Multiviews
Order allow,deny
Allow from 192.168.1.50
</Directory>
**只允许IP为192.168.1.50访问
配置虚拟主机
建立基于IP地址虚拟主机192.168.1.2、192.168.1.3目录分别为/var/www/ip2和/var/www/ip3<VirtualHost 192.168.1.2>
DocumentRoot /var/www/ip2
ServerName 192.168.1.2:80
</VirtualHost>
<VirtualHost 192.168.1.3>
DocumentRoot /var/www/ip3
ServerName 192.168.1.3
</VirtualHost>
假设http服务器ip是192.168.1.254端口是80 ,建立基于域名的虚拟主机
NameVirtual 192.168.1.254:80
<VirtualHost 192.168.1.254:80>
ServerName www.mlx.com
DocumentRoot "/var/www/test1"
</VirtualHost>
<VirtualHost 192.168.1.254:80>
ServerName www.njit.edu.cn
DocumentRoot "/var/www/test2"
</VirtualHost>
复杂点的配置虚拟主机
a、基于IP地址的虚拟主机
需在同一台主机上绑定多个IP,在每个IP上建立一个虚拟机。由于IP缺乏,不常用.
例题:
ServerAdmin zhuxyid@gmail.com
DocumentRoot "/home/zhuxyid"
ServerName www.zhuxyid.com
ServerAlias zhuxyid.com
ErrorLog "logs/zhuxyid_error"
CustomLog "logs/zhuxyid-access_log" common
ServerAdmin zhu@qq.com
DocumentRoot "/home/zhu"
ServerName www.zhu.com
ServerAlias zhu.com
ErrorLog "logs/zhu_error"
CustomLog "logs/zhu-access_log" common
ServerAdmin nihao@qq.com
DocumentRoot "/home/nihao"
ServerName www.nihao.com
ServerAlias nihao.com
ErrorLog "logs/nihao_error"
CustomLog "logs/nihao-access_log" common
Options Indexes FollowSymLinks
AllowOverride None
Ordel allow,deny
Allow from all
使用ip区分网站
b、基于主机名的虚拟主机
所有虚拟主机都使用同一个IP,通过不同的域名来表示不同虚拟主机
例题:
NameVirtualHost *:80
DocumentRoot "/usr/local/apache2/htdocs"
ServerName *
ServerAdmin zhuxyid@gmail.com
DocumentRoot "/home/zhuxyid"
ServerName www.zhuxyid.com
ServerAlias zhuxyid.com
ErrorLog "logs/zhuxyid_error"
CustomLog "logs/zhuxyid-access_log" common
ServerAdmin zhu@qq.com
DocumentRoot "/home/zhu"
ServerName www.zhu.com
ServerAlias zhu.com
ErrorLog "logs/zhu_error"
CustomLog "logs/zhu-access_log" common
ServerAdmin nihao@qq.com
DocumentRoot "/home/nihao"
ServerName www.nihao.com
ServerAlias nihao.com
ErrorLog "logs/nihao_error"
CustomLog "logs/nihao-access_log" common
Options Indexes FollowSymLinks
AllowOverride None
Ordel allow,deny
Allow from all
使用域名区分网站