博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三十三、www服务apache软件
阅读量:5140 次
发布时间:2019-06-13

本文共 7611 字,大约阅读时间需要 25 分钟。

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

 www服务软件排名:

 

说明:当前世界互联网主流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 一些常见的配置参数都在这个文件中。

转载于:https://www.cnblogs.com/dangjingwei/p/11173857.html

你可能感兴趣的文章
肤色阈值分割
查看>>
Android中的菜单
查看>>
【最短路】Vijos P1046 观光旅游
查看>>
Android学习总结——开篇
查看>>
iOS 基础知识
查看>>
PHP 重新格式化var_dump/print_r打印的数组
查看>>
C++11:POD数据类型
查看>>
Delphi中Json格式读写
查看>>
请不要忘记带着梦想时常沐浴阳光
查看>>
交易与风险
查看>>
Hibernate: Could not find a getter for iUserId in class com.Hibernate.pojo.User异常
查看>>
windows环境下搭建RocketMQ
查看>>
CSS--基础
查看>>
基于OpenGL的渲染引擎
查看>>
Android HTTP GET 小文件下载
查看>>
ember.js:使用笔记4 数组数据的分组显示
查看>>
mvc-9测试和调试
查看>>
移植linux-2.6.32.2到qq2440
查看>>
转义字符(\)对JavaScript中JSON.parse的影响概述
查看>>
MySQL学习9 - 单表查询
查看>>