现在的位置: 首页 > 综合 > 正文

apach

2013年08月15日 ⁄ 综合 ⁄ 共 11139字 ⁄ 字号 评论关闭

 

一、资料参考与准备:
  Apache软件包的组成
  /etc/httpd/conf/*
  主配置文件位置
  /etc/rc.d/init.d/httpd
  启动脚本
  /home/httpd/html
  html文档的主目录
  /home/httpd/html/manual/*
  html格式的帮助文档
  /home/httpd/icons/*
  用在html网页中的图标文件
  /usr/sbin/*
  -/usr/sbin/htpasswd
  建立和更新apache用户的程序
  -/usr/sbin/httpd
  http服务器程序
  /var/log/httpd/*
  日志文件
  主配置文件httpd.conf的常用指令解释
  ServerType standalone
  #设置服务器的形式是单独启动(standalone),还是借由互联网络伺服程序inetd来启动。一般使用前者。
  ServerRoot "/usr/local/apache"
  #设置服务器的Home目录,用来存放服务器的设置文件、错误文件、记录文件。
  PidFile logs/httpd.pid
  #程序启动时,把父进程httpd的进程号(process id)存在这个文件中。这个文件名可以配合PidFile指令加以改变。
  ScoreBoardFile logs/apache_status
  #设置网络上WWW服务器一些执行程序的记录文件。
  #ResourceConfig conf/srm.conf
  #AccessConfig conf/access.conf
  #这两个文件的内容已经包含在httpd.conf文件中了。
  Timeout 300
  #如果客户端300秒还没有连上,或者服务器300秒还没有传送数据到客户端,就会自动断线。
  KeepAlive On
  #设置是否支持续传功能。
  MaxKeepAliveRequests 100
  #设置支持续传功能的数目。数目越多则浪费的硬盘空间越多。设置为0则不止持续传。
  KeepAliveTimeout 15
  #如果该为使用者在15秒后还没有向服务器发出要求,则他在不能续传。
  MaxRequestsPerChild 0
  #设置同时间内child process数目。
  TtesteadsPerChild 50
  #设置服务器使用进程的数目。
  #Listen 3000
  #Listen 12.34.56.78:80
  #允许使用其它的Port或IP访问服务器。此例中Port为3000,IP为12.34.56.78:80。
  #BindAddress *
  #设置Apache监听所有的IP,也可以具体的指定。
  #LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
  ……
  #打开当前未激活预定以的模块。
  #ExtendedStatus On
  #设置服务器产生的状态信息。
  Port 80
  #设置服务器使用的Port。
  ServerAdmin you@your.address
  #设置服务器管理者的E-Mail地址。
  #ServerName new.host.name
  #服务器的主机名。如果你有固定的IP地址,则不需要设置。
  DocumentRoot "/usr/local/apache/htdocs"
  #设置存放站点html文件的目录。
  <Directory />
  Options FollowSymLinks
  AllowOverride None
  </Directory>
  #设置/目录的指令。具体地说明:
  Option:定义在目录内所能执行的操作。
  None:表示只能浏览,
  FollowSymLinks:允许页面连接到别处,
  ExecCGI:允许执行CGI,
  MultiViews:允许看动画或是听音乐之类的操作,
  Indexes:允许服务器返回目录的格式化列表,
  Includes:允许使用SSI。这些设置可以复选。
  All:则可以做任何事,但不包括MultiViews。
  AllowOverride:加None参数表示任何人都可以浏览该目录下的文件。
  另外的参数有:FileInfo、AuthConfig、Limit。
  UserDir public_html
  #定义使用者存放html文件的目录。
  DirectoryIndex index.html
  #定义首先显示的文件。
  AccessFileName .htaccess
  #定义每个目录访问控制文件的名称。
  #CacheNegotiatedDocs
  定义代理服务器不要Cache你的页面。不建议使用。
  UseCanonicalName On
  #服务器使用ServerName指定的服务器名和Port指定的端口地址。
  二、安装与配置
  apache安装
  $ tar xvf httpd-*.tar
  $ ./configure --prefix=PREFIX
  $ make Install
  $ make install
  常用关键配置
  ·vi /etc/httpd/conf/httpd.conf
  Listen 80
  Include conf.d/*.conf
  ServerRoot "/etc/httpd"
  DocumentRoot "/var/www/html"
  ServerAdmin root@mai.xuanfei.net
  ServerName 10.45.63.188:80
  用户认证
  假如某一目录下的文件如/home/ftp/pub需要做到用户认证
  创建认证用户
  @htpasswd –c /*/.password xuanfei
  创建认证组
  @vi /*/.group
  xuanfei-group:xuanfei xuanfei1
  一。   基本的Apache用户认证方法:
  在httpd.conf中加入下面的行
  <>
  options indexes followsymlinks
  allowoverride authconfig
  order allow,deny
  allow from all
  <>
  或者加到 /etc/httpd/conf.d/ 新建个文件名为。conf结尾的配置文件
  〈Directory /home/ftp/pub>
  Options Indexes
  AllowOverride AuthConfig
  order allow,deny
  allow from all
  〈/Directory>
  用在目录/home/ftp/pub下放文件。htaccess,内容如下:
  authname "shared files"
  authtype basic
  authuserfile /*/.password
  require valid-user
  #require group xuanfei-group //接收组所以用户
  #requirre user xuanfei //接收xuanfei单个用户
  用随Apache来的程序htpasswd 生成文件/etc/.passwd,每行一个用户名:密码
  只要能提供正确的用户名和密码对,就允许登录访问,这是针对任何地址来的
  请求都要求提供用户名和密码认证。
  二。针对部分网段或地址要求认证。
  若公司LAN所在网段为10.45.63.0/24,且有一防火墙专线接入Internet,
  内部网卡的地址为10.45.63.1/32,则现在希望所有通过拨本地633通过
  防火墙上的apache反向代理向LAN上的另一WWW服务器访问时需要认证,而本地
  LAN上的用户不需认证。可以在httpd.conf中放入:
  〈Directory /home/ftp/pub>
  Options Indexes FollowSymLinks
  AllowOverride AuthConfig
  order deny,allow
  deny from 10.45.63.1
  〈/Directory>
  且在/home/ftp/pub/.htaccess中放入:
  AuthName "shared files"
  AuthType Basic
  AuthUserFile /etc/.passwd
  require valid-user
  satisfy any
  三。对同一目录及其下的子目录有不同的权限,仅某些人可以存取一目录下的
  子目录。
  如有一目录/home/ftp/pub/host,有三个用户user1,user2,user3都需要用户名
  和密码进入/home/ftp/pub,但仅user1,user2能进入/home/ftp/pub/host.则
  放下面的行到httpd.conf
  〈Directory /home/ftp/pub>
  Options Indexes
  AllowOverride AuthConfig
  order allow,deny
  allow from all
  〈/Directory>
  〈Directory /home/ftp/pub/host>
  Options Indexes
  AllowOverride AuthConfig
  order allow,deny
  allow from all
  〈/Directory>
  且看/home/ftp/pub/.htaccess为:
  AuthName "shared files"
  AuthType Basic
  AuthUserFile /etc/.passwd
  require valid-user
  且看/home/ftp/pub/host/.htaccess
  AuthName "shared files"
  AuthType Basic
  AuthUserFile /etc/.passwd
  AuthGroupFile /etc/.hostgroup
  require group manager
  且文件/etc/.passwd内容为:
  user1:passwd1
  user2:passwd2
  user3:passwd3
  且文件/etc/.hostgroup内容为:
  manager: user1 user2
  虚拟目录
  #vi /etc/httpd/conf.d/xuanfei.conf
  Alias /xuanfei /home/xuanfei
  (设置虚拟目录属性)
  Options Indexes MultiViews
  (当没有主页时以是否显示文件及文件夹)
  AllowOverride None
  Order allow,deny
  Allow from all
  虚拟主机设置
  简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
  支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
  account.xuanfei.net,同时又想为host部门建立网站,网站内容也
  放在该机器上,通过host.xuanfei.net访问,这就要用到虚拟主机
  设置。
  设置Apache虚拟主机通常有两种方案
  一、基于IP的虚拟主机
  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
  网卡上绑定多个IP地址去服务多个虚拟主机。
  若该机器的IP地址为10.45.63.2(account.xuanfei.net),首先
  你要设置IP别名(假设用10.45.63.4作为其别名IP)。加下面的行到
  /etc/rc.d/rc.local,确保每次启动后自动运行。
  #/sbin/ifconfig eth0:0 10.45.63.4 netmask 255.255.255.0 broadcast \
  10.45.63.255 up
  #/sbin/route add -host 10.45.63.4 eth0:0
  然后你需要设置/etd/httpd/conf/httpd.conf文件:
  <VirtualHost 10.45.63.4>
  ServerAdmin root@xuanfei.net
  DocumentRoot /home/httpd/host.xuanfei.net
  ServerName host.xuanfei.net
  ErrorLog /var/log/httpd/host.xuanfei.net/error_log
  TransferLog /var/log/httpd/host.xuanfei.net/access_log
  </VirtualHost>
  然后分别创建目录
  /home/httpd/host.xuanfei.net,
  /var/log/httpd/host.xuanfei.net
  ,放相应的网站内容到目录/home/httpd/host.xuanfei.net下即可,并确保
  你内部的DNS指定host.xuanfei.net的A记录到IP地址10.45.63.4 。
  注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
  虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
  方案。
  二、基于名字的虚拟主机:
  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
  浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
  /etc/httpd/conf/httpd.conf
  NameVirtualHost 10.45.63.2
  <VirtualHost 10.45.63.2>
  ServerAdmin root@xuanfei.net
  DocumentRoot /home/httpd/host.xuanfei.net
  ServerName host.xuanfei.net
  ErrorLog /var/log/httpd/host.xuanfei.net/error_log
  TransferLog /var/log/httpd/host.xuanfei.net/access_log
  </VirtualHost>
  <VirtualHost 10.45.63.2>
  ServerAdmin root@xuanfei.net
  DocumentRoot /home/httpd/test.xuanfei.net
  ServerName test.xuanfei.net
  ErrorLog /var/log/httpd/test.xuanfei.net/error_log
  TransferLog /var/log/test.xuanfei.net/access_log
  </VirtualHost>
  注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
  为了让它工作,你需要把host.xuanfei.net, test.xuanfei.net的DNS
  都指向IP地址10.45.63.2
  上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
  没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
  若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。
  NameVirtualHost 11.22.33.44 ; 在这个IP地址接收虚拟主机的服务
  <Vir

tualHost 111.222.33.44>
  ServerName www.xuanfei1.com
  DocumentRoot /www/xuanfei1
  </VirtualHost>
  <VirtualHost 11.22.33.44>
  ServerName www.xuanfei2.com
  DocumentRoot /www/xuanfei2
  </VirtualHost>
  三、基于端口的虚拟主机:
  <VirtualHost 111.222.33.44:80>
  ServerName www.xuanfei1.com
  DocumentRoot /www/xuanfei1
  </VirtualHost>
  <VirtualHost 11.22.33.44:8080>
  ServerName www.xuanfei2.com
  DocumentRoot /www/xuanfei2
  </VirtualHost>
  此种方法应用相对没那么方便!所以相对应用也少点!不同之处就是要在其域名或者IP后面添加其端口。
  基于CGI的配置
  要让CGI程序能正常运作,必须配置Apache以允许CGI的执行,其方法有多种。
  ScriptAlias
  ScriptAlias指令使Apache允许执行一个特定目录中的CGI程序。当客户端请求此特定目录中的资源时,Apache假定其中文件都是CGI程序并试图运行。
  ScriptAlias指令形如:
  ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
  如果Apache被安装到默认的位置,默认的配置文件httpd.conf中则会有上述配置。ScriptAlias指令定义了映射到一个特定目录的URL前缀,与Alias指令非常相似,两者一般都用于指定位于DocumentRoot目录以外的目录,其区别是ScriptAlias又多了一层含义,即其URL前缀中任何文件都被视为CGI程序。所以,上述例子会指示Apache,/cgi-bin/应该指向/usr/local/apache/cgi-bin/目录,且视之为CGI程序。
  举例,如果有URL为http://www.example.com/cgi-bin/test.pl的请求,Apache会试图执行/usr/local/apache/cgi-bin/test.pl文件并返回其输出。当然,这个文件必须存在而且可执行,并以特定的方法产生输出,否则Apache返回一个出错消息。
  ScriptAlias目录以外的CGI
  由于安全原因,CGI程序通常被限制在ScriptAlias指定的目录中,如此,管理员就可以严格地控制谁可以使用CGI程序。但是,如果采取了恰当的安全方法措施,则没有理由不允许其他目录中的CGI程序运行。比如,你可能希望用户在UserDir指定的宿主目录中存放页面,而他们有自己的CGI程序,但无权存取cgi-bin目录,这样,就产生了运行其他目录中CGI程序的需求。
  用Options显式地允许CGI的执行
  可以在主服务器配置文件中,使用Options指令显式地允许特定目录中CGI的执行:
  <Directory /usr/local/apache/htdocs/somedir>
  Options +ExecCGI
  </Directory>
  上述指令使Apache允许CGI文件的执行。另外,还必须告诉服务器哪些文件是CGI文件。下面的AddHandler指令告诉服务器所有带有cgi或pl后缀的文件是CGI程序:
  AddHandler cgi-script cgi pl
  .htaccess文件
  .htaccess文件是针对目录进行配置的一种方法。Apache在提供一个资源时,会在此资源所在目录中寻找。htaccess文件,如果有,则使其中的指令生效。AllowOverride 指令决定了。htaccess文件是否有效,它指定了哪些指令可以出现在其中,或者根本不允许使用。为此,需要在主服务器配置中如此配置:
  AllowOverride Options
  在。htaccess文件中,需要如此配置:
  Options +ExecCGI
  以使Apache允许此目录中CGI程序的执行。
  从网络访问CGI程序,浏览器中可能会发生四种情况:
  CGI程序的输出
  太好了!这说明一切正常。
  CGI程序的源代码或者一个"POST Method Not Allowed"消息
  这说明Apache没有被正确配置以执行CGI程序,重新阅读configuring Apache看看遗漏了什么。
  一个以"Forbidden"开头的消息
  这说明有权限问题。参考Apache error log和下面的文件的权限。
  一个"Internal Server Error"消息
  查阅Apache error log,可以找到CGI程序产生的出错消息"Premature end of script headers"。对此,需要检查下列各项,以找出不能产生正确HTTP头的原因。
  文件的权限
  记 住,服务器不是以你的用户身份运行的,就是说,在服务器启动后,拥有的是一个非特权用户的权限-通常是``nobody''或者``www'' -而需要更大的权限以允许文件的执行。通常,给予``nobody''足够的权限以执行文件的方法是,对文件赋予everyone execute权限:
  基于PERL的配置
  先用perl -v命令检查是否已安装了perl, 如果不能出现版本号,先安装perl
  进入apache配置文件,如果要运行perl写的cgi程序,写上:ScriptAlias /cgi-bin/ "cgi-bin所在目录",linux的cgi-bin目录默认在/var/www/cgi-bin/;如果要运行。pl文件,则加上: AddHandler cgi-script .pl
  修改/etc/http/conf.d/perl.conf文件,将以下内容前的#号去掉
  Alias /perl /var/www/perl
  <directory /var/www/perl>
  Sethandler perl-script
  Perresponsehandler modperl::registry
  Perloptions+parseheaders
  ptions+ExecCGI
  </directory>
  基于JSP的配置
  jakarta-tomcat-4.0下载地址:
  http://jakarta.apache.org/tomcat/
  安装步骤:
  JDK:
  1)将安装程序复制到 /usr/local目录下
  2)执行命令:
  ./j2sdk-1_4_2_01-linux-i586.bin
  解压后得到目录j2sdk-1.4.2_01,将目录名改为j2sdk-1.4.2,不然后面的操作会无效。
  3)依次执行下列命令:
  ln -s j2sdk-1.4.2 jdk
  ln -s jdk/jre jre
  4)设置环境变量
  vi /etc/profile
  加入如下内容:
  export JAVA_HOME=/usr/local/jdk
  export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  PATH=$PATH:/usr/local/j2sdk1.4.2/bin
  5)测试JDK是否安装成功
  cd /etc
  javac
  如果出现关于javac的使用说明,表示安装成功。
  TOMCAT:
  1)将安装程序复制到 /usr/local目录下
  2)执行命令:
  tar -zxvf jakarta-tomcat-5.0.19.tar.gz
  解压后得到目录jakarta-tomcat-5.0.19
  3)设置环境变量
  vi /etc/profile
  加入如下内容:
  export TOMCAT_HOME=foo/tomcat
  4)进入 /usr/local/jakarta-tomcat*/bin
  vi shutdown.sh
  添加 export JAVA_HOME=/usr/jdk
  export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/lib
  执行:
  ./startup.sh start
  启动tomcat服务器
  5)测试是否安装成功
  用浏览器浏览http://localhost:8080
  如果出现tomcat的欢迎页面,表示安装成功。
  Apache和tomcat的整合
  安装和配置mod_jk2
  #cp etc/httpd/conf.d/jk2.conf /etc/httpd/conf.d/
  #cp usr/lib/httpd/modules/* /usr/lib/httpd/modules/
  #cp –a usr/share/doc/mod_jk2/ /usr/share/doc/mod_jk2/
  #cp –a var/www/manual/mod_jk2/ /var/www/manual/mod_jk2/ b)、
  编辑mod_jk2配置文件 #vi /etc/httpd/conf/workers2.properties 在末尾加入以下语句: [uri:/*.jsp] worker=ajp13:localhost:8009 c)、配置Tomcat Tomcat默认的主目录/usr/local/tomcat/webapps/ROOT/ 需要设置和 Apache的主目录一致;
  编辑Tomcat主配置文件:
  #vi /usr/local/tomcat/conf/server.xml
  找到 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 在后面添加如下语句: <Context path="" docBase="/var/www/html" debug="0"/> d)
  重新启动Apache和Tomcat #/etc/init.d/httpd restart #/usr/local/tomcat/bin/shutdown.sh#/usr/local/tomcat/bin/startup.sh
  测试Apache和Tomcat整合 在Apache主目录(/var/www/html/)中建立Test.jsp文件内容如下: Hello! Welcom to here The time is <%= new java.util.Date() %>
  在浏览器中输入http://10.45.63.35/test.jsp 出现下面信息页面,代表Apache和Tomcat整合运行环境配置成功。
  三、启用与测试
  启动apache
  [root@localhost]#/etc/rc.d/init.d/httpd start
  关闭apache
  [root@localhost]#/etc/rc.d/init.d/httpd stop
  重新启动apache
  [root@localhost]#/etc/rc.d/init.d/httpd restart
  在浏览器输入:http://www.xuanfei.net
  四、小结
  Apache慢慢地已经成为Internet上最流行的Web服务器软件了。在所有的Web服务器软件中,Apache占据绝对优势,远远领先排名第二的Microsoft IIS

抱歉!评论已关闭.