导航:首页 > 源码编译 > mpm系统源码

mpm系统源码

发布时间:2024-12-16 16:35:09

① 有时打开百度会跳转成一个空白页,然后弹几个广告,各位帮我看看这个网页的源代码代表什么

你的浏览器首页被春晌篡改了,用安全卫士清除后锁定你需要的首页,这些网页的源代码姿烂要追索起来比较困难,需要专业人士来做扒册锋,不过这些网址和360并没有任何关系

php工程师都要学习什么就业方向如何

PHP工程师就业方向有:
编写一定量的PHP代码,学习会使用一些框架。
拓展熟悉Mysql、Web服务器Apache/Nginx,linux和HTTP协议。搞清楚它们之间的通信模式。
学习“设计模式”,写出优美的代码结构,减少累赘和代码重复,在代码后期维护会带来极大的好处。可以适当去看看框架的PHP源码,里面往往有大量设计模式的应用思想。学习对PHP原生语法的深入了解,了解各种PHP拓展在PHP中扮演的作用,PHP优化。
进一步搞清楚PHP和数据库、存储、Web服务器的通信原理(prefork/worker/event MPM,PHP-fpm),阅读PHP内核资料,深入学习Linux原理层。
深入底层路线:深入看下PHP源码(C语言),学习编写PHP拓展。或者走架构师道路,搞清楚Web系统架构(负载均衡、集群部署、容灾保护等),PHP在中间如何将它们连接在一起的。

PHP可以做的工作:
一、服务端脚本
服务器脚本运行模式需要具备3个条件:PHP解析器(CGI或者服务器模块)、Web服务器、Web浏览器。
具体执行流程:首先运行Web服务器,然后安装并配置PHP,最后可以用Web浏览器访问PHP程序的输出,即浏览服务端的PHP页面(或数据输出)。
二、命令行脚本
通过命令行模式运行PHP脚本,这种模式下不需要服务器的支持或者依赖浏览器的触发,在命令行脚本模式下仅需要PHP解析器来执行。通常这种方法被用在Windows和Linux平台下做日常运行脚本使用,如某些守护程序等。当然这些脚本也可以用来处理简单的文本。
三、编写客户端的GUI应用程序
对于基于窗口式的应用程序来说,PHP或许不是一种最好的语言,但是如果您非常精通PHP,并且希望在您的客户端应用程序中使用PHP的一些高级特性,您可以利用PHP-GTK来编写这些程序。用这种方法,您还可以编写跨平台的应用程序。PHP-GTK是PHP的一个扩展,在通常发布的PHP包中并不包含它。
PHP的就业前景是很不错的。

③ 如何在不卸载现有OpenSSL的情况下源码安装配置新版OpenSSL+Apache

首先是把新版本OpenSSL的安装路径加入$PATH
sudo gvim ~/.bashrc在文件末尾加上:
PATH="$PATH:/usr/local/openssl/bin:"export PATH然后保存
将/usr/bin/openssl改名
/usr/bin$ sudo mv openssl openssl0.9.8这样的就可以在命令行中直接使用新版的OpenSSL了
$ openssl version -aOpenSSL 1.0.1c 10 May 2012built on: Sun Jul 22 20:43:26 CST 2012platform: linux-elfoptions: bn(64,32) rc4(8x,mmx) des(ptr,risc1,16,long) idea(int) blowfish(idx) compiler: gcc -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASMOPENSSLDIR: "/usr/local/openssl/ssl"变更include头文件:
/usr/include$ sudo mv openssl openssl0.9.8/usr/include$ sudo cp -r /usr/local/openssl/include ./还需要重新编译Apache才能使用新版的OpenSSL
$ ./configure --prefix=/usr/local/apache2.4 --with-layout=Apache --enable-molues=most --enable-mods-shared=all --with-mpm=prefork --with-ssl=/usr/local/openssl注意最后一句是启用新版OpenSSL的关键
然后就是套路了,make && make install
配置……
然后测试一下,证明已经可以用的一个证据是:
./ab -t 5 -c 100 -n 20000 https://127.0.0.1/index.htmlThis is ApacheBench, Version 2.4 (OpenSSL 1.0.1c 10 May 2012)看来以后要多用源码安装,少用系统预编译的包,不然可更新软件可真是麻烦呀

④ 怎么查看服务器安装好了 prefork

1、RedHat Linux下查看apache版本号 在Apache安装目录bin下,使用以下命令查看即可。 使用命令:./httpd -v 示例: 2、查看Apache当前工作模式 Apache有prefork和worker工作模式 使用命令:./apachectl –l 示例: 从以上结果可知,当时httpd工作在prefork模式下。 在configure时,可以通过指定参数,将工作模式设置为worker模式或prefork模式。 使用命令:./configure --with-mpm=worker 示例:设置为worker模式 Apache服务的两种工作模式详解: prefork的工作原理及配置 如果不用“--with-mpm”显式指定某种MPM,prefork就是Unix平台上缺省的MPM。它所采用的预派生子进程方式也是Apache 1.3中采用的模式。prefork本身并没有使用到线程,2.0版使用它是为了与1.3版保持兼容性;另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。 若使用prefork,在make编译和make install安装后,使用“httpd -l”来确定当前使用的MPM,应该会看到prefork.c(如果看到worker.c说明使用的是worker MPM,依此类推)。再查看缺省生成的httpd.conf配置文件,里面包含如下配置段: <IfMole prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfMole> prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。 MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大,但如果设的值比MinSpareServers小,Apache会自动把其调整为MinSpareServers+1。如果站点负载较大,可考虑同时加大MinSpareServers和MaxSpareServers。 MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了“MaxRequestsPerChild”个请求后将自动销毁。0意味着无限,即子进程永不销毁。虽然缺省设为0可以使每个子进程处理更多的请求,但如果设成非零值也有两点重要的好处: ◆ 可防止意外的内存泄漏; ◆ 在服务器负载下降的时侯会自动减少子进程数。 因此,可根据服务器的负载来调整这个值。个人认为10000左右比较合适。 MaxClients是这些指令中最为重要的一个,设定的是Apache可以同时处理的请求,是对Apache性能影响最大的参数。其缺省值150是远远不够的,如果请求总数已达到这个值(可通过ps -efgrep httpwc -l来确认),那么后面的请求就要排队,直到某个已处理请求完毕。这就是系统资源还剩下很多而HTTP访问却很慢的主要原因。系统管理员可以根据硬件配置和负载情况来动态调整这个值。虽然理论上这个值越大,可以处理的请求就越多,但Apache默认的限制不能大于256。如果把这个值设为大于256,那么Apache将无法起动。事实上,256对于负载稍重的站点也是不够的。在Apache 1.3中,这是个硬限制。如果要加大这个值,必须在“configure”前手工修改的源代码树下的src/include/httpd.h中查找256,就会发现“#define HARD_SERVER_LIMIT 256”这行。把256改为要增大的值(如4000),然后重新编译Apache即可。在Apache 2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients。下面是prefork配置段: <IfMole prefork.c> StartServers 10 MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 1000 MaxRequestsPerChild 10000 </IfMole> 上述配置中,ServerLimit的最大值是2000,对于大多数站点已经足够。如果一定要再加大这个数值,对位于源代码树下server/mpm/prefork/prefork.c中以下两行做相应修改即可: #define DEFAULT_SERVER_LIMIT 256 #define MAX_SERVER_LIMIT 2000 worker的工作原理及配置 相对于prefork,worker是2.0 版中全新的支持多线程和多进程混合模型的MPM。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。这种MPM的工作方式将是Apache 2.0的发展趋势。 在configure -with-mpm=worker后,进行make编译、make install安装。在缺省生成的httpd.conf中有以下配置段: <IfMole worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfMole> worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。 MinSpareThreads和MaxSpareThreads的最大缺省值分别是75和250。这两个参数对Apache的性能影响并不大,可以按照实际情况相应调节。 ThreadsPerChild是worker MPM中与性能相关最密切的指令。ThreadsPerChild的最大缺省值是64,如果负载较大,64也是不够的。这时要显式使用ThreadLimit指令,它的最大缺省值是20000。上述两个值位于源码树server/mpm/worker/worker.c中的以下两行: #define DEFAULT_THREAD_LIMIT 64 #define MAX_THREAD_LIMIT 20000 这两行对应着ThreadsPerChild和ThreadLimit的限制数。最好在configure之前就把64改成所希望的值。注意,不要把这两个值设得太高,超过系统的处理能力,从而因Apache不起动使系统很不稳定。 Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数是16,加大时也需要显式声明ServerLimit(最大值是20000)。这两个值位于源码树server/mpm/worker/worker.c中的以下两行: #define DEFAULT_SERVER_LIMIT 16 #define MAX_SERVER_LIMIT 20000 需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,否则Apache将会自动调节到一个相应值(可能是个非期望值)。下面是worker配置段: <IfMole worker.c> StartServers 3 MaxClients 2000 ServerLimit 25 MinSpareThreads 50 MaxSpareThreads 200 ThreadLimit 200 ThreadsPerChild 100 MaxRequestsPerChild 0 </IfMole> 通过上面的叙述,可以了解到Apache 2.0中prefork和worker这两个重要MPM的工作原理,并可根据实际情况来配置Apache相关的核心参数,以获得最大的性能和稳定性。

⑤ LINUX操作系统课程设计:企业服务器的配置与实现怎样做

一般购买大品牌的服务器才有相应的驱动程序:
硬件:4核CPU,4G的内存,主板带RIAD,512G内存,

安装与配置Web服务器
Apache服务器源代码安装:
http://httpd.apache.org
Apache RPM软件下载:
http://updates.redhat.com
Apache模块和MPM可使用类型的更详细介绍:
http://httpd.apache.org/docs-2.0/mod/N
Apache对模块的使用有两种方法,一种是将其永久性地编译Apache内核中,即采用静态编译;另一种是采取动态编译,将其编译成DSO(Dynamic shared object,动态共享对象)模块,DSO模块的存储是独立于内核的,可被内核在需要时调用,具体是由mod_so模块提供的运行时配置指令(LoadMole)来实现的,若在编译中包含有任何动态模块,则mod_so模块会被自动包含进内核。若仅希望内核能够支持装载DSO模块,但不实际编译任何动态模块,则在编译配置时就明确指定--enable-so配置参数。
还提供了多道处理模块MPMs(multi-processing moles),编译过程中必须包含一个且只能有一个MPM,编译时系统会根据平台类型自动选择使用默认的MPM,也可在configure命令行中配置:
--with-mpm=要使用MPM类型

模块的指定方法:
1.静态编译模块到内核中,如编译包含mod-sll和mod_rewrite(去掉mod_)模块:
./configure --enable-mole="ssl rewrite"或./configure --enable-sll --enable-rewrite
动态编译模块为DSO:
./configure --enable-mods-shared="ssl rewrite"或./configure --enable-rewrite=shared

模块说明:
httpd -l //查看httpd进程中包含哪些模块;
httpd -S //检查虚拟主机的配置是否存在语法错误;
httpd -f //启动httpd守护进程时,加载配置文件;
mod_deflate模块允许支持此功能的浏览器,在请求的页面内容发送前进行压缩,以节少网络带宽。
mod_vbost_alias模块支持虚拟主要的动态配置。

chkconfig --level 235 httpd on
chkconfig --list httpd
service httpd start
service httpd restart
service httpd reload //重新装载httpd.conf(不重启服务器)
./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=prefork --enable-moles="setenvif rewrite deflate vhost_alias"
#apachectl start //启动Apache服务器;
#apachectl restart
#echo "/usr/local/apache2/bin/apachectl start">>/etc/rc.d/rc.local //自动启动
#httpd -t //检查配置文件httpd.conf
#apachect configtest //检查配置文件httpd.conf
#ServerRoot apache安装路径 //设置服务器的根目录;
#ServerName 完整的域名[:端口号] //设置服务器用于重定向(端口)和虚拟主机;
#Listen [IP地址]端口号 //告诉服务器接受来自指定端口或者指定IP地址的某端口的请求;
Listen 80
Listen 61.186.160.104:8088
#ServrAdmin E-mail地址 //设置Web站点管理员的E-mail地址,当产生错误时(如指定的网页找不到),服务器返回给客户端的
错误信息中将包含该邮件地址,以告诉用户该向谁报告错误;
#DocumentRoot 目录路径名 //设置Web服务器站点根目录;
DocumentRoot /usr/local/apache2/htdocs
#ErrorDocument 错误号 所要显示的网页 //定义当遇到错误时,服务器将给客户端什么样的回应,通常是显示预设置的一个错误页面;
grep ErrorDocument /etc/httpd/conf/httpd.conf //httpd.conf中一些对不同错误的响应信息;
#DirectoryIndex index.php index.htm index.html default.htm //设置站点主页文件的搜索顺序;
#user nobody //设置服务器以哪种(nobody)用户身份来响应客户端的请求;
#Group # -1 //设置服务器以哪种(nobody)用户身份来响应客户端的请求;nobody用户权限较小。
#AddDefaultCharset GB2312 //指定默认的字符集;
#TimeOut //设置连接请求超时的时间(秒),超时将断开;
#KeepAlive //用于启用持续的连接或者禁用;KeepAlive On|Off
#MaxKeepAliveRequests //设置在一个持续连接期间允许的最大HTTP请求数目;
#KeepAliveTimeout //设置在关闭TCP连接之前,等待后续请示求的秒数;一旦接受请求建立了TCP连接后则开始计时;
#PidFile logs/httpd.pid //指定存放httpd主(父)进程号的文件名;

日志配置命令:
#ErrorLog //指定服务器存放错误日志文件的位置和文件名;
#LogLevel //设置记录在错误日志中的信息的详细程序;
emerg 紧急,系统将无法使用;
alert 必须立即采取措施;
crit 致命情况;
crror 错误情况;
warm 警告;
info 普通信息;
notice 一般重要情况;
debug 出错级别信息;

http://127.0.0.1 //测试Apache是否正常运行
Test Page
This page is used to test the proper operation of the Apache Web server after it has been installed. If you can read this page, it means that the Apache Web server installed at this site is working properly.

#rpm -q httpd
#rpm -Uvh http-2.0.40-21.11.i386.rpm

目录说明:
/etc/httpd/conf //Apache服务器的配置文件httpd.conf
/etc/rc.d/init.d/ //Apache服务器启动脚本安装,httpd
/var/www/html //Web站点根目录;
/usr/bin //Apache软件包提供的可执行程序安装在该目录下。
/etc/httpd/logs //日志文件
htdocs //默认Web站点的根目录,可通过配置文件httpd.conf进行设置或更改;
cgi-bin //CGI脚本目录;
bin //apachectl启动脚本会自动设置在某些操作系统下,正常运行httpd所需的环境变量;
httpd守扩进程被调用后做的第一件事就是读取httpd.conf,并根据其配置项来配置当前Web服务器;
httpd.conf 分为三部分(section),
第一部分为全局环境设置,主要用于设置ServerRoot、主进程号的保存文件、
对进程的控制、服务器侦听的IP地址、端口、要装载的DSO模块
第二部分是服务器的主要配置指一位置;
第三部分用于设置和创建虚拟主机;
Listen 80 //Web服务器绑定在80端口;
DocumentRoot //设置Web站点的根目录等;
访问控制指令:
<Directory /usr/local/*/htdoes> //<Directory>使指定的目录及其子目录有效;不可嵌套。目录名可使用“*”或“?”通配符,
<Files ~“\.ht"> //作用于指定的文件,则不管该文件实际存在子哪个目录,允许所有主机访问位于任何目录下的.ht开的文件
Order allow,deny //指定allow和deny语句,哪一个被执行;允许、禁止访问主机。
Allow from all //允许所有主机访问;也可以是IP地址。
<Files>
</Directory>

<Location /assistant> //针对URL地址进行访问限制,不是文件系统;
Order deny,allow //
Deny from all
Allow from 61.186.160.105
</Location>

Order deny,allow //若主机没有被特别指出拒绝访问,则该资源被允许访问。
Order allow,deny //若主机没有被特别指出允许访问,则该主要将被拒绝访问该资源。
Order mntual-failure //只有那些在allow语句中被指定,同时又没有出现在deny语句的主机,才允许访问。若主机在两条指
令中都没有出现,则将被拒绝访问;
*、? //*代表任意个字符,?代表一个任意的字符;
<DirectoryMatch> //指定目录名时,可直接使用正则表达式;<Directory>若要使用正则表达式,则需要在正则表达式前加“~"
<FilesMatch> //可直接使用正则表达式来通配多个文件;

AccessFileName .htaccess //.htaccess分布式配置文件,在该文件中也可放置一些配置指令,以作用于该文件所在的目录以及
其下的所有子目录。搜寻.htaccess文件会降低系统性能;
<Directory />
AllowOverride None //禁止系统查找.htaccess文件;
Options FollowSymLinks //Options:控制在特定目录中将使用哪些服务器特性;
</Directory>

Options命令可用的选项:
None 不启用任何额处特性;
All 除MultiViews之外的所有特性,默认设置;
ExecCGI 允许执行CGI脚本;
FollowSymLinks 服务器允许在此目录中使用符号连接。在<Location>段中无效
Includes 允许服务器端包含SSI(Server-side includes)
IncludesN()EXEC 允许服务器端包含,但禁用#exec和#exec CGI命令。但仍可以从ScriptAltase目录使用#include虚拟CGI脚本;
Indexes 如果一个映射目录的URL被请求,而此目录中又没有DirectoryIndex(如:index.html),那么服务器返回一个
格式化后的目录列表;
MultiViews 允许内容协商的多重视图;
SymLinksIfOwnerMatch 服务器仅在符号连接与其目的目录或文件拥有者具有同样的用户ID时,才使用它;
ExecCGI 拥有ExecCGI执行权限;

prefork.c 控制Apache进程,对于使用prefork多道处理模块的Apache服务器;
<IfMole prefork.c>
StartServers 5 //设置服务器启动时启动的子进程的个数;
MinSpareServers 5 //设置服务器中空闲子进程(即没有HTTP处理请求的子进程)数目的下限;
MaxSpareServers 10 //设置服务器中空闲子进程数目的上限。若空闲子进程超过该设置值,则父进程就会
停止多余的子进程;
MaxClients 150 //设置服务器允许连接的最大客户数;
MaxRequestsPerChild 0 //设置子进程所能处理请求的数目上限,0为不受限制;
</IfMole>
access_log //日志文件用于记录服务器处理的所有请求;
CustomLog 指定access_log日志文件的位置和日志记录的格式;
LogFormat 定义日志的记录格式;
LogFormat 日志格式字符串 日志格式名称
LogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined;
LogFormat "%h %1 %u %t \"%r\" %>s %b" common;
LogFormat "%{Referer}i->%U" referer;
LogFormat "%{User-agent}i“ agent;
LogFormat logs/access_log common

LogFormat "%v %h %l %u %t \"%r"\ %>s %b" vhost
CustomLog logs/vhost_log vhost

%a 远程主机IP地址
%A 本地主机IP地址
%h 远程主机名
%H 请求协议
%l 远程登录名
%u 来自auth 的远程用户
%U 请求的URL路径
%U{User-agent}i 用户浏览器类型
%b 发送的字节数,不包括HTTP标题
%t 请求的时间
%r HTTP请求的第一行的内容
%s HTTP响应状态码,200代表访问成功,404代表文件未找到,403代表禁止访问,401代表未授权访问,400代表错误请求。
%m 请求方法
%v 服务于该请求的服务器的ServerName
%V 服务器的名字,取决于UseCanonicalName的设置
%{Host}i 返回HTTP请求的主机头信息,可能含端口号信息
split-logfile </var/www/myweb/vhost_log //当所有虚拟机日志都记录在主站点日志中时,使用此命令将日志按虚拟主机名分组,拆分成一个个独立的日
志文件,第个日志文件采用"虚拟主机名.log“形式命名,其中包含了该虚拟主机所产生的日志记录;

容器与访问控制指令:容器指令通常用于封装一组指令,使其在容器条件成立时有效,或者用于改变指令的作用域。
<IfMoe ! mpm_winnt.c> //<IfMoe>用于判断指定的模块是否存在,若存在(被静态地编译进服务器,或是被动态装载进服务器)则包含于
其中的指令将有效,否则会被忽略。可嵌套使用。
<IfMoe ! mpm_netware.c> //若要使模块不存在时所包含的指令有效,只需在模块名前加一个“!”即可,
User nobody
Group # -1
</IfMoe>
</IfMoe>

基于域名虚拟主机:
例:假设当前服务器的IP地址为192.168.3.120,现要在该服务器创建两个基于域名的虚拟主机,使用端口为标准的80,其域名分别为www.myweb1.com和www.myweb2.com,站点根目录分别为/var/www/myweb1和/var/www/myweb2,日志文件分别放在/var/vhlogs/myweb1和/var/vhlogs/myweb2目录下面,Apache服务器原来的主站点采用域名www.myweb.com进行访问。
#vi /etc/hosts //使用/etc/hosts进行域名注册;
192.168.3.120 www.myweb1.com www.myweb2.com www.myweb.com

#ping www.myweb1.com //检测域名解析是否正常;
#ping www.myweb2.com
#ping www.myweb.com

#mkdir -p /var/www/myweb1
#mkdir -p /var/www/myweb2
#mkdir -p /var/vhlogs/myweb1
#mkdir -p /var/vhlogs/myweb2

#vi /etc/httpd/conf/httpd.conf
Listen 80 //设置Listen指令侦听的端口
NameVirtualHost 192.168.3.120 //基于域名的虚拟主机,如果对多个地址使用了多个基于域名的虚拟主机
则对每个地址均要使用此指令:NameVirtualHost IP地址:端口
NameVirtualHost * 当IP地址无法确定时,使用“*”通配任意的IP地址
<VirtualHost 192.168.3.120> //定义一个虚拟主机,VirtualHost的参数必须与NameVirtualHost后面所使用的参数保持一致。
ServerName www.myweb.com //当一个请求到时,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果匹配,就会
DocumentRoot /usr/local/apache/htdoes //就会查找每个与这个IP地址相对应的<VirtualHost>配置段,并尝试找出一个ServerName或ServerAlias配置相
ServerAdmin [email protected] //与请求的主机名(域名)相同的,若找到,则使用该虚拟主机的配置,并响应其访问请求。否则将使用符合这个
</VirtualHost> //IP地址的第一个列出的虚拟主机。在最前面的虚拟主机成为默认虚拟主机。
<VirtualHost 192.168.3.120>
ServerName www.myweb1.com
DocumentRoot /var/www/myweb1
DirectoryIndex index.php index.php3 index.html index.htm default.html default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb/error_log
TransferLog /var/vhlogs/myweb1/access_log
</VirtualHost>
<VritualHost 192.168.3.200>
ServerName www.myweb2.com
DocumenRoot /var/www/myweb2
DirectoryIndex index.php index.php3 index.htm index.html default.htm default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb2/error_log
TranferLog /var/vhlogs/myweb2/access_log
</VirtualHost>

<Directory /var/www> //对Web站点目录设置访问控制;
Options FllowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

Apachectl –S //查查虚拟主机配置是否正确;
Aparhectl restart //重启Apache服务器配置生效;

例:
NameVirtualHost 192.168.168.10 //服务器配有两块网卡,IP:内网192.168.168.10,外网61.186.160.104,在Internet网中,企业域名
NameVirtualHost 61.186.160.104 //www.example.com指向外网IP地址,在企业内网的DNS服务器中,指向内网IP地址;现要求为来自内网
<VirtualHost 192.168.168.10 61.186.160.104> //外网的请求提供同样的Web服务。(httpd.conf中设置)
DocumentRoot /www/server1
ServerName www.example.com
</Virtual>

例:
Listen 80 //服务器:192.168.168.154,服务器上创建两个基于域名(主机名)的虚拟主机,域名:www.myweb3.com和www.
Listen 8080 //myweb4.com,每个虚拟主机的80端口和8080端口,分别服务一个Web站点,其站点根目录分别为
// /var/www/myweb3-80、/var/www/myweb3-8080、/var/www/myweb4-80、/var/www/myweb4-8080。
NameVirtualHost 192.168.168.154:80 //www.myweb3.com的80端口作为默认Web站点。
NameVirtualHost 192.168.168.154:8080

<VirtualHost 192.168.168.154:80>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-80
<VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-8080
</VirtualHost>
<VirtualHost 192.168.168.154:80>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-80
</VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-8080
</VirtualHost>

基于IP地址虚拟主机:
#cd /etc/sysconfig/network-scripts //服务器有两张网卡eth0、eth1,eth0:192.168.167.157,
#cp ifctg-eth1 ifcfg-eth1:0 //eth1:192.168.167.156.eth0网卡用作了基于主机名的虚拟主机,
#vi ifcfg-eth1:0 //eth1通过IP别名方式,为其绑定多个IP地址,用于提供基于IP地址
DEVICE=eth1:0 //的虚拟主机。eth1绑定的第一张虚拟网卡的设备名为eth1:0,对应的
IPADDR=192.168.167.157 //配置文件为ifcfg-eth1:0,通过修改配置文件中的设备名和IP地址,
#ifdown eth1 //即可实现IP地址的绑定。
#ifup eth1:0
#ifup eth1
#ping 192.168.167.157
#ping 192.168.167.156

#vi /etc/hosts //192.168.167.156:www.example2.com,192.168.167.157:
192.168.167.157 www.example3.com //www.example3.com,试为其创建基于IP地址的虚拟主机,端口使用80
#mkdir -p /var/www/example2 //目录分别为/var/www/example2、/var/www/example3,为这两个域再增
#mkdir -p /var/www/example3 //8080端口,使其也能在8080端口发布另外的Web站点。Web站点根目录分
///var/www/example2-8080、/var/www/example3-8080
#vi httpd.conf
Listen 80
Listen 8080
<VirtualHost 192.168.167.156:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
<VirtualHost 192.168.167.156:8080>
ServerName www.example2.com
DocumentRoot /var/www/example2-8080
</VirtualHost>

<VirtualHost 192.168.167.157:80>
ServerName www.exaple3.com
DocumentRoot /var/www/example3
</VirtualHost>
<VirtualHost 192.168.167.157:8080>
ServerName www.exaple3.com
DocumentRoot /var/www/example3-8080
</VirtualHost>

阅读全文

与mpm系统源码相关的资料

热点内容
32位cpu编译 浏览:802
奥特佳涡旋压缩机维修 浏览:672
面向过程函数编程 浏览:640
海通证券app新手怎么操作 浏览:343
历代大师pdf 浏览:394
争遗产算法律纠纷吗 浏览:378
不听命令擅自夜间突围 浏览:710
命令不敢违 浏览:838
java命令行启动jar 浏览:284
服务器不做raid怎么识别硬盘 浏览:965
lol下载的压缩包 浏览:915
androidlocker 浏览:71
大三不学编程可以干嘛 浏览:318
幸福文件夹2在线观看 浏览:477
android正方形绘制 浏览:204
施耐德plc编程手册下载 浏览:149
jsp源码预约系统下载 浏览:792
硬盘加密安全模式打不开 浏览:949
采集辽宁app怎么下载 浏览:843
怎么改服务器dns地址 浏览:550