lamp架构

一、Apache 进程模式说明

在linux中,我们可以用httpd-l 查看安装的模块是prefork模式还是worker模式

[[email protected] ~]# /usl/local/apache/bin/apachectl  -l|egrep "worker|prefoker"

worker.c

[[email protected] ~]#

或者

[[email protected] ~]# /usr/local/apache/bin/apachectl  -l |sed -n ‘/worker\|prefork/p‘

worker.c

[[email protected] ~]#

prefork模式(默认)

prefork使用的是多个子进程,而每一个子进程只有一个线程,每个进程在某个确定的时间只能维持一个连接。

工作原理:

控制进程最初建立若干个子进程,为了不在请求到来时再生成子进程,所以要根据需求不断的创建新的子进程,最大可以达到每秒32个知道满足需求为止。

worker模式(默认)

worker模式是Apache2.x新引进的模式,是线程与进程的结合,在worker模式下会有多个子进程,每个子进程又会有多个线程。每个线程在某个确定时间只能维持一个连接。

工作原理:

由主控制进程生成若干个子进程,而每个子进程中又包含固定的线程数,各个线程独立处理请求,同样为了不在请求到来时再生成线程,在配置文件中设置了最小和最大空闲线程数及所有子进程的线程总数,如果现有子进程中的线程总数不能满足并发负载,控制进程将派生新的子进程。

安装方法:

在配置编译的过程中,加入参数--with-mpm=worker,如果不加的话系统会采用默认的prefork模式

优点:内存占用比prefork模式低,适合高并发高流量的HTTPD服务

缺点:假如一个线程崩溃,整个进程积极会连同其任何线程一起“死掉”。由于线程共享内存空间,所以一个程序在运行时必须被系统识别为“每个线程都是安全的”。服务稳定性不如prefork模式。

event模式:在非常繁忙的服务器下,以上两种服务器有点吃不消,在worker基础上,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限 制,此时Event MPM方式是最有效的

1.prefork:

<IfModule mpm_prefork_module>

StartServers          5 #服务器开始进程

MinSpareServers       5 #最小空闲进程

MaxSpareServers      10 #最大空闲进程

MaxClients          150 #最大处理请求数,对性能影响最大,默认最大256,再多排队

MaxRequestsPerChild   0 #进程处理的最大请求数,0无限制,可以设置大一点,不用回收

</IfModule>

2.worker:

<IfModule mpm_worker_module>

StartServers          2 #开始进程数

MaxClients          150 #最大处理请求数

MinSpareThreads      25 #最小空闲线程数

MaxSpareThreads      75 #最大空闲线程数

ThreadsPerChild      25 #每个进程可以产生多少线程,最大可以是20000,性能密切相关

MaxRequestsPerChild   0 #线程处理的最大请求数, 0无限制

</IfModule>

worker模式下所能同时处理的请求总数是由子进程总数乘以Threadsperchild值决定的,应该大于等于maxclients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。

提示: 默认最大的子进程总数为16,如需加大时也需要明显的申明serverlimit的值(最大值时20000)

查看Apache的worker下并发连接数:

[[email protected] ~]# pstree -a|grep httpd|wc -l

84

[[email protected] ~]#

3.event就不研究了

二.测试解析

关键点:

1, apachectl -M 查看是否加载libphp5.so

2. httpd.conf 里面是否写对了AddType  Application/x-httpd-php .php

3. php代码格式要写对

4. selinux要关闭

5. deny没有改成allow  2.4 denied  granted

6. 没有加host

2. 配置第一个虚拟主机

删除httpd.conf中的这行前面的警号

#Include conf/extra/httpd-vhosts.conf

vim /usr/local/apache2/con5. 为某个虚拟主机配置用户认证

http://www.lishiming.net/thread-554-1-1.htmlf/extra/httpd-vhosts.conf

2、web防盗链技术

简单的说,就是某些不法的网站,通过在其自身网站程序里未经许可非法调用其他网站的资源,然后在自己的网站上显示这些调用的资源,达到了填充自身网站显示的效果,但是浪费了调用资源网站的网络流量,造成其他网站的带宽及服务压力吃紧,甚至宕机。

网站被盗链的解决方案:

1、根据http referer实现防盗链

在HTTP协议中,有一个表头字段叫referer,使用URL格式来表示从哪里来的链接到当前网页的资源,通过referer可以检测到目标访问的来源网页,如果是资源文件,可以跟踪到显示它的网页地址,一单检测出来源不是本站进行阻止或返回指定页面。 目前Apache,nginx,lighttpd三者都支持根据http referer实现防盗链

2、根据cookie处理

3、通过加密变换访问路径实现防盗链lighttpd有类似的插件mod_secdownload

Apache web服务实现防盗链实战

<VirtualHost *:80>

ServerAdmin [email protected]

DocumentRoot "/var/html/bbs"

ServerName ucode.blog.51cto.com

ServerAlias www.dummy-host.example.com

ErrorLog "logs/bbs-error_log"

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

RewriteEngine On #开启防盗链

RewriteCond %{HTTP_REFERER}!^http://ucode.blog.51cto.com/.*$ [NC]

RewriteCond %{HTTP_REFERER}!^http://ucode.blog.51cto.com/$ [NC]

RewriteCond %{HTTP_REFERER}!^http://ucode.blog.51cto.com/.*$ [NC]

RewriteCond %{HTTP_REFERER}!^http://ucode.blog.51cto.com$ [NC]

RewriteCond .*\.(gif|jpg|swf)$ http://ucode.blog.51cto.com/img/nolink.jpg [ R,NC]

</VirtualHost>

满足以上的黑体部分的就会返回:http://ucode.blog.51cto.com/img/nolink.jpg图片

Listen 80##默认监听的端口是80

PidFile /export/servers/apache2/logs/httpd.pid

LoadModule authn_file_module modules/mod_authn_file.so##加载的模块

User admin ##一般默认设置为admin

Group admin ##一般默认设置为admin

DocumentRoot "/export/servers/apache2/htdocs"##设置你的项目文件路径

ServerAdmin [email protected]       #当服务器报错是,返回客户端,让联系管理员

ServerName localhost:80    ##服务器的名字:端口

AddType application/x-httpd-php .php          让.php文本文件格式也能运行php程序。

1 <Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

Allow from all

</Directory>

#Options:配置在特定目录使用哪些特性,常用的值和基本含义如下:

#ExecCGI: 在该目录下允许执行CGI脚本。

#FollowSymLinks: 在该目录下允许文件系统使用符号连接。

#Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如#index.html),则返回该目录下的文件列表给用户。

#SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件拥有者相同时才可以访问.

Includes 允许服务器端包含。

IncludesNOEXEC 允许服务器端包含,但禁用#exec命令和#exec CGI。但仍可以从ScriptAliase目录使用#include 虚拟CGI脚本。

比如说,没有任何+和-符号:

  1. <Directory /web/docs>
  2. Options Indexes FollowSymLinks
  3. </Directory>
  4. <Directory /web/docs/spec>
  5. Options Includes
  6. </Directory>

则只有  Includes  设置到/web/docs/spec目录上。

然而如果第二个  Options  指令使用了+和-符号:

  1. <Directory /web/docs>
  2. Options Indexes FollowSymLinks
  3. </Directory>
  4. <Directory /web/docs/spec>
  5. Options +Includes -Indexes
  6. </Directory>

那么就会有  FollowSymLinks  和  Includes  设置到/web/docs/spec目录上。

#AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):

#None: 当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。

#All: 在.htaccess文件中可以使用所有的指令。

Order:控制在访问时Allow和Deny两个访问规则哪个优先:

Allow:允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。

Deny:拒绝访问的主机列表。

Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两种方式来实现,一个是在设置文件 httpd.conf(或access.conf)中针对每个目录进行设置

Timeout 300 ##客户程序和服务器连接的超时间隔

KeepAlive On ###在一次连接中传递多个HTTP请求

MaxKeepAliveRequests 100 ###为一次连接可以进行的HTTP请求的最大请求次数

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

ErrorLog logs/error_log #日志的保存位置

LogLevel warn    ##日志级别 debug日志界别,日志就比较多

日志的缺省格式有如下几种:

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

LogFormat "%h %l %u %t "%r" %>s %b" common #common为日志格式名称

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

CustomLog logs/access_log common

格式中的各个参数如下:

%h –客户端的ip地址或主机名

%l –The 这是由客户端 identd 判断的RFC 1413身份,输出中的符号 "-" 表示此处信息无效。

%u –由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 "-" 表示此处信息无效。

%t –服务器完成对请求的处理时的时间。

"%r" –引号中是客户发出的包含了许多有用信息的请求内容。

%>s –这个是服务器返回给客户端的状态码。

%b –最后这项是返回给客户端的不包括响应头的字节数。

"%{Referer}i" –此项指明了该请求是从被哪个网页提交过来的。

"%{User-Agent}i" –此项是客户浏览器提供的浏览器识别信息。

时间: 2024-08-09 01:20:33

lamp架构的相关文章

利用lamp架构搭建Discuz论坛,并实现对数据库的高可用

lamp架构=LAMP指的Linux(操作系统).Apache(HTTP 服务器),MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web 服务器. #############源码安装php########### tar jxf php-5.6.20.tar.bz2 cd php-5.6.20 解决依赖性: yum install freetype-devel libmcrypt-2.5.8-9.el6.x86_64.rpm net-snmp-d

LAMP架构搭建+Discuz论坛搭建【weber出品必属精品】

一.     本机简介: 本机系统: CentOS-6.4-x86_64 主机名:oracle.ywb IP地址:192.168.146.129 二.     在Linux环境下安装Apache步骤 首先将准备好的文件通过PSCP发送至Linux的/Root/test/soft目录下 在windows下按住Ctrl+R,打开运行,输入CMD进入DOS命令行.在dos命令行中使用pscp –scp  命令将要上传的文件上传至Linux中. 上传成功后.我们总共要安装四个文件.第一个我们首先解压:a

部署LAMP架构及其应用

部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ~]# rpm -e php php-cli php-ldap php-common php-mysql --nodeps #将RPM方式安装的php及相关依赖包(如果已存在)卸载 ~]# rpm -ivh zlib-devel #安装光盘自带的支持压缩的依赖包 ~]# rpm -ivh libxm

LAMP架构搭建以及基于LAMP架构的主流论坛和博客搭建过程详解

了解网站架构的朋友都知道,现在很多网站的架构都是采用LAMP(Linux+Apache+Mysql/Mariadb+Php)的,至于LAMP架构本身我们就不做过于深入的探讨了,今天我给大家分享的是关于如何搭建LAMP构架,以及如何基于lamp架构去搭建目前国内比较流行的两大开源论坛(phpwind.discuz)一大开源博客(wordpress),通过这个过程也就能让大家明白我们经常上的论坛以及博客,包括包括我们访问的各个网站到底是如何工作起来的. 注意:为了方便给大家展示实验效果,我们就直接关

Linux之LAMP架构搭建配置

Linux之LAMP架构搭建配置 LAMP简介 LAMP定义指Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN 等之外,在软件架构上需要重点关注下面几个环节: 使用高性能的操作系统 (OS) . 高性能的网页服务器 (Web Server) .高性能的数据库(Data

【Linux】LAMP架构之以模块方式让php和httpd搭档工作

LAMP就是:Linux,Apache,Mysql,PHP的首字母缩写. 实验环境 Linux :CentOS-3 2.6.32-431.el6.x86_64 Apache:httpd-2.4.16.tar.gz Mysql :mysql-5.5.24.tar.gz PHP   :php-5.6.11.tar.bz2 安装顺序为:Apahce --> Mysql --> PHP 实验步骤 方便实验先关闭iptables和selinux [[email protected] ~]# servic

linux搭建LAMP架构服务

实验环境以及目标:一台Rad Hat linux 6.5-64位操作系统作为服务器,搭建LAMP架构,搭建动态PHP以及BBS论坛.一台windows 7-32位虚拟机作为客户端能够正常访问linux服务器所搭建的服务. 实验步骤总体分为:1.使用linux先搭建apache网站服务:然后搭建MySQL数据库用来存放论坛文件:然后是搭建PHP服务,用于加载论坛动态模块:最后是BBS论坛.最最后再搭建一个DNS服务用来解析域名服务. 下面是详细操作过程,由于前面已经写了关于apache和MySQL

LAMP架构演进到LAMPGC,再演进到LNMLGC(linux+nginx+mysql+lua+gearman+C)

LAMP是一个大众的架构了,linux+apache+mysql+php 在我们系统的架构中,做了进一步的演进,linux+apahce+mysql+php+gearman+C php作页面的展示 核心业务逻辑由C语言实现,php通过gearman中间件调用C任务 由于apache在高并发方面不太给力,因此在需要高并发的场景中,我们进一步演进,linux+nginx+mysql+php+lua+gearman+C 页面部分由nginx+fastcgi+php-fpm来展示 高并发的业务调用由ng

LAMP架构网站搭建

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台. 随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注. 目前LAMP架构是大多数中小企业最青睐的PHP架构选择,也是众多Linux SA喜欢选择

使用HAproxy,keepalived实现简单LAMP架构的负载均衡与高可用

整个架构简单拓扑图如下所示: 其中: 192.168.10.66与192.168.10.6两台主机提供httpd服务 192.168.10.27与192.168.10.87两台主机提供varnish缓存服务 192.168.10.17与192.168.10.77两台主机安装HAProxy实现客户端请求的调控 192.168.10.7主机安装mariadb,提供数据存储服务 服务器与客户端连接ip地址为172.16.10.99/16, 一.httpd服务 1.分别于192.168.10.6与192