即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

PHP 零门槛必备第二章学习与进阶笔记

编程语言 limei_it 14℃ 0评论
本文目录
[隐藏]

问题答疑:

1.默认情况下,Apache服务器的配置文件名、MySQL服务器的配置文件名以及PHP预处理器配置文件名分别是什么?


Apache默认主配置文件:根目录下config文件夹下httpd.conf


Mysql服务器的配置文件名:根目录下my.ini


PHP预处理器配置文件:根目录php.ini

 

Apache的启动、关闭、重启


  启动命令:service httpd start


  关闭命令:service httpd stop


  重启命令:service httpd restart

1. Apache服务器的安装与配置

文档:http://httpd.apache.org/docs/2.4/

指令:http://httpd.apache.org/docs/2.4/mod/core.html

一、配置文件

语法

* 主配置文件httpd.conf,更改只有重启服务才会生效


* 配置中一行一个命令,如果要多行一个命令,则最后以\结束,且与该行最后个字符无其它字符或者空白


* 每行注释以#开头,会被忽略,一行命令符后不能再接注释


* 空行空白字符在配置文件中被忽略


* 配置文件错误检测可以通过 Test Configuration来完成(httpd.exe -w -t -f “D:\Software\GreenSoft\Apache\conf\httpd.conf” -d “D:\Software\GreenSoft\Apache\.”)



模块

Related Modules Related Directives


——————————————–


mod_so


LoadModule

* httpd基于模块化,编译配置时,默认会把基本的功能模块加载到服务器内核。


* 对于动态加载的模块可以通过LoadModule指令在任何时候完成。


* 可用于条件加载


* Dos命令 httpd.exe -l 可以查看已经加载的模块

* httpd.exe支持的参数指令

-D name : define a name for use in directives


-d directory : specify an alternate initial ServerRoot


-f file : specify an alternate ServerConfigFile


-C “directive” : process directive before reading config files


-c “directive” : process directive after reading config files


-n name : set service name and use its ServerConfigFile


-k start : tell Apache to start


-k restart : tell running Apache to do a graceful restart


-k stop|shutdown : tell running Apache to shutdown


-k install : install an Apache service


-k config : change startup Options of an Apache service


-k uninstall : uninstall an Apache service


-w : hold open the console window on error


-e level : show startup errors of level (see LogLevel)


-E file : log startup errors to file


-v : show version number


-V : show compile settings


-h : list available command line options (this page)


-l : list compiled in modules


-L : list available configuration directives


-t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)


-S : a synonym for -t -D DUMP_VHOSTS


-t -D DUMP_MODULES : show all loaded modules


-M : a synonym for -t -D DUMP_MODULES


-t : run syntax check for config files


-T : start without DocumentRoot(s) check

 

指令作用范围



Related Modules Related Directives


—————————————–




















* 指令范围标签可以指定指令生效的范围,其可以嵌套


* 可以通过在标签中放置多个指令以同时支持多个虚拟主机站点


* 节点配置参见:http://httpd.apache.org/docs/2.4/sections.html

 

.htaccess文件

* httpd通过在站点目录里面放置.htaccess文件允许配置分散


* .htaccess的语法与主配置文件一致,对于该配置文件的变更只要请求过来会立即生效


* 可以在.htaccess中放置的指令见:http://httpd.apache.org/docs/2.4/mod/directive-dict.html#Context


* 如果有权限配置主配置,则应避免使用.htaccess文件方式来配置,这种方式影响服务器性能


1)配置.htaccess文件后,httpd会查找每个目录的.htaccess文件,不管你实际有没有使用


2)文档被请求的时候,.htaccess文件每次都会被加载

3)httpd会在多层目录中查找.htaccess文件,以应用完整的指令。


4).htaccess中地址重写指令中的正则表达式在每次请求的时候重新编译。


5)安全问题,用户在修改.htaccess使管理员对配置的管理失控。只有设置AllowOverride指令才可以使用户使用指定的指令。

 



* 在.htaccess中配置指令与在主配置中配置Dirctory块可以达到相同效果,但是后者有更好的性能。

Contents of .htaccess file in /www/htdocs/example


AddType text/example .exm

等价于:

Section from your httpd.conf file




AddType text/example .exm




* 禁用.htaccess可以用指令 AllowOverride None

 

二、Apache目录结构

根目录


|– bin 程序命令目录


|– build


|– cgi-bin


|– conf 配置文件目录


|– error


|– htdocs 编译安装时站点目录


|– icons


|– include


|– lib 


|– logs 默认日志文件存放包括错误日志(error_log)和访问日志(access_log) tail -f access_log可以随时看访问记录, 里面httpd.pid还会记录主进程号


|– man


|– manual


|– modules 模块目录 例如PHP MEMCACHE编译后的模块在这里面

 

Bin目录


|– ab apache http服务器性能压力测试工具,类似的jmeter loadrunner webbench


|– apachectl apache的启动命令


|– apr-1-config


|– apu-1-config


|– apxs apache服务器编译和安装扩展的工具,在进行DSO方式模块编译时会用到例如编译PHP时就用到:–with-apxs2=/usr/local/apache/bin/apxs


|– checkgid


|– dbmmanage


|– envvars


|– envvars-std


|– htcacheclean 清理磁盘缓存区的命令,一般少用


|– htdbm


|– htdigest


|– htpasswd 建立更新基本认证文件 例如配置nagio监控时候会用到


|– httpd 为apache的控制命令程序,apachectl执行的时候会调用到httpd


|– httxt2dbm


|– logresolve



Conf目录


|– extra 辅助apache配置文件


| |– httpd-autoindex.conf


| |– httpd-dav.conf dav支持配置


| |– httpd-default.conf apache相关服务配置 如超时时间 保持连接时间


| |– httpd-info.conf


| |– httpd-languages.conf 语言支持


| |– httpd-manual.conf


| |– httpd-mpm.conf 服务器池管理,如apache模式配置 连接等


| |– httpd-multilang-errordoc.conf


| |– httpd-ssl.conf 支持SSL加密配置


| |– httpd-userdir.conf


| |– httpd-vhosts.conf 虚拟机配置文件


|– httpd.conf 主配置文件


|– magic


|– mime.types


|– original

 

三、httpd.conf主配置文件常见配置



ServerRoot “/usr/local/apache2.2.22” apache安装目录


Listen 80 apache端口 








User daemon apache运行用户


Group daemon apache运行组








ServerAdmin you@example.com 管理员邮箱


DocumentRoot “/usr/local/apache2.2.22/htdocs” 站点目录,注意最后不要加/线

根目录权限


Options FollowSymLinks 可以使用符号链接


AllowOverride None


Order deny,allow


Deny from all





目录权限 注意Indexes的作用是允许浏览目录


Options Indexes FollowSymLinks


AllowOverride None 禁止用户对目录配置文件.htaccess修改,一般为none


Order allow,deny


Allow from all 





DirectoryIndex index.html 站点目录首页文件多个文件用空格隔开


防止WEB用户查看以.ht开头的隐藏文件


Order allow,deny


Deny from all


Satisfy All


ErrorLog “logs/error_log” 错误日志


LogLevel warn 警告级别





LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined 复合日志格式


LogFormat “%h %l %u %t \”%r\” %>s %b” common 常规日志格式





LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %I %O” combinedio 复合日志格式





CustomLog “logs/access_log” common 默认访问日志格式





ScriptAlias /cgi-bin/ “/usr/local/apache2.2.22/cgi-bin/” CGI别名配置








CGI权限访问路径


AllowOverride None


Options None


Order allow,deny


Allow from all





DefaultType text/plain 定义不能确定MIME类型时候使用默认MIME类型,如果服务主要包含text或HTML ,text/plain是一个好选择




TypesConfig conf/mime.types


AddType application/x-compress .Z 允许信息在传输中使用mosaic/x 2.1+解压信息 但不是所有浏览器都支持


AddType application/x-gzip .gz .tgz





SSLRandomSeed startup builtin


SSLRandomSeed connect builtin


 

四、虚拟主机http_vhost.conf配置文件

NameVirtuaHost *:80 表示基于名称的虚拟主机 *:80表示监听本机所有IP的80端口上提供HTTP服务,*可以设置为具体IP





serveradmin 管理员邮箱


servername 域名


serveralias 别名 可以设置多个域名指向同一个站点


errorlog 错误日志


customlog 访问日志




虚拟主机的配置是局部优先原则,也就是http_vhost.conf配置了,那么就不会从主配置文件http.conf中读取了



五、修改Apache默认站点目录

1、文档路径更改 


DocumentRoot “D:/Software/GreenSoft/Apache/htdocs” 


改成


DocumentRoot “E:/wwwroot/Apache”

2、目录更改





改成


 



六、配置多站点方式

方式一 拷贝配置文件,安装新服务


1、将httpd.conf复制一个新的文件httpdNew.conf


2、将httpdNew.conf中的侦听端口改成未使用的自定义的端口。 Listen:8111


3、将httpdNew.conf中的网站目录 DocumentRoot “原绝对路径” 改成 DocumentRoot “新绝对路径”


4、将httpdNew.conf中的权限设置 改成


5、安装新服务。Dos下进到Apache安装目录下的Bin目录,输入命令 httpd.exe -k install -n “服务名” -f “X:\Apache安装目录根目录\conf\httpdNew.conf”


6、启动新服务。输入命令 httpd -k start



方式二 添加新端口,新虚拟目录的方式


1、httpd.conf在之前侦听端口的基础上,加上新侦听端口 Listen 8333.这样Apache有多个侦听端口


2、httpd.conf中加入虚拟主机支持。加入指令:NameVirtualHost *


3、找到 definition注释所在位置。加入指令:





ServerName localhost


DocumentRoot “虚拟站点新绝对路径”


 

方式三 建立虚拟主机方式


1、修改虚拟主机配置文件 X:\Apache安装目录根目录\conf\extra\httpd-vhosts.conf文件.加入配置:





DocumentRoot “虚拟站点新绝对路径”


ServerName url.com


ErrorLog “虚拟站点新绝对路径/error.log”


2、修改主配置文件X:\Apache安装目录根目录\conf\httpd.conf。去掉#Include conf/extra/httpd-vhosts.conf前面的#号


3、修改主配置文件X:\Apache安装目录根目录\conf\httpd.conf。加目录权限:





Options Indexes FollowSymLinks MultiViews ExecCGI


AllowOverride All


Order allow,deny


Allow from all





4、重启对应的Apache服务

 

七、配置Apache支持Url重写

1、加载重写模块。httpd.conf中找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉#号


2、httpd.conf中找到AllowOverride None,改成 AllowOverride All (All表示整台服务器上都支持URL规则重写)


3、httpd.conf加入





Options FollowSymLinks


AllowOverride All





4、重启Apache服务器并启动服务


5、在URL重写的网站目录下放一个.htaccess文件,文件名是.htaccess。如无此文件或此文件中没定义任何关于URL重写的规则,则重写不会生效。


6、在.htaccess中通过正则表达式映射需要伪静态的页面。URL正则表达式如下:


RewriteEngine on


RewriteRule index.html index.php


RewriteRule (\d+).htmlinfo\.php\?infoid=info\.php\?infoid=1


效果为:www.abc.cn/info/info.php?infoid=100 映射为 www.abc.cn/info/100.html



可用于以下用途:


1、http错误的自定义页。格式 ErrorDocument 错误代码 /目录名/名.扩展名


ErrorDocument 404 /errors/notfound.html


ErrorDocument 401 “你权限访问该页面!”

2、拒绝某IP的访问


order allow,deny 


deny from 210.10.56.32 


deny from 219.5.45. 


deny from www.baidu.com


allow from all

3、保护.htaccess文档


4、Url转向(文档迁移,目录更改,显示友好易记的url)。格式:


Redirect /旧目录/旧文档名 新文档名


Redirect 旧目录 新目录

5、更改默认主页


DirectoryIndex 新的缺省名


DirectoryIndex filename.html index.cgi index.pl default.htm

6、反盗链


RewriteEngine on 


RewriteCond %{ HTTP_REFERER } !^RewriteCondRewriteCond [NC] 


RewriteRule .(gif&line;jpg)– [F]  RewriteRule .(gif&line;jpg)– [F]  RewriteRule .(gif&line;jpg) http://www.mydomain.com/替代名
[R,L]

 

八、配置反盗链


1、参见 配置Apache支持Url重写 节,配置Apache支持url重写


2、在站点的.htaccess文件中加入


RewriteEngine on


#允许空“HTTP_REFERER”的访问


RewriteCond %{HTTP_REFERER} !^[NC]RewriteCond[NC]RewriteCond http://nobing.cn/no.png
[R,NC,L]

说明:


R 就是转向的意思


NC 指的是不区分大小写


L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响

多个扩展名用|分隔

 



九、配置缓存





LoadModule cache_module modules/mod_cache.so 


LoadModule mem_cache_module modules/mod_mem_cache.so 


 


#默认缓存有效期(秒)


CacheDefaultExpire 3600 


CacheMaxExpire 86400 


CacheLastModifiedFactor 0.1 





#禁止缓存某些特定的URL 


CacheDisable /local_files 


#使用特定的存储类型缓存某些特定的URL 


CacheEnable mem /manual 


CacheEnable fd /images 


CacheEnable disk / 


 


CacheEnable mem / 


MCacheSize 8192 


MCacheMaxObjectCount 10000 


MCacheMinObjectSize 1 


MCacheMaxObjectSize 51200 


#MCacheRemovalAlgorithm LRU 


 


转载请注明:CodingBlog » PHP 零门槛必备第二章学习与进阶笔记

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情