linux服务篇(九)Apache服务

HTTP概述

WWW的目的就是使信息更易于获取,而不管它们的地理位置在哪里。当使用超文本作为WWW文档的标准格式后,人们开发了可以快速获取这些超文本文档的协议—HTTP协议,即超文本传输协议。

HTTP是应用级的协议,主要用于分布式、协作的信息系统。HTTP协议是通用的、无状态的,其系统的建设和传输与数据无关。HTTP也是面向对象的协议,可以用于各种任务,包括名字服务、分布式对象管理、请求方法的扩展、命令等。

在Internet上,HTTP通信往往发生在TCP/IP连接上,其默认的端口为80,也可以使用其他端口。

web服务

web服务的实现采用客户/服务器模型

客户机运行www客户程序-浏览器,它提供良好、统一的用户界面。浏览器的作用就是解释和显示web页面,响应用户的输入请求,并通过HTTP协议将用户请求传递给web服务器。

web服务器运行服务器程序,它最基本的功能是侦听和响应客户端的HTTP请求,向客户端发出请求处理结果信息。

web服务通常可以分为两种:静态web服务和动态web服务。

web服务工作原理

Web浏览器使用HTTP命令向一个特定的服务器发出Web页面请求。

若该服务器在特定端口(通常是TCP 80端口)处接收到Web页面请求后,就发送一个应答并在客户和服务器之间建立连接

服务器Web查找客户端所需文档,若Web服务器查找到所请求的文档,就会将所请求的文档传送给Web浏览器。若该文档不存在,则服务器会发送一个相应的错误提示文档给客户端。Web浏览器接收到文档后,就将它显示出来。

当客户端浏览完成后,就断开与服务器的连接。

LAMP平台概述

什么是LAMP

目前最为成熟的一种企业网站应用模式,可提供动态Web站点应用及开发环境

构成组件

Linux、Apache、MySQL、PHP/Perl/Python

LAMP的优势

成本低廉

可定制、易于开发

方便易用、安全和稳定

Apache简介

Apache起源

根据NCSA的服务器发展而来

源于 A Patchy Server,著名的开源Web服务软件

1995年时,发布Apache服务程序的1.0版本

由Apache软件基金会(ASF)负责维护

最新的名称为 “Apache HTTP Server”

市场占有率60%左右

官方站点:http://httpd.apache.org/

主要特点

开发源代码、跨平台应用

支持多种网页编程语言

模块化设计、运行稳定、良好的安全性

LAMP环境安装软件

httpd (提供 Apache 主程序)

mysql (MySQL 客户端程序)

mysql-server (MySQL 服务器程序)

php (PHP 主程序含给 apache 使用的模块)

php-devel (PHP 的发展工具,这个与 PHP 外挂的加速软件有关)

php-mysql (提供给 PHP 程序读取 MySQL 数据库的模块)

Apache主要的文件:

/var/www/cgi-bin/

默认给一些可执行的 CGI (网页程序) 程序放置的目录;当你输入http://localhost/cgi-bin/ 时所显示的数据所在。

/var/log/httpd/ 日志所放置的位置

/usr/sbin/apachectl

这个就是 Apache 的主要执行脚本,它可以主动的侦测系统上面的一些设定值,好让你启动 Apache 时更简单。

/usr/sbin/httpd 是主要的 Apache 二进制执行文件

/usr/bin/htpasswd 做用户验证来生成验证文件的命令

/var/www/cgi-bin/

默认给一些可执行的 CGI (网页程序) 程序放置的目录;当你输入http://localhost/cgi-bin/ 时所显示的数据所在。

/var/log/httpd/ 日志所放置的位置

/usr/sbin/apachectl

这个就是 Apache 的主要执行脚本,它可以主动的侦测系统上面的一些设定值,好让你启动 Apache 时更简单。

/usr/sbin/httpd 是主要的 Apache 二进制执行文件

/usr/bin/htpasswd 做用户验证来生成验证文件的命令

mysql主要的文件

/etc/my.cnf

这个是 MySQL 的配置文件,包括你想要进行 MySQL 数据库的优化,或者是针对 MySQL 进行一些额外的参数指定, 都可以在这个文件里面达成

/var/lib/mysql/

这个目录则是 MySQL 数据库文件放置的位置,通过备份这个目录就可以备份数据库

PHP主要的文件

/etc/httpd/conf.d/php.conf 安装后自动生成

/etc/php.ini

PHP的主要配置文件,包括你的 PHP 能不能允许使用者上传档案?能不能允许某些低安全性的标志等等, 都在这个配置文件当中设定!

/usr/lib64/httpd/modules/libphp5.so

PHP这个软件提供给 Apache 使用的模块,必须存在!

/etc/php.d/mysql.ini, /usr/lib64/php/modules/mysql.so

PHP是否可以支持 MySQL 接口?是由 php-mysql 软件提供的

/usr/bin/phpize, /usr/include/php/

如果你想要安装类似 PHP 加速器以让浏览速度加快的话,那么这个文件与目录就得要存在,否则加速器软件无法编译成功,这两个数据是 php-devel 软件所提供的。

httpd.conf配置文件

httpd.conf配置文件主要由全局环境、主服务器配置和虚拟主机3个部分组成。每部分都有相应的配置语句,该文件所有配置语句的语法为“配置参数名称 参数值”的形式。

httpd.conf中每行包含一条语句,行末使用反斜杠“\”可以换行,但是反斜杠与下一行中间不能有任何其他字符(包括空白)。

httpd.conf的配置语句除了选项的参数值以外,所有选项指令均不区分大小写,可以在每一行前用“#”号表示注释。

/usr/local/apache2/conf/httpd.conf

全局配置

ServerRoot

用于指定指定守护进程httpd的运行目录,httpd在启动之后自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个路径之下。

Timeout 60

用于定义客户程序和服务器连接的超时间隔,超过这个时间间隔(以秒计)后,服务器将断开与客户机的连接。

PidFile run/httpd.pid 存放PID的文件位置。

Listen 80 设定http服务的默认端口。

User/Group 设定服务器程序的执行者与属组。

KeepAlive On

在HTTP1.0中,一次连接只能作传输一次HTML请求,而KeepAltve参数用于支持HTTP1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTML请求。虽然只有较新的浏览器才支持这个功能,但最好还是使用“on”这个选项。

MaxKeepAliveRequests 500

MaxKeepAliveRequests为一次连接可以进行的HTML请求的最大请求次数。将其值设为0,将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求大多的页面,通常达不到这个上限就完成连接了。

KeepAliveTimeout 15

KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,当时间间隔超过了这个参数设置的值之后,服务器就断开连接。

prefork 和 work 与内存管理有关

默认采用prefork,由/etc/sysconf/httpd文件决定

/usr/sbin/httpd:使用 prefork 模块;

/usr/sbin/httpd.worker:使用 worker 模块。

worker 模块占用的内存较小,对于流量较大的网站来说,是一个比较好的选择。prefork 虽然占用较大的内存,不过速度与 worker 差异不大,并且 prefork 内存使用设计较为优秀,可以在很多无法提供 debug 的平台上面进行自我除错,默认适合小型网站。

MaxClients

服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数MaxClients就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之问进行切换来为这些客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。如果这个值设置得较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,可以适当增加这个值的设置。

MaxRequestsPerChild

使用于进程方式的Web务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出于进程的系统操作,这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不会造成这些生成、退出进程引起的系统消耗。Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大地提高了性能。

ServerAdmin:管理员邮箱

ServerName:网站服务器的域名

DocumentRoot:网页文档的根目录

DirectoryIndex:默认的索引页文件

ErrorLog:错误日志文件的位置

CustomLog:访问日志文件的位置

LogLevel:记录日志的级别,默认为warn

Include:需要包含进来的其他配置文件

AddDefaultCharset UTF-8 强制客户端用UTF-8 来显示网页

局部配置参数

可以使用<Directory 目录路径>和</Directory>这对语句为主目录或虚拟目录设置权限,它们是一对容器语句,必须成对出现,它们之间封装的是具体的设置目录权限语句,这些语句仅对被设置目录及其子目录起作用。

AllowOverride (允许的覆写参数功能): 表示是否允许额外配置文件 .htaccess 的某些参数覆写

测试性能

ab命令:

Apache Benchmark,Apache基准测试工具

格式:ab [-q] -c 并发请求数 -n 总的请求数 [http://]域名[:端口]/路径

构建虚拟web主机

虚拟Web主机

即在同一台服务器中运行多个Web站点的应用,其中每一个站点并不独立占用一台真正的计算机

httpd支持的虚拟主机类型

基于域名的虚拟主机

构建2个虚拟Web站点:

www.benet.com,IP地址为 173.17.17.11

www.accp.com,IP地址为 173.17.17.11

在浏览器中访问这两个域名时,分别显示不同的内容

[[email protected] htdocs]# vim /etc/httpd/conf/httpd.conf

……

NameVirtualHost 173.17.17.11

<VirtualHost 173.17.17.11>

DocumentRoot /var/www/html/benetcom

ServerName www.benet.com

</VirtualHost>

<VirtualHost 173.17.17.11>

DocumentRoot /var/www/html/accpcom

ServerName www.accp.com

</VirtualHost>

基于IP地址的虚拟主机

构建2个虚拟Web站点:

www.benet.com,IP地址为 173.17.17.11

www.accp.com,IP地址为 192.168.4.1

在浏览器中访问这两个IP时,分别显示不同的内容

[[email protected] htdocs]# vi /etc/httpd/conf/httpd.conf

……

<VirtualHost 173.17.17.11>

DocumentRoot /var/www/html/benetcom

ServerName www.benet.com

</VirtualHost>

<VirtualHost 192.168.4.11>

DocumentRoot /var/www/html/accpcom

ServerName www.accp.com

</VirtualHost>

基于端口的虚拟主机

构建2个虚拟Web站点:

www.benet.com,IP地址、端口为 173.17.17.11:80

www.accp.com,IP地址、端口为 173.17.17.11:8080

在浏览器中访问这两个端口时,分别显示不同的内容

[[email protected] htdocs]# vi /etc/httpd/conf/httpd.conf

……

Listen 173.17.17.11:80

Listen 173.17.17.11:8080

<VirtualHost 173.17.17.11:80>

DocumentRoot /var/www/html/benetcom

ServerName www.benet.com

</VirtualHost>

<VirtualHost 173.17.17.11:8080>

DocumentRoot /var/www/html/accpcom

ServerName www.accp.com

</VirtualHost>

建立系统用户的个人主页

1. 修改httpd.conf,启用个人主页功能

UserDir public_html

确认目录区域设置

2. 建立个人主页测试网页

~/public_html/index.html

添加权限:chmod o+x /home/jerry/

3. 重新启动httpd服务

service httpd restart

4. 访问测试

http://www.benet.com/~user

httpd服务的访问控制

基于用户的访问控制

添加认证授权设置

[[email protected] ~]# vi /etc/httpd/conf/httpd.conf

……

<Directory "/usr/local/awstats/wwwroot">

……

AuthName "AWSTATS "

AuthType Basic

AuthUserFile /usr/local/awstats/wwwroot/.htpasswd

require valid-user

</Directory>

……

基于用户的访问控制

创建存储认证用户账号及口令的文件

需使用htpasswd工具

[[email protected] apache2]# htpasswd -c \

> /usr/local/awstats/wwwroot/.htpasswd awuser

基于用户的访问控制,也可以在用户访问的目录下建立.htaccess文件来进行控制

还要针对目录的AllowOverride 写成authconfig

也要建立用户认证文件

基于客户端地址的访问控制

Order配置项,定义控制顺序

先允许后拒绝,默认拒绝所有:Order allow,deny

先拒绝后允许,默认允许所有:Order deny,allow

Allow、Deny配置项,设置允许或拒绝的地址

https安全访问

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS默认使用TCP的443端口

SSL工作时分为2个阶段:

服务器认证阶段

客户端认证阶段(可选)

Apache要安装openssl

Apache要安装mod_ssl模块

Apache的ssl配置文件与ssl相应的模块会被相应的存放在以下的目录中。

/etc/httpd/conf.d/ssl.conf

/etc/httpd/modules/mod_ssl.so

默认安装后就支持https了

生成自签名证书

先建立一把private key预备提供给SSL证书签名要求所用;

最后建立SSL证书文件(test certificates)。

使用字签证书

[[email protected] certs]# vim /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/pki/tls/certs/benet.crt SSLCertificateKeyFile /etc/pki/tls/certs/benet.key

如想实现https和http访问分开,直接修改ssl.conf文件,启用虚拟主机即可

PHP简介

特点:

1、  跨平台:PHP程序可以运行在UNIX、Linux或Windows操作系统下。

2、嵌入HTML:因为PHP语言可以嵌入到HTML内部,所以PHP很容易学习。

3、简单的语言:与Java和C++不同,PHP语言坚持以基本语言为基础,然而它的功能强大到足以支持任何类型的Web站点。

4、效率高:和其他的解释性语言相比,PHP系统消耗较少的系统资源。当PHP作为Apache Web服务器的一部分时,运行代码不需要调外部二进制程序,服务器解释脚本不需要承担任何额外负担。

5、支持各种数据库:用户可以使用PHP存取Oracle、Sybase、MS-SQL、MySQL、PostgreSQL、dBase、FilePro和Informix等类型的数据库。

6、文件存取:PHP有许多支持文件存取函数。

7、文本处理:PHP有许多函数处理字符串,其中包括模式匹配的能力。

8、复杂的变量:PHP支持标量、数组、关联数组等变量,这给用户提供了支持其他的高级数据结构的坚实基础。

9、支持图像处理:用户可以使用PHP动态创建图像。

测试同php和mysql的结合

安装论坛进行测试

准备论坛要安装的数据库

下载论坛程序代码并解压到网站根目录

访问网站,进行图形界面安装

使用管理中心对论坛进行设置

时间: 2024-08-26 12:37:56

linux服务篇(九)Apache服务的相关文章

Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下

在Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下常用的命令,需要的朋友参考下吧(http://www.hnkjlb.com) linux系统为Ubuntu 一.Start Apache 2 Server /启动apache服务 /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start 二. Restart Apache 2 Server /重启apache服务 /etc/init.d/apa

linux 里yum搭建apache服务

1 用过yum安装httpd 2 启动apache服务 3 通过浏览器查看默认的web界面 4 创建自己的网页 5测试 6 进入apache的配置文件 7 编辑主配置文件,创建基于域名的虚拟主机 8 在 客户端测试 9 对虚拟站点进行认证 10 增加apache认证用户 11 重新启动apache服务,并且关闭iptables 12 在客户端验证

【Linux】编译安装Apache服务

实验环境 使用Linux的系统为CentOS6.5 x64 安装Apache所需要的源码包有 httpd-2.4.16.tar.gz apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz 下载地址:http://pan.baidu.com/s/1skcEHFB 实验配置 首先安装如下编译工具以及软件包 [[email protected] ~]# yum -y install gcc gcc-c++ make pcre-devel 编译安装apr和apr-util这两个包

超详细 值得收藏 linux CentOS 7 配置Apache服务【转发+新增】

一.Apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性(尽管不断有新的漏洞被发现,但由于其开放源代码的特点,漏洞总能被很快修补.因此总合来说,其安全性还是相当高的.).被广泛使用,是最流行的Web服务器软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 软件图标  二.安装Apache httpd 安装httpd以配

Apache服务的安装及工作模式介绍

博文大纲: 一.apache服务器的安装及功能介绍: 二.Apache服务的三种工作模式详解: 三.修改apache的工作模式: 四.apache工作模式的优化与修改: 五.进程与线程的区别. 前言 我们都知道Linux上常见的web服务器有:apache.nginx.tomcat! 其区别如下: apache:模块化服务器,支持模块较多.采用servlet处理模型,同步阻塞模型,工作模式多变,对于高并发的场景处理速度会比较慢,运行稳定. nginx:轻量级web服务器,自身支持模块较少,需要借

如何在Windows平台下安装或卸载Apache服务

安装 下载资源包 在下载链接(<–点这里)处下载: 然后,选择你要下载的版本,我选择的是最新版:2.4.16,点击该链接: 因为我的是Windows平台,所以我选择:Files for Microsoft Windows,继续点击: 此处,有5处下载源,我选择的是:ApacheHaus,继续点击: 到了这里就要注意了!针对自己系统的版本,选择合适的版本!我的是64位系统,所以,我选择的是下方的:Apache 2.4.16 x64 ,然后,点击Download Locations下方的那个小国旗,

Apache服务之php/perl/cgi语言的支持

安装php软件包: 安装文本浏览器 安装apache的帮助文档: 测试下是否ok 启动Apache服务关闭火墙: 编辑一个php测试页测试下: perl语言包默认系统已经安装了,直接测试下: Apache服务队cgi语言的配置: 测试下是否ok 在apache服务的主目录下有index.Php文件和apache.html文件,为什么要先执行php文件呢? apache的配置文件最前面写的是这些服务: 所以apache服务启动时会优先考虑这下面的服务 Apache服务之php/perl/cgi语言

centos7之最基本的apache服务

实验环境:只需要一台centos7服务端即可,地址设为192.168.1.3 关闭selinux和防火墙 实验步骤: 1.安装 apache服务相关的软件包 #yum -y install httpd httpd-devel 2.修改apache主配置文件 vim /etc/httpd/conf/httpd.conf 修改内容如下图所示: 3.创建默认文档,并添加内容 vim /var/www/html/index.html 然后输入网站内容 随便写几个字就行,比如就写这是我的第一个网站 4.检

如何搭建apache服务?

为了日后便于查询,本文所涉及到的所有命令集合如下: chkconfig iptables off #关闭防火墙命令 在Centos7中使用的是chkconfig firewalld off vi /etc/sysconfig/selinux #打开selinux配置文件 yum install httpd -y #安装httpd软件 vi /etc/httpd/conf/httpd.conf #配置httpd文件 service httpd restart #重启httpd服务 什么是apach

不就是抽个血吗,至于么-jQuery,Linux完结篇

hi 趁着周一去抽血化验,真开心...下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话.....至于么.. 还有在教研室的30天就可以肥家了,凯森凯森.今天不想干活(哪天想干过我就问问),学学jquery吧. 1.jQuery 十.UI型插件 10.1 拖曳插件——draggable 拖曳插件draggable的功能是拖动被绑定的元素,当这个jQuery UI插件与元素绑定后,可以通过调用draggable()方法,实现各种拖曳元素的效果,调用格式如下: $(selector). d