首页 > 代码库 > Linux--apache

Linux--apache

安装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
使用域名区分网站


本文出自 “Biggest Dream Is What?” 博客,请务必保留此出处http://zhuxyid.blog.51cto.com/1391714/1406995