Linux笔记-Apache

很久以前就有写博客的想法,但怕写不好,一直没有开始写。任何事情,都得有个开始吧,都得要迈出第一步吧,所以今天写这篇Web服务器的文章,来迈出我写博客的第一步,妙笔生花的文字我写不出来,记流水账我总会吧。

什么是Web服务器

Web服务器一般是网站服务器,是安装在计算机中的一个程序,可以向浏览器等Web客户端发送文档,你可以在Web服务器上放置数据文件,让全世界的人来浏览。目前比较主流的几个Web服务器软件包括世界使用量排名第一的apache,轻量级,提供反向代理功能,支持高并发的nginx,还有微软的iis服务器,今天先来介绍apache服务器。

Apache简介

Apache服务器的全称是 Apache HTTP Server,支持多个平台,速度快,运行稳定,可以通过简单的api扩展,把php/Python等解释器加入到服务器中,所以Apache的应用十分广泛。

在Internet开始流行的时候,出现了http协议,美国的一所大学开始组织研究生编写基于http协议的Server端程序和Client,因为这个项目是出于学术的目的,进行了一段时间后解散了,并把项目开源了。由于Internet的发展,对http Server的需求越来越大,公开源码的项目成了研究的起点,很多黑客(顶尖的计算机高手)给程序提交代码,增加功能,并对出现的bug加以修复,这个服务器端程序不断完善,最终成为了今天的Apache服务器,而那个Client最终演变成了今天的firefox。

Apache名字的由来

Apache之父说:我选择apaceh这个名字是选择它所包含的积极的含义。阿帕奇族是最后一个屈服于美国政府的名族。当时我担心大公司迟早会参与竞争并‘教化’这块最早的互联网之地,所以在我看来,阿帕奇是一个很好的名字。

apache服务器的安装

linux下软件的安装方式有两种,源码安装和rpm安装,源码安装优点是用编译器编译后的代码更贴近硬件,运行效率更高,编译安装还能提供很多编译的参数,可以最大化定制软件,缺点就是编译过程比较耗时,编译过程中出现错误不好解决,像apache服务器是用c语言写的,编译时如果出现什么报错信息,就要去搜索引擎查明找原因,然后修改c语言的代码,对没有c语言基础的还是挺困难的。rpm(二进制文件)安装,已经提前帮你编译成了二进制代码,省去了编译时间,缺点就是相对于编译安装的软件运行效率稍低,不能定制安装时的一些参数。

如果你从apache官网下载apache安装也挺麻烦的,还要解决依赖关系的问题。什么是依赖关系呢,举个windows的例子,运行某个游戏它提示你缺少*.dll文件,安装某软件时要你安装.net库,一个程序的运行需要另一个程序提供一些支持,这就是依赖关系。windows还好点,都是微软一家开发的,很多依赖关系根本不需要用户解决。而linux就不同了,它的整个系统是由很多开发组共同完成的,linux的软件包是很灵活的,很多软件都不是必须的,有些功能可有很多软件提供。安装某个软件时可能需要另一个软件的功能支持,而这个软件可能还需要其他软件的功能支持,通常安装一个软件会依赖数十个文件,上百个都有可能,安装一个软件就要安装这么多软件,操作繁琐并且耗费时间的,有时还会碰上环形依赖。

好在各个linux系统都提供了依赖包管理工具,像RedHat和Centos下提供的的yum工具,他可以自动解决所有依赖关系,并全部下载安装,无须自己一次次繁琐地下载安装,安装apache只需要运行yum -y install apache命令就可以完成apache的安装,-y 的意思是遇到所有提示都选yes。

其实除了源码安装和rpm安装外,还有一种安装方式,脚本安装。在windows下搭建网站环境运行环境也挺麻烦的,好在有wamp server或Xampp,phpstudy等软件包,安装了它们后那些常用的软件apache,mysql,php,phpmyadmin都集成了,不用你一个一个去下载,并配置关联它们。在linux下有没有这种程序呢,那就是shell脚本了,所谓脚本安装,就是别人把程序的安装过程都写在一个shell脚本里,他的本质还是用到了源码安装和rpm安装,所以没把它门归到那两类中。一个以前需要花一天时间安装的软件,用脚本安装包的话,运行一下脚本,进行一些简单的配置,它便帮你进行那一系列繁琐地安装过程。脚本安装的坏处就是不能定制,软件安装在哪,软件的一些参数设置,脚本的作者都已近帮你写好了,除非是你自己写的脚本或者是自己会修改脚本。在这里给大家推荐我自己用的一款脚本 名字叫oneinstack,大家自己搜索

apache主配置文件

前面啰嗦了那么一堆,写了一下apache的安装过程,现在开始写这篇文章中最重要的内容,apache的主配置文件httpd.config中一些常见的配置项。
主配置大约500多行,但其中只有一小部分的apache指令,大多数都是注释,去掉注释大约100多行,下面是配置文件的内容,通过翻译和搜索引擎,我给每条指令都加上了注释。

//是否显示apache的版本信息
ServerSignature On
//在出现错误页的时候不服务器操作系统的名称
ServerTokens Full

//整个配置文件的根路径
ServerRoot "G:/wamp/wamp/bin/apache/apache2.4.9"
Define APACHE24 Apache2.4

//监听的服务器和端口号
Listen 0.0.0.0:80
Listen [::0]:80

//apache是基于模块化设计的,在此设置加载一些动态模块
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule php5_module "G:/wamp/wamp/bin/php/php5.5.12/php5apache2_4.dll"

//设置apache运行账户及账户组
<IfModule unixd_module>
User daemon
Group daemon
</IfModule>

//管理员的邮箱,apache运行出现严重错误可以向管理员发邮件
ServerAdmin admin@example.com
//主机名
ServerName localhost:80
//是否进行域名的解析
HostnameLookups Off
//网站的根目录
DocumentRoot "G:/wamp/wamp/www/"

//apache下文件的访问权限,下面更具体的设置可以覆盖此处设置
<Directory />
    //.htaccess是否可用
    AllowOverride none
    Require all denied
</Directory>

//网站的一些设置
<Directory "G:/wamp/wamp/www/">
    //Indexes允许查看目录树,设置-Indexes可以关闭目录树
    Options Indexes FollowSymLinks
    //是否支持.htaccess
    AllowOverride all
Require all granted
Order Deny,Allow
//允许谁访问 
Allow from all 
</Directory>

//定义一些首页文件
<IfModule dir_module>
    DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>

//单个文件的权限
<Files ".ht*">
    Require all denied
</Files>

//错误日志
ErrorLog "G:/wamp/wamp/logs/apache_error.log"
//定义记录错误的级别
LogLevel warn

//定义写日志的一些格式
<IfModule log_config_module>
    LogFormat "%h %l %u %t \\\\\\\\\\\\\\\\"%r\\\\\\\\\\\\\\\\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \\\\\\\\\\\\\\\\"%r\\\\\\\\\\\\\\\\" %>s %b
    </IfModule>
    //日常日志
    CustomLog "G:/wamp/wamp/logs/access.log" common
</IfModule>

//在不同目录下有不同网站,但在同一个域名下,这时可以配置alias
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "G:/wamp/wamp/bin/apache/apache2.4.9/cgi-bin/"
</IfModule>

//文件夹权限的设置
<Directory "G:/wamp/wamp/bin/apache/apache2.4.9/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

//设置一些文件类型对应的处理方式
<IfModule mime_module>
    TypesConfig conf/mime.types
    AddEncoding x-compress .Z
    AddEncoding x-gzip .gz .tgz
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php3
</IfModule>


EnableSendfile off
AcceptFilter http none
AcceptFilter https none
//引入一些配置文件,把一些配置项写入独立的文件,让主配置文件显得简洁
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
//进行条件判断,如果加载了proxy_html_module模块则包含
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
//代表引入 G:/wamp/wamp/alias 下的所有文件
Include "G:/wamp/wamp/alias/*"

最后

行了,一篇简单的博客。虽然花了我三个多小时,但收获也是巨大的。第一篇博客,加油!!

文章同时发布在钟声的博客,感谢您的阅读。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,495评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,678评论 6 342
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,493评论 18 399
  • 五月的阳光,温暖,明媚,普洒于大地,为世界暖色,似乎在它的怀抱里,一切阴冷,冰寒都消失的无影无踪…… 美式乡村似的...
    墨染xuan阅读 316评论 0 0
  • 九月的阳光,温暖而不张扬 我躲在这里 能看到微风吹起细小而青葱的麦浪 木叶泛黄 与思念在一起,落地成伤 山与青烟,...
    七汐子阅读 360评论 2 2