静态服务软件:

apache老大哥,市场占有率最高,但成下降趋势。

nginx

lighttpd很好,但没发展起来,百度的贴吧在用。比nginx发展早。

tengine:淘宝在用,nginx发展过来的。

动态服务软件:

tomcat服务于java程序(jps、do)

resin服务于大型java程序,resin推广不好,但不如tamcat火(jps、do)

php(fcgi)服务于php程序,配合apche不是采用守护进程的方式,而是模块module,mod_php5.so等方式。配合nginx、lighttpd就是守护进程的方式(fcgi)

iis服务于微软的asp,aspx程序。

apache2.2是主流,现在有2.4版本。

resin3.1是主流,现在有4.0版本

tomcat6.0主流,现在有7.0版本

php5.5是主流,现在6.6

1、小企业会用源码编译的方式,比喻自己做饭、做菜吃

2、yum或rpm方式安装,简单方便,但不够灵活,访问量少,追求方便或内部使用的http的时候,或服务器数量多的时候,维护成本考虑,比如几千台服务器安装apache的时候。

3、高级安装结合了编译和yum/rpm的双重优点,内部人员通过源码,根据自身业务需求,制作成符合你自己的rpm包,然后放到自己的定制的yum仓库里,然后在全网的客户端通过yum实现批量部署、管理、升级。在老男孩博客搜索rpm制作。

Apache取自“a patchy server”的读音,意思是一个充满补丁的服务器。因为它是自由软件,所以不断有人来为它开发新的功能特性,修复原来的缺陷,才成为我们今天使用的安全稳定的web服务器。

处理静态业务nginx比apche静态小文件并发要高,占有内存小。

tar xf httpd.....

cd httpd...

./configure \

--prefix=/application/apache2.2.27 \

--enable-deflate \  压缩

--enable-expires \  过期,设置客户端缓存时间

--enable-headers \

--enable-modules=most \ 激活大多数模块

--enable-so \

--with-mpm=worker \ 有一个主进程产生线程,让线程对外服务。worker并发大些。

--enable-rewrite  打开伪静态

make&&make install

ln -s /application/apache2.2.27/ /application/apache

cd /application/apache

/application/apache/bin/apachectl -t

/application/apache/bin/apachectl start 其实也是调用/application/apache/bin/下的httpd开启的。

wget 192.168.44.12 或 curl 192.168.44.12查看网站是否正常。

/application/apache/bin/apachectl  -l 查看生效的模块

stace /application/apache/bin/apachectl 跟踪进程到底卡在哪里了。

grep -i DocumentRoot httpd.conf 查看网站的根目录在哪

在/application/apache/htdocs下

/application/apache/bin下有一些工具如下:

ab 性能测试工具,简单、易用。同类软件还有jmeter、loadrunner、webbench等。

apachectl 启动命令,实际调用的httpd

apxs服务器编译安装扩展模块的工具,在进行DSO方式编译模块时会用到

htcacheclean清理磁盘缓冲区的命令,需要在编译时指定相关参数才可使用,一般用得少。

htpasswd控制命令程序,可为打开网站时输入密码

rotatelogs自带的日志轮询命令,也还可以用,但工作场景用cronolog替代。

/application/apache/conf下的一些目录:

httpd.conf主配置文件,这个文件经常会访问修改,每一行参数作用都你应该弄很清楚明白。

extra:这是额外的配置文件目录,可以把httpd.conf拆分成不同的小目录。

htdocs默认的apache站点目录。

搜索配置文件站点目录 /DirectoryIndex 可添加基础访问文件,如weipeng.html。

然后检查语法/application/apache/bin/apachectl -t

最后平滑重启/application/apache/bin/apachectl graceful

daemon:编译安装软件默认用户

<Directory "/application/apache2.2.27/htdocs">

Options Indexes FollowSymLinks  去掉indexes,当页面出错时不对外展示目录

AllowOverride None此处none如果改成all,则程序员就有修改配置文件权限。

Order allow,deny

Allow from all

403错误:当没有主页面的时候又禁止了目录结构

extra目录下重点关注一下三个文件:

httpd-vhosts.conf 网站配置基础目录

httpd-mpm.conf 网站工作模式设置,有worker、prefork模式

httpd-default.conf默认网站超时、程序员入口配置文件、控制是否隐藏apache版本号。

虚拟主机:一个http服务需要配置多个站点,就需要虚拟主机,通过不同的域名或不同的端口号或不同的ip。主要采用基于域名方式,其他两个基本不用。

www.etiantian.org  /var/html/www

blog.etiantian.org /var/html/blog

bbs.etiantian.org /var/html/bbs

如果采用了extra那么在主配置文件httpd.conf里将Include conf/extra/httpd-vhosts.con

这行前面的注释去掉。但此时还不通,需要在主配置文件里添加以下行:

<Directory "/var/html">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

rewrite 301跳转。

FQDN:fully qualified domain name 完整的域名解析。

为避免开启服务时报错,在主配置文件中添加如下行:

ServerName 127.0.0.1:80

apche的日志详解:

通用日志格式(common log format)

组合日志格式(combinedlog format)

工作中用combined比较多。可以在vhost里修改combined或common。

日志轮询:

cd /home/oldboy/tools/

wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

tar zxvf cronolog-1.6.2.tar.gz

cd cronolog-1.6.2

./configure

make

make install

pwd

最终会生成一个文件ll /usr/local/sbin/cronolog 通过它来日志轮询,然后在配置文件httpd-vhosts.conf里修改成如下方式:

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

DocumentRoot "/var/html/bbs"

ServerName bbs.weipeng.com

ErrorLog "logs/dummy-host.example.com-error_log"

CustomLog "|/usr/local/sbin/cronolog /app/logs/access_bbs_%Y%m%d.log" combined

</VirtualHost>

可看老男孩日志轮循详解。

还有一种非常常用的日志切割方法,nginx也实用,如下:

定时任务+脚本

00点切割:

cd /application/apache/logs

mv www-access_log www-access_$(date +%F)log

/application/apache/bin/apachectl graceful

工作中pv是不记录图片、js、css等可以在combined后加上env=!IMAG

修改隐藏版本,在安装httpd之前做,如下:

1、vi   /home/weipeng/tools/httpd-2.2.27/include/ap_release.h在里面修改

2、grep “^Server” /application/apache/conf/extra/httpd-default.conf

ServerTokens PROD

ServerSignature off

本文转自  流颗星  51CTO博客,原文链接:
http://blog.51cto.com/liukexing/1966526

Apache理论与实战相关推荐

  1. Docker最全教程——从理论到实战(三)

    容器是应用走向云端之后必然的发展趋势,因此笔者非常乐于和大家分享我们这段时间对容器的理解.心得和实践. 本篇教程持续编写了2个星期左右,只是为了大家更好地了解.理解和消化这个技术,能够搭上这波车. 你 ...

  2. Docker最全教程——从理论到实战(六)

    Docker最全教程--从理论到实战(六) 原文:Docker最全教程--从理论到实战(六) 托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号"magiccodes"已经发 ...

  3. 视频|立体视觉之立体匹配理论与实战

    主讲嘉宾: 武汉大学摄影测量学博士,现为某科技公司算法主管与技术合伙人,主要研究基于影像的立体匹配和三维重建,包括立体匹配.点云融合.网格构建.网格处理等,「3D视觉从入门到精通」星球嘉宾 课程大纲: ...

  4. Docker最全教程——从理论到实战(一)

    Docker最全教程--从理论到实战(一) 目录 前言 随着生产力的发展尤其是弹性架构的广泛应用(比如微服务),许多一流开发者都将应用托管到了应用容器上,比如Google.微软.亚马逊.腾讯.阿里.京 ...

  5. springboot 搭建分布式_爱了!阿里巴巴内部出品“SpringBoot+微服务指南”,理论与实战...

    爱了爱了,Alibaba出品"Springboot+微服务架构指南",理论与实战结合,双管齐下! 有幸从一位朋友那里得到Alibaba内部出品强推的"SpringBoot ...

  6. 【视频课】一课掌握模型设计核心理论与实战技巧

    课程介绍 模型的设计是整个深度学习领域的通用基础,不管是从头设计自己的神经网络,还是对已有模型进行优化获得更高的任务指标,更快的运行速度,获得更小的模型体积,都需要掌握各类网络的设计技巧,是深度学习算 ...

  7. 赠书福利 | 首本理论和实战结合的深度学习书籍

    市面上关于深度学习的书籍很多,本书最大的特点是理论结合实战和内容的广度.现在大家能够看到的深度学习书籍大概可以分为两类,一类只关注理论而另一类只关注应用.前者多为一些会议论文集,当然也包括 Ian G ...

  8. 深度学习语义分割理论与实战指南

    本文来自微信公众号[机器学习实验室] 深度学习语义分割理论与实战指南 1 语义分割概述 2 关键技术组件 2.1 编码器与分类网络 2.2 解码器与上采样 2.2.1 双线性插值(Bilinear I ...

  9. Docker最全教程——从理论到实战(七)

    Docker最全教程--从理论到实战(七) 原文:Docker最全教程--从理论到实战(七) 在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解 ...

最新文章

  1. 人工智能浪潮下的语音交互——VUI设计(基础篇)
  2. ABAP delete的用法
  3. louvain算法_单细胞聚类(四)图解Leiden算法对Louvain算法的优化
  4. Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (离线树状数组+前缀xor)
  5. php如果实现日历的制作,教大家制作简单的php日历
  6. 作为参数给后端为空_后端 API 接口文档 Swagger 使用指南
  7. 从中台、数仓与元数据不为人知的3个角度,看数据管理的生与死
  8. Doris 之Frontend(FE)和Backend(BE)配置
  9. 如何自学python知乎-你们都是怎么学 Python 的?
  10. 视频编解码(十七):视频流错误检查步骤-进程查看内存方法
  11. Python使用pyodbc访问数据库操作方法详解
  12. Mybatis出现Mapped Statements collection already contains value for
  13. GC问题排查实战三-Parallel Scavenge和Parallel Old日志分析
  14. Python3的下载和安装步骤
  15. 友价商城源码插件-百度链接主动提交
  16. 侯立安院士在第五届跨界大会上分享健康建筑病原微生物风险控制
  17. 记一次js文件AES加密的key与iv逆向分析
  18. 玄学资料库(一)NPM、PYPI、DockerHub 备份
  19. Funk吉他学习笔记001 【6 Sick Funk Guitar Grooves From Leo Nocentelli of The Meters】
  20. Xcode 9使用时那些坑

热门文章

  1. Nodejs+Express学习二(Mongoose基础了解)
  2. SQL注入测试平台 SQLol -6.CHALLENGES挑战
  3. java 和 mysql 获取周 星期 的第一天 最后一天 或者 月的 日期(字符串转日期,日期转字符串,日期加减)...
  4. Spark发布1.3.0版本
  5. Ntdsutil对活动目录的管理
  6. 网络安全界永恒不变的10大安全法则
  7. jenkins的基本操作
  8. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
  9. 【转载】浅谈缺陷截图处理
  10. oracle 管道化表函数(Pipelined Table) [转]