Apache装置装备和虚拟主机装备教程-Php-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝27
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:166回复:0

  Apache装置装备和虚拟主机装备教程

楼主#
更多 发布于:2016-05-22 15:09

相对IIS来说Apache树立站点愈加专业,一些大型门户网站和流量大的专业站点都是经过Apache发布站点的。并且以往许多程序都是经过ASP言语完结的,ASP与IIS的兼容性比较好,那时IIS用户比较多。跟着PHP言语的盛行,不断增加的用户扔掉了ASP。比较IIS来说Apache与PHP的兼容

Apache 2.0

装置

相对IIS来说Apache树立站点愈加专业,一些大型门户网站和流量大的专业站点都是经过Apache发布站点的。并且以往许多程序都是经过ASP言语完结的,ASP与IIS的兼容性比较好,那时IIS用户比较多。跟着PHP言语的盛行,不断增加的用户扔掉了ASP。比较IIS来说Apache与PHP的兼容性更好,履行代码的功率更高,运转起来也愈加安稳。

第一步:下载Apache 2.0装置程序,并运转.

第二步:同意答应协议点“NEXT”按钮持续。

第三步:检查协助信息,不用更改点“NEXT”按钮持续。

第四步:在服务器信息设置窗口填写站点的域名,服务器称号以及管理员电子邮箱地址等信息。假如你没有域名也不要紧坚持默许即可。点“NEXT”按钮持续装置。

第五步:选择装置类型,通常坚持默许的typical典型形式即可。

第六步:设置装置目录,默许为c:\program files\apache

group。咱们能够点右边的“Change”按钮修改此途径。

第七步:点install按钮开端装置。

第八步:仿制有必要文件到本地硬盘并且启动apache主程序。

第九步:完结apache装置工作,点“finish”按钮回来桌面。

第十步:与此同时咱们会看见在桌面右下角的任务栏处出现一个小叶子图标,这个即是Apache启动项。

第十一步:咱们翻开IE浏览器在地址栏处输入http://127.0.0.1

,假如能够看到显现出Apache页面的话就说明咱们现已成功完结装置工作了。

虚拟主机装备

首要用“记事本”程序翻开“httpd.conf”装备文件。此文件存放在Apache服务器装置途径下的“conf”文件夹内。

一、运用 mod_vhost_alias

1.简略的动态虚拟主机

(1)从 Host: 头中取得服务器姓名 Server Name

UseCanonicalName Off

(2)这儿的日志格局,能够在将来经过第一个参数域来分隔不一样的虚拟主机的日志

LogFormat "%V %h %l %u %t \"%r\" %s %b"

vcommonCustomLog logs/access_log vcommon

(3)在回来恳求的文件名的途径中包括进服务器姓名: server name

VirtualDocumentRoot

/www/hosts/%0/docsVirtualScriptAlias /www/hosts/%0/cgi-bin

2.更为有用的根据 IP 地址的虚拟主机

(1)从 IP 地址反解析得到服务器姓名(server name)

UseCanonicalName DNS

(2)在日志中包括 IP 地址,便于后续分发

LogFormat "%A %h %l %u %t \"%r\" %s %b"

vcommonCustomLog logs/access_log vcommon

(3)在文件途径中包括 IP 地址

VirtualDocumentRootIP

/www/hosts/%0/docsVirtualScriptAliasIP /www/hosts/%0/cgi-bin

二、运用 mod_rewrite

1. 运用 mod_rewrite 完结简略的动态虚拟主机

(1)从 Host: 头获取服务器姓名

UseCanonicalName Off

(2)可分割的日志

LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b"

vcommonCustomLog logs/access_log vcommonExecCGI is needed

here because we can't forceCGI execution in the way that ScriptAlias doesOptions

FollowSymLinks ExecCGI

(3)接下来是要害有些

RewriteEngine Ona ServerName derived from a Host:

header may be any case at all RewriteMap lowercase int:tolower

首要处理通常文档:

答应变名 /icons/ 起作用 - 别的变名类同RewriteCond

%{REQUEST_URI} !^/icons/答应 CGIsRewriteCond %{REQUEST_URI}

!^/cgi-bin/开端“变戏法”RewriteRule ^/(.*)$

/www/hosts/${lowercase:%{SERVER_NAME}}/docs/$1

如今处理 CGIs - 咱们需求强行运用一个 MIME 类型

RewriteCond %{REQUEST_URI} ^/cgi-bin/RewriteRule

^/(.*)$ /www/hosts/${lowercase:%{SERVER_NAME}}/cgi-bin/$1

[T=application/x-httpd-  cgi]

2.运用独立的虚拟主机装备文件 vhost.map

(1)vhost.map 文件包括了相似下面的内容:

www.customer-1.com

/www/customers/1www.customer-2.com /www/customers/2...www.customer-N.com

/www/customers/N

(2)http.conf 包括了:

RewriteEngine onRewriteMap lowercase

int:tolower

(3)定义映像文件

RewriteMap vhost txt:/www/conf/vhost.map

(4)和上面的比方一样,处理变名

RewriteCond %{REQUEST_URI} !^/icons/RewriteCond

%{REQUEST_URI} !^/cgi-bin/RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$

(5)这儿做根据文件的从头映射

RewriteCond ${vhost:%1} ^(/.*)$RewriteRule ^/(.*)$

%1/docs/$1RewriteCond %{REQUEST_URI} ^/cgi-bin/RewriteCond

${lowercase:%{SERVER_NAME}} ^(.+)$RewriteCond ${vhost:%1} ^(/.*)$RewriteRule

^/(.*)$ %1/cgi-bin/$1

.htaccess文件功用

.htaccess文件的功用:"分布式装备文件"供给了关于目录改变装备的办法,即:在一个特定的文档目录中放置一个包括一个或多个指令的文件,

以作用于此目录及其一切子目录。作为用户,所能运用的指令受到限制。管理员能够经过Apache

的AllowOverride指令来设置.子目录中的指令会掩盖更高档目录或许主服务器装备文件中的指令。

一、过错文档的定位

(1)常用的客户端恳求过错回来代码:

401 Authorization Required 403 Forbidden 404 Not

Found 405 Method Not Allowed 408 Request Timed Out 411 Content Length Required

412 Precondition Failed 413 Request Entity Too Long 414 Request URI Too Long 415

Unsupported Media Type

(2)多见的服务器过错回来代码:

500 Internal Server Error

(3)用户能够运用.htaccess指定自个事先制造好的过错提示页面。通常情况下,人们能够专门建立一个目录,例如errors放置这些页面。然后再.htaccess中,参加如下的指令:

ErrorDocument 404 /errors/notfound.html

ErrorDocument 500 /errors/internalerror.html 一条指令一行。

上述第一条指令的意思是关于404,也即是没有找到所需求的文档的时分得显现页面为/errors目录下的notfound.html页面。不难看出语法格局为:

ErrorDocument 过错代码 /目录名/文件名.扩展名

假如所需求提示的信息很少的话,不用专门制造页面,直接在指令中运用HTML号了,例如下面这个比方:

ErrorDocument 401 "

你没有权限拜访该页面!

"

二、文档拜访的暗码维护要运用.htaccess对某个目录下的文档设定拜访用户和对应的暗码,首要要做的是生成一个.htpasswd的文本文档,例如:

zheng:y4E7Ep8e7EYV

这儿暗码经过加密,用户能够自个找些东西将暗码加密成.htaccess支撑的编码。该文档最佳不要放在www目录下,建议放在www根目录文档以外,这么更为安全些。

有了授权用户文档,能够在.htaccess中参加如下指令了:

AuthUserFile .htpasswd的服务器目录 AuthGroupFile

/dev/null (需求授权拜访的目录) AuthName EnterPassword AuthType Basic (授权类型)

require user wsabstract

(答应拜访的用户,假如期望表中一切用户都答应,能够运用 require valid-user)

注:括号有些为学习时分自个添加的注释

三、回绝来自某个IP的拜访

假如我不想某个政府有些拜访到我的站点的内容,那能够经过.htaccess中参加该有些的IP而将它们回绝在外。

例如:

order allow,deny deny from 210.21.112.43deny from

219.146.95 allow from all

注: 第二行回绝某个IP,第三行回绝某个IP段,也即是219.146.95.0~219.146.95.255 想要回绝一切人?用deny from

all好了。不止用IP,也能够用域名来设定。

四、维护.htaccess文档

在运用.htaccess来设置目录的暗码维护时,它包括了暗码文件的途径。从安全思考,有必要把.htaccess也维护起来,不让别人看到其间的内容。尽管能够用别的方式做到这点,比方文档的权限。不过,.htaccess自身也能做到,只需参加如下的指令:

order allow,deny deny from

all

五、URL转向

咱们可能对网站进行从头计划,将文档进行了搬迁,或许更改了目录。这时分,来自搜索引擎或许别的网站连接过来的拜访就可能犯错。这种情况下,能够经过如下指令来完结旧的URL自动转向到新的地址:

Redirect /旧目录/旧文档名 新文档的地址 或许全部目录的转向: Redirect 旧目录

新目录 改变缺省的主页文件

通常情况下缺省的主页文件名有default、index等。不过,有些时分目录中没有缺省文件,而是某个特定的文件名,比方在pmwiki中是pmwiki.php。这种情况下,要用户记住文件名来拜访很费事。在.htaccess中能够容易的设置新的缺省文件名:

DirectoryIndex 新的缺省文件名

也能够列出多个,次序标明它们之间的优先等级,

例如:

DirectoryIndex filename.html index.cgi index.pl

default.htm

rewrite重写功用

Apache模块

mod_rewrite,一个根据必定规矩的实时重写URL恳求的引擎此模块供给了一个根据正则表达式分析器的重写引擎来实时重写URL恳求。它支撑每个完好规矩能够具有不限数量的子规矩以及附加条件规矩的灵敏并且强大的URL操作机制。此URL操作能够依赖于各种测验,比方服务器变量、环境变量、HTTP头、时刻符号,乃至各种格局的用于匹配URL组成有些的查找数据库。此模块能够操作URL的一切有些(包括途径信息有些),在服务器级的(httpd.conf)和目录级的(.htaccess)装备都有用,还能够生成终究恳求字符串。此重写操作的成果能够是内部子处理,也能够是外部恳求的转向,乃至还能够是内部署理处理。可是,一切这些功用和灵敏性带来一个问题,那即是复杂性,因此,不要盼望一天以内就能看懂全部模块。更多的评论、细节、示例,请检查具体的URL重写文档。

(1)特别字符的引证:

在Apache

1.3.20中,TestString和Substitution中的特别字符能够用前导斜杠(\)来完结转义(即忽略其特别意义而视之为通常字符)。

比方,Substitution能够用"\___FCKpd___27quot;来包括一个美元符号,以防止mod_rewrite把它视为反向引证。

(2)环境变量

此模块会盯梢两个额定的(非规范)CGI/SSI环境变量,SCRIPT_URL和SCRIPT_URI。他们包括了当时资本的逻辑网络视图,而规范CGI/SSI变量SCRIPT_NAME和SCRIPT_FILENAME包括的是物理体系视图。留意:这些变量坚持的是其开始被恳求时的URI/URL,即在任何重写操作之前的URI/URL。其重要性在于他们是重写操作重写URL到物理途径名的原始根据。

示例:

SCRIPT_NAME=/sw/lib/w3s/tree/global/u/rse/.www/index.htmlSCRIPT_FILENAME=/u/rse/.www/index.htmlSCRIPT_URL=/u/rse/SCRIPT_URI=http://en1.engelschall.com/u/rse/

(3)rewrite的指令

rewrite的指令有许多比方RewriteBase 指令

RewriteBase指令显式地设置了目录级重写的基准URL。在下文中,你将看到RewriteRule能够用于目录级的装备文件中(.htaccess)并在部分范围内起作用,即规矩实践处理的仅仅剥离了本地途径前缀的一有些。处理完毕后,这个途径会被自动地附着回去。默许值是"RewriteBase

physical-directory-path"。

在对一个新的URL进行更换时,此模块有必要把这个URL从头写入到服务器处理中。为此,它有必要知道其对应的URL前缀或许说URL基准。通常,此前缀即是对应的文件途径。可是,大多数网站URL不是直接对应于其物理文件途径的,因此通常不能做这么的假定!

所以在这种情况下,就有必要用RewriteBase指令来指定准确的URL前缀。

假如你的网站服务器URL不是与物理文件途径直接对应的,而又需求运用RewriteBase指令,则有必要在每个对应的.htaccess文件中指定RewriteRule

例如,目录级装备文件内容如下:

/abc/def/.htaccess -- /abc/def 目录的装备文件留意:/abc/def

是 /xyz 的物理途径(例如存在一条'Alias /xyz /abc/def'指令)。RewriteEngine On让服务器知道咱们运用的是 /xyz

而不是物理途径 /abc/defRewriteBase   /xyz重写规矩RewriteRule   ^oldstuff\.html$

 newstuff.html

注:上述比方中,对/xyz/oldstuff.html的恳求被准确地重写为对物理文件/abc/def/newstuff.html的恳求。

以下列出了内部处理的具体进程:

恳求:/xyz/oldstuff.html内部处理进程:/xyz/oldstuff.html    

-> /abc/def/oldstuff.html  (per-server Alias)/abc/def/oldstuff.html ->

/abc/def/newstuff.html  (per-dir    RewriteRule)/abc/def/newstuff.html ->

/xyz/newstuff.html      (per-dir    RewriteBase)/xyz/newstuff.html     ->

/abc/def/newstuff.html  (per-server Alias)成果:/abc/def/newstuff.html

尽管这个进程看来很繁复,可是由于目录级重写的到来机遇现已太晚了,它不得不把这个(重写)恳求从头写入到Apache核心中,所以Apache内部确实是这么处理的。可是:它的开支并不象看起来的那样大,由于从头写入彻底在Apache服务器内部进行,并且这么的进程在Apache内部也为别的许多操作所运用。所以,你能够充沛信任其规划和完结是准确的。

优质IT资源分享社区为你提供此文。

本站有大量优质php教程视频,资料等资源,包含php基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。

php教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客