• 三十三、www服务apache软件


     1.前面提到:www服务是一种网页服务,但是网页服务也是需要软件来支撑的,通过软件的形式展示需要的网页,返回给浏览器。

     www服务软件排名:http://w3techs.com/technologies/overview/web_server/all

    说明:当前世界互联网主流web服务如上图所示:

      静态服务软件:

        1.apache:中小型企业静态web服务的主流,web服务器中的老大哥,份额逐年下降

        2.nginx:大型企业新型网站静态web服务主流,框架逐渐成熟,份额直追apache。

      动态服务器软件:

       1.IIS:微软的web服务器

       2.tomcat:中小型企业web服务器,互联网java容器主流

       3.resin:(百度)大型企业动态web服务器,互联网java容器主流

    2.安装apache有3种方式:

      1)源码安装,只安装自己想要的参数    2)yum或rpm方式安装        3)高级安装  (自己制作rpm包,定制yum仓库)

    3.什么是apache?

       apache是web服务软件,任何平台都可以使用,在稳定性和安全性上比任何其他软件都好,是开源软件。但不可否认,nginx比apache在处理静态小文件并发上要好很多,占内存稍少,可做代理服务器或负载均衡来使用。

    4.安装

      4.1 这里选择源码安装,安装就三步:1)configure   2)make     3)make install

        1)configure:. /configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。

       2)make:make是用来编译的,它从Makefile中读取指令,然后编译。这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码.

     3)make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。make insatll,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。

     4.2 查看有无安装历史rpm -qa httpd ,如果有可以卸载:rpm -e 软件版本

     4.3将软件下载到指定的地方:/home/oldboy/tools

    [root@djw3 tools]# ls -lh
    total 7.2M
    -rw-r--r--. 1 root root 7.2M Sep 29  2017 httpd-2.2.27.tar.gz

     4.4解压软件:tar zxf  httpd-2.2.27.tar.gz

    [root@djw3 tools]# ll
    total 7348
    drwxr-xr-x. 11  500  500    4096 Mar 14  2014 httpd-2.2.27
    -rw-r--r--.  1 root root 7519677 Sep 29  2017 httpd-2.2.27.tar.gz

     4.5 configure/make/make install 生成makefile文件

       cd  httpd-2.2.27  && ll

       一般编译安装一个新软件,不会的话,有两个文件要注意,一个是readme,一个是install

    ./configure --prefix=/application/apache2.2.27
    --enable-deflate   #提供对类容的压缩传输编码支持,一般为html,js,css等站点,此参数会提高传输速度,apache调优重要选项之一
    --enable-expires   #激活允许通过配置文件控制HTTP的Expires:和Cache-Control:头类容,即对网站图片,js,css等内容提供在客户端浏览器缓存的设置,apache调优重要选项之一
    --enable-headers  #提供允许对HTTP请求头的控制
    --enable-modules=most
    --enable-so    # 激活apache服务的DSO(动态共享对象)支持,即在以后以DSO的方式编译安装共享模块,这模块本身不能用DSO方式编译
    --with-mpm=worker  #worker模式是使用线程来处理请求 所以可以处理更多的并发请求,如果不指定此参数,默认以prefork进程模式, apache调优重要选项之一
    --enable-rewrite   #URL重写功能 伪静态通过此模块实现
    make
    make install 这一步才会生成到指定的位置。

    ln -s /application/apache2.2.27/  /application/apache   制作软链接

    configure 错误提示:

    checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures

    zlib-devel 没装的原因

     4.6.启动:

        /application/apache/bin/apachectl -t  ---->检查语法

    [root@djw3 bin]# /application/apache/bin/apachectl -t 
    httpd: apr_sockaddr_info_get() failed for djw3
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    Syntax OK

        /application/apache/bin/apachectl start    ---->实际启动的是httpd服务,所以可以直接启动  httpd -k start

      [root@djw3 bin]# /application/apache/bin/apachectl start
    httpd: apr_sockaddr_info_get() failed for djw3
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName 

    lsof -i:80--->查看端口,确认开启

    [root@djw3 bin]# lsof -i:80
    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    httpd   29922   root    4u  IPv6  88921      0t0  TCP *:http (LISTEN)
    httpd   29924 daemon    4u  IPv6  88921      0t0  TCP *:http (LISTEN)
    httpd   29925 daemon    4u  IPv6  88921      0t0  TCP *:http (LISTEN)
    httpd   29926 daemon    4u  IPv6  88921      0t0  TCP *:http (LISTEN)

    ps  -ef |grep httpd---->确认进程,可以看到httpd -k start

    [root@djw3 bin]# ps  -ef |grep httpd
    root     29922     1  0 04:04 ?        00:00:00 /application/apache2.2.27/bin/httpd -k start
    daemon   29923 29922  0 04:04 ?        00:00:00 /application/apache2.2.27/bin/httpd -k start
    daemon   29924 29922  0 04:04 ?        00:00:00 /application/apache2.2.27/bin/httpd -k start
    daemon   29925 29922  0 04:04 ?        00:00:00 /application/apache2.2.27/bin/httpd -k start
    daemon   29926 29922  0 04:04 ?        00:00:00 /application/apache2.2.27/bin/httpd -k start
    root     30014 23061  0 04:08 pts/2    00:00:00 grep http

    查看网站,出现IT works表示正常,这里如果可以ping通,但是连接不上,telnet不行,可能是防火墙策略,记得关闭防火墙

    同理:也可以通过wget和curl测试服务是否正常,如下:

      

    [root@djw3 ~]# wget 192.168.0.103
    --2019-05-23 04:27:08--  http://192.168.0.103/
    Connecting to 192.168.0.103:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 44 [text/html]
    Saving to: “index.html”
    100%[========================================================================================>] 44          --.-K/s   in 0s     
    2019-05-23 04:27:08 (976 KB/s) - “index.html” saved [44/44]
     [root@djw3 ~] curl -i 192.168.0.103
    HTTP/1.1 200 OK
    Date: Wed, 22 May 2019 20:28:13 GMT
    Server: Apache/2.2.27 (Unix) DAV/2
    Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
    ETag: "22d23-2c-3e9564c23b600"
    Accept-Ranges: bytes
    Content-Length: 44
    Content-Type: text/html
    <html><body><h1>It works!</h1></body></html>

     5.部署一个简单节点:

       知道就可以了  , apachectrl -l  激活的模块       apachectrl -M  都有哪些是静态模块

       几乎每一个软件都有如下目录:bin    conf  logs

        

       主配置文件如下:apache/conf/httpd.conf

      

      网站的根目录:grep  -i   drcumentroot  httpd.conf

    找到对应的文件,可以修改访问:

    [root@djw3 htdocs]# vim  index.html
    <html><body><h1>长得丑,活得久!!!</h1></body></html>

     

     一般情况下,不修改配置文件,只是改静态程序是不需要重启机器的。

    6.默认文件的配置路径和修改。

      htdocs这是编译安装时apache的默认站点目录,当指定了默认站点后,通过DirectoryIndex  index.html来指定首页文件,一般在程序中,我们也是通过index.html、index.php、index.jsp、index.htm等指定首页文件。

      如下:修改配置文件,增加一个dangjingwei.html,首先找的首页一定是dangjingwei.html当没有的时候,就会找index.html

     因为修改配置文件,所以需要平滑重启 ../bin/apachectl  graceful

     [root@djw3 htdocs]# /application/apache/bin/apachectl -t
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    Syntax OK
    [root@djw3 htdocs]# /application/apache/bin/apachectl graceful
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

     7.配置文件中的一段如下:

         

     对于directory需要说明的是,如果有站点,就要进行配置,才能让用户使用!!!

    DocumentRoot "/applications/apache2.2.27/htdocs" apache默认的站点目录,路径结尾不要添加斜线

    <Directory /> 根目录(以下是对根目录的限制,软件访问后,禁止对根目录访问,这是不允许求改,知道就好,我们不进行配置,无需理解)
    Options FollowSymLinks FollowSymLinks表示允许符号链接,没加选项表示禁止,如不允许目录浏览等
    AllowOverride None 表示禁止用户对目录配置文件(.htaccess进行修改)重载,普通站点目录此项建议不开启
    Order deny,allow 允许未被明确拒绝的 (从后往前读)
    Deny from all 拒绝所有访问
    </Directory>
    <Directory "/applications/apache2.2.31/htdocs"> 站点目录(以下为默认站点目录的限制,如果读者私自配置了站点目录而没有配置这里就会出现 403错误)
    对于403报错:
    1)软件有bug 情况:   没有首页,而且禁止目录结构就会报403
    2)  软件正常情况:   如果权限不足,许可不足,也会报403
    Options Indexes FollowSymLinks FollowSymLinks表示允许符号链接,indexes表示允许目录浏览,如允许目录浏览,允许符号链接
    这里很危险,应禁止目录浏览 应更改为 Options FollowSymLinks或Options -Indexes FollowSymLinks(apache的第一个优化点)
    AllowOverride None 表示禁止用户对目录配置文件(.htaccess进行修改)重载 尽量不开启.htaccess 安全隐患大,规则多了网站访问性能低
    Order allow,deny 拒绝未被明确允许的 (从后往前读)
    Allow from all 所有人都能访问
    </Directory>
    根据上面的修改后,测试如下,为正常情况:

    8.从配置文件extra的一些简介

    [root@djw3 extra]# ll
    -rw-r--r--. 1 root root  2859 May 23 03:52 httpd-autoindex.conf
    -rw-r--r--. 1 root root  1753 May 23 03:52 httpd-dav.conf
    -rw-r--r--. 1 root root  2344 May 23 03:52 httpd-default.conf
    -rw-r--r--. 1 root root  1103 May 23 03:52 httpd-info.conf
    -rw-r--r--. 1 root root  5078 May 23 03:52 httpd-languages.conf
    -rw-r--r--. 1 root root   949 May 23 03:52 httpd-manual.conf
    -rw-r--r--. 1 root root  3789 May 23 03:52 httpd-mpm.conf
    -rw-r--r--. 1 root root  2207 May 23 03:52 httpd-multilang-errordoc.conf
    -rw-r--r--. 1 root root 11530 May 23 03:52 httpd-ssl.conf
    -rw-r--r--. 1 root root   817 May 23 03:52 httpd-userdir.conf
    -rw-r--r--. 1 root root  1507 May 23 03:52 httpd-vhosts.conf

     在从配置文件中,这里先要注意这三个文件:

    httpd-vhosts.conf  多个域名跑在一台服务器上使用的文件

    httpd-mpm.conf apache有两种模式:worker和prefork模式,在安装./configure 的时候指定为worker模式,如果不指定的话,默认是prefork模式,   --with-mpm=worker 

    httpd-default.conf 一些常见的配置参数都在这个文件中。

  • 相关阅读:
    深入理解Java:注解(Annotation)自定义注解入门
    Java基础之理解Annotation
    junit常用注解详细说明
    能判断是电脑端还是手机端的javascript
    Ext.js多文件选择上传,
    StringBuffer类和String类(原文地址 : http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html)
    FileItem类的常用方法(关于文件上传的)
    js保留小数点后面几位的方法
    如何将div中的内容设置为空同时还要保留div本身
    使用html中的<input>标签上传多个文件(转)
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/11173857.html
Copyright © 2020-2023  润新知