HTTPD - Apache2 Web Server

文章来源于:https://help.ubuntu.com/10.04/serverguide/httpd.html     (能力有限,如果翻译不给力,希望留言指出以做修改。)


           Apache 通常而且普遍的用在linux 系统上作为web 服务器。web服务器是用来服务来自客户端电脑的网页请求。客户通常的请求,看网页使用网页浏览器,比如是:Firefox,Opera,或者Mozilla。

           用户进入统一资源定位符(URL)来指向一个web服务器,借助于全限定字符(FQDN)和一个需求资源的路径。例如,要看Ubuntu Web site的主页,一个用户将会只键入全限定字符。来请求指定有关付费支持的信息,一个用户将会通过一个路径,来查看的。

           最常用的用来传输网页的协议是超文本传输协议(HTTP)。像在安全接口层(HTTPS)之上的超文本协议,文件传输协议(FTP),它是用来上传和下载文件的协议,这样的协议都被支持的。

          Apache web 服务器经常跟MySQL数据引擎,超文本预处理脚本语言(PHP),和其他流行的脚本语言如Python和Perl一起联合起来用。这样配置起来被称为LAMP(linux,Apache ,MySQL,和Perl/Python/PHP)和为开发和基于web应用的部署提供了一个强大并且强有力的平台。

          安装:

这个Apache2 web 服务器在Ubuntu linux 系统上是可用的。来安转Apache2:

          在一个终端窗口键入如下命令行:

                sudo  apt-get install   apache2

          配置:

Apache2 的配置是通过纯文本配置文件中被放置的指令。这些需要指令被下面的文件和目录分开来了:

           apache2.conf : 这个是Apache2的主要配置文件。包含了对于Apache2的全局设置。

           conf.d :包含配置文件,它们全局地应用到Apache2.其他软件包使用apache 2服务内容可以添加文件,或符号,到这个目录。

           envvars : Apache2 环境变量被设置的地方。

           httpd.conf : 历史上的主要配置文件,在httpd守护进程之后命名。这个文件能够被用户指定特殊配置选项来全局影响Apache2.

           mods-available : 这个目录包含了加载模块和配置模块的配置文件。 然而,不是所有的模块都有特殊的配置文件。

           mods-enabled :保持了在/etc/apache2/mods-available 下文件的符号链接。 当一个模块的配置文件被符号链接了,它将会在下一次apache2重启的时候生效。

           ports.conf : 指示决定了Apache2正在监听的TCP 端口。

          sites-available: 这个目录有对于Apache2 虚拟主机的配置文件。虚拟主机允许为Apache2配置多个站点, 通过区分的配置来配置。

          site-enabled: 像mods-enabled ,sites-enabled 包含了在 /etc/apache2/sites-available目录下的符号链接。类似的,当用一个在sites-available中的配置文件被符号链接,这个站点配置将会在Apache2重启过后生效。

           此外,其他的配置文件可能使用包含命令被加载进来,而且通配符能够被包含到配置文件中使用。任何命令可能被放置到这些任何配置文件中。当Apache2开启或者重启的时候,它只识别主配置文件中的改变。

           服务器同样会读包含文档类型的一个文件;这个文件名可以通过TypesConfig 命令来设置,默认它是 /etc/mime.types 。

这个部分来说明Apache2服务器基本的配置参数。想要了解更多的请参考Apache2 文档。

           Apache2 运行通过一个友好的虚拟主机的默认配置。就是,它通过一个简单的默认虚拟主机被配置(使用VirtualHost 指令)它能够被更改或者使用,就像你有一个简单的站点,或者当作一个作为你有多个站点的额外的虚拟主机。如果你什么都不做,默认虚拟主机将会作为你默认的站点,或者是用户能够看到的,当它们键入的URL不是匹配ServerName 指定的任何你自定义的站点,要修改默认虚拟主机,编辑文件 /etc/apache2/sites-available/default。

             提示: 为一个虚拟主机设置的指令,应用于特殊的虚拟主机。如果一个指令被设置服务器而没有通过虚拟主机的设置来定义,默认的设置就会被使用。举例,如果你能够定义一个网站管理员邮件地址,而没有为每个虚拟主机定义个人的邮件地址。

            如果你想配置一个新的虚拟主机或站点,复制那个文件到同样的目录用你选择的姓名。例如:

sudo cp  /etc/apache2/sites-available/default   /etc/apache2/sites-available/mynewsite

             编辑新文件来配置新站点通过使用一些下面描诉的命令。

             ServerAdmin 命令是为提示给服务器管理员所指定的 邮箱。这个默认的值是 webmaster@localhost 。这个应该被修改为发送给你的一个邮箱地址(如果你是这个服务器管理员)。如果你服务器有一个问题,Apache2将会显示一个错误信息报告这个问题到这个邮箱地址。可以在/etc/apache2/sites-available你的站点配置文件中找到这些指令。

             Listen 指令是指定端口,和可选的IP地址,Apache2应该监听的。如果IP地址没有指定。Apache2 将会监听所有分配给运行机器的ip地址。默认Listen指令的值是80.

改变这个为127.0.0.1:80 就会导致Apache2智慧监听你的环回接口。这样它对于internet就不可用,可以改变为81来改变它的监听端口,或者什么都不管让它自然工作。这个指令可以在/etc/apache2/ports.conf 中找到或者被修改。

            ServerName 指令是可选的,可指定什么FQDN你的站点应该回应。默认虚拟主机没有指定的ServerName 指令,因此它会回应所有在另一个虚拟主机中没有匹配到的ServerName指令。如果你已经得到了ubunturocks.com的域名并且希望在你Ubuntu服务器中利用它,那么在你的虚拟主机配置文件中的ServerName指令的值就应该是ubunturocks.com 。 加入这个指令到你开始建立的虚拟主机中(/etc/apache2/sites-available/mynewsite)。

             你可能像让你站点回应www.ubunturocks.com ,因为很多使用认为www的前缀更合适。可以使用ServerAlias 指令。你同样可能会使用通配符在ServerAlias指令中。

            例如,如下的配置将会让你的站点回应任何以.ubunturocks.com的站点请求。

             ServerAlias     *.ubunturocks.com

          DocumentRoot 指令指定了Apache2应该要查找构成站点文件的位置。默认值是 /var/www 。没有站点被配置那儿,但是你可以注释RedirectMatch 指令它在/etc/apache2/apache2.conf 的请求,将会重定向到 /var/www/apache2-default ,这个是默认Apache2站点等待的地方。改变这个值在你虚拟主机文件中,并且记住如果需要创建站点目录。

            /etc/apache2/sites-available 目录没有被Apache2 分析,在/etc/apache2/sites-enabled 的符号链接指向 “available” 站点。

           使新虚拟主机有效,可以使用a2ensite 功能 并重启Apache2 :

           sudo   a2ensite mynewsite

           sudo    /etc/init.d/apache2   restart

           主要:确定为虚拟主机更改了一个描述性的名字来替代mynewsite。 一个方法就是在 虚拟主机ServerName指令后面命名这个文件。

类似的,使用a2dissite 功能来使站点失效。这个在多个虚拟主机的配置问题,解决故障的时候会非常有用:

           sudo  a2dissite  mynewsite

           sudo  /etc/init.d/apache2   restart

默认设置

这个部分解释了Apache2服务器的默认设置配置。例如,如果你加入了一个虚拟主机,你为这虚拟主机设置的配置优先于那个虚拟主机。在虚拟主机内没有定义的一个指令,默认值就会被使用。

                DirectoryIndex 是当一个用户请求一个目录的索引,通过指定在目录名的后面加上一个正斜杠,这个就成为服务器传送的默认页。

 例如,当有一个用户请求页 http://www.example.com/this_directory/,他或者她就会得到DirectoryIndex 如果它存在,如果不存在,并且index选项被指定,就产生一个服务器的目录别表,或者一个允许拒绝页,二者之一都是对的。服务器将会尝试在DirectoryIndex 指令中列出的文件中的一个,并返回它找到的第一个。如果它没有找到任何这些文件中的任何一个并且这个index为了那个目录设置了,服务器将会产生并返回一个列表,以HTML的格式,包含了这些目录的子目录和文件。这个默认的值,可以在/etc/apache2/mods-available/dir.conf 就是“index.html  index.cgi  index.pl  index.php index.xhtml index.htm ”. 因此,如果Apache2 在一个请求的目录中匹配到任何这些名字中的一个文件,第一个将会被显示。

               ErrorDocument 指令允许你为Apache2指定一个文件来处理特殊的错误事件。例如,如果一个用户请求一个并不存在的资源,一个404错误将会发生,并且依照Apache2的默认配置,文件/usr/share/apache2/error/HTTP_NOT_FOUND.html.var 将会被显示。 那个文件不在服务器DocumentRoot里面,但是有一个Alias指令在/etc/apache2/apache2.conf 可以重定向请求/error目录到/usr/share/apache2/error/。

看默认ErrorDocument指令的一个默认列表,使用这个命令:

                grep  ErrorDocument   /etc/apache2/apache2.conf

默认,服务器写传输日志到文件/var/log/apache2/access.log 。你可以改变这个通过在你虚拟主机配置文件中使用CustomLog 指令,或者省略它接受默认,被指定在/etc/apache2/apache2.conf 。你同样可以指定文件什么错误被记录,通过ErrorLog 指令,它的默认是/var/log/apache2/error.log 。这些传输日志是被分开于解决Apache2服务器问题的帮助的。你同样可以指定LogLevel(默认是“warn”),LogFormat (看/etc/apache2/apache2.conf 中的默认值)。

                一些选项被指定在每个基本目录上,而不是每个服务器。选项是这些指令的其中一个。一个Directory 节被关闭如XML 标签;像这样:

 <Directory  /var/www/mynewsite>

.......

</Directory>


这个带有Directory 节的选项指令接受一个或者更多的下面值(在其他之中),被空格区分:

              ExecCGI  允许CGI 脚本执行。 如果这个选项没有选择,CGI脚本就不会被执行。

             大多数文件不应该作为CGI脚本执行。这样将会是非常危险的。CGI脚本应该放在你DocumentRoot 目录外面的一个目录,并且仅仅这个目录有ExecCGi选项的设置。这个是默认的,并且默认的CGI脚本是在/usr/lib/cgi-bin 。

             Includes   允许服务器端包含。服务器端包含允许一个HTML文件去包含其他的文件。这不是一个普通的选项。了解更多信息去看the Apache2 SSI HOWTO。

             IncludesNOEXEC   允许服务器端包含,但是使在 CGI 脚本中 #exec 和 #include 命令失效。

                                 为了安全因素,这些经常不会被设置,而且确定不应该被设置在你的DocumentRoot 目录中。使小心地使这个选项有效在一个每个基本目录,仅当你确定你想用户看你全部的文件夹内容。

             Multview   支持协商内容的多重查看。这个选项为了安全因素默认是失效的。看Apache2 documentation  on this option 。

            SymLinksifOwnerMatch   仅仅遵循符号链接,如果目标文件或者目录跟这个链接有着同样的拥有者。


httpd 设置:

这个部分说明一些基本 httpd 守护进程的配置设置。

          LockFile  这个LockFile 指令设置这个路径给服务器用 USE_FCNTL_SERIALIZED_ACCEPT 或者USE_FLOCK_SERIALIZED_ACCEPT 选项编译的锁文件。它应该被存在本地磁盘上,它应该以默认值除非日志目录定位在一个NFS共享上。如果是这个情况,默认值应该被改到本地磁盘的一个位置而且一个只能被root读的目录。

         PidFile   这个PidFile 指令设置在服务器记录它的进程ID(Pid)的文件。这个文件应该只能够被root读取。在大部分情况下,它应该被设为默认值。

         User    这个User 指令设置服务器回应请求使用的用户ID。这个设置决定了服务器的进入。任何对这个用户不可达的文件将会同样对你网站拜访者不可进入。为User的默认值是www-data。

         警告:除非你确实知道你正在做什么,不要设置User 指令给root 。使用root 作为User 将会给你的web服务器带来大的安全漏洞。

        Group 指令更User 指令相似。Group 设置服务器回答请求下的组。这个默认值同样是www-data。

Apache2 模块:

Apache2 是一个模块服务。这表明,仅仅大部分基本功能被包含在内核服务中。扩展的特性是通过可被加载到Apache2中的模块使变得可用的。默认,一个基本的模块设置在编译时就被包含了进这个服务了。如果服务是使用动态加载模块方式被编译的,模块就能够被独立地编译,而且可在任何时间使用LoadModule 指令被添加。否则,Apache2一定会重新编译添加或者移除模块。

               Ubuntu 编译Apache2 允许动态模块的加载。配置指令可能有条件的被包含进一个特定的模块,用<IfModule>块来围住它们。

你能够安装额外的Apache2模块并使用它们在你的web 服务器中。例如,运行下面命令在一个终端中来安转MySQL授权的模块:

            sudo apt-get install  libapache2-mod-auth-mysql

看/etc/apache2/mods-available目录,看附加的模块。

使用a2enmod 功能使得一个模块生效:

           sudo  a2enmod auth_mysql

           sudo   /etc/init.d/apache2  restart

类似地,a2dismod 将会使一个模块失效:

           sudo  a2dismod  auth_mysql

           sudo   /etc/init.d/apache2  restart

HTTPS 配置

mod_ssl 模块为Apache2 服务器增加了一个重要的特性---能够保密的通信。因此,当你的浏览器正在使用SSL 通信,在导航栏中的URL的开头就会是以https://作为前缀。

mod_ssl 模块在 apache2-common包中是可用的。执行下面的命令行在一个终端提示中使mod_ssl模块生效:

             sudo  a2enmod ssl

有一个默认的HTTPS配置文件在/etc/apache2/sites-available/default-ssl 。为了让Apache2提供HTTPS,一个证书和密钥同样是需要的。默认的HTTPS配置将会使用一个由ssl-cert包产生的证书和一个密钥。它们作测试很好,但是自动产生的证书和密钥应该被一个站点或服务器的证书替代。要知道产生一个密钥并获得一个证书看the section called “Certificates” 。

为HTTPS配置Apache2 ,键入如下:

        sudo  a2ensite default-ssl

目录/etc/ssl/certs 和/etc/ssl/private 都是默认的路径,如果你安装证书和密钥在另一个目录中,请确保适当地改变了SSLCertificateFile 和 SSLCcertificateKeyFile 。

伴随着Apache2的HTTPS的配置,重启服务使得新设置生效:

         sudo  /etc/init.d/apache2  restart

        当Apache2启动的时候,你需要键入的密码依赖于你如何获得证书的。

你可以通过在浏览器地址栏中键入 https://your_hostname/url/ 来查看你的安全服务页。

参考:

         Apache2 Documentation 包含了Apache2 配置指令更深入的信息。同样看apache2-doc 包来查看官方Apache2文档。

        想要了解更多SSL相关的信息,请看Mod SSL Documentation 站点。

        O‘Reilly 的Apache Cookbook对于为了达到Apache2的具体配置是一个很好的资源。

        对于Ubuntu中的Apache2的具体问题,询问freenode.net 上#ubuntu-server IRC 频道

        经常整合PHP和MySQL 的使用,Apache MySQL  PHP Ubuntu Wiki 页是一个很好的资源。

  

           




            



               






           


          

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值