第一部分 准备篇
第1章 Apache基础
1.1 Apache介绍:开源的http服务器软件
	  常见的Web服务器:Apache,IIS,Tomcat
	  web系统架构也被成为B/S架构-浏览器/服务器架构
	  工作原理:浏览器向服务器发送一个http请求,服务器对接收到的请求信息进行处理,然后将处理结果返回给浏览器,最终将浏览器处理后的结果呈现给用户
	  apache特点:简单、快速、高效、稳定
1.2 Apache安装与部署
1.3 httpd.conf深入剖析
	  httpd.conf:基本服务器配置,服务器的资源映射文件,服务器的访问权限等
	  站点基本配置:
		    ServerRoot "":Apache软件安装位置
		    PidFile logs/httpd.pid:第一个httpd进程的进程号文件(所有其他进程的父进程)
		    Listen 80:监听端口号
		    ServerName :主站点的名称
		    ServerAdmin admin@163.com:管理员的邮件地址
		    DocumentRoot "":主站点的网页存储地址
		    DirectoryIndex index.html index.htm index.php:主页文件的设置
	  服务器优化配置
		    利用的主要优势:更好的支持多处理器
		      ---
		      httpd -l # 列出Apache的所有模块
		      ---
		    工作模式如下:
			      prefork:服务器启动5个httpd进程(加上父进程,一共6个)
				        ---
				        ps -ax|grephttpd #查看httpd进程
				        ---
			      worker:现成监听客户的链接,当新客户链接时,其中一个空闲线程接受连接,服务器启动两个进程,50个线程,当线程不够用时,服务器会自动fork一个进程,再产生25个线程
			      perchild:紫禁城数量固定,线程数不受限制
	  HTTP响应头的信息配置
		    ServerTokens用来设置头部返回的apache版本信息,参数如下
			    Apache/2.0.54(Unix)mod_ssl/2.0.54 OpenSSL/0.9.7g
			    prod:仅软件名称;
			    Major:包括主版本号
			    Minor:包括次版本号
			    Min:仅完整版本号
			    OS:包括操作系统类型
			    Full:包括Apache支持的模块及模块版本号
	  持久性链接配置
		    KeepAlive On:开启持久性连接功能
		    MaxKeepAliveRequest 100:一个连接服务的最多请求次数
		    KeepAliveTimeOut 30:测试一次连接中的多次请求传输之间的时间,如果服务器已经完成一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接,默认15s
1.4 日志记录
	  日志的配置
		    ErrorLog file-path|syslag[:facility] # 指定当服务器遇到错误时记录错误的日志文件
		    LogLevel用于调整记录在错误日志中的信息的详细程度
			      emerg,alert,crit,error,warn,notice,info,debug
		    CustomLog file|pipe format|nickname [env=[!]environment-variable] # 用来对服务器的请求进行日志记录
	    错误日志:ErrorLog指令控制
		      示例:[Fri Mar 12 23:04:10 2010][error][client 127.0.0.1] script 'E:/www/test.php' not found or unable to stat
		      参数说明:
			        [Fri Mar 12 23:04:10 2010]:错误发生的时间
			        [error]:错误级别
			        [client 127.0.0.1]:导致错误的ip地址
			        script 'E:/www/test.php' not found or unable to stat:错误原因
	    访问日志
		      存放文件和记录的格式指令:CustomLog
		      定义日志内容格式指令:LogFormat
		      通用日志格式
			        设置
				          LogFormat "%h %l %u %t \"%r\" %>s %b" common
				          CustomLog "" common
			        产生结果
				          127.0.0.1 - - [12/Mar/2010:23:08:09 +0800] "GET /test.php HTTP/1.1" 404 206
				          参数解释:
            127.0.0.1:发送请求到服务器的客户端ip地址
            第一个'-':由客户端identd进程判断的RFC1413身份,-表示此处信息无效
            第二个'-':http认证系统得到的访问该网页客户端标识,401代表客户端未通过认证,-代表不需要认证
            [12/Mar/2010:23:08:09 +0800]:服务器完成请求处理的时间 +0800代表时区
            "GET /test.php HTTP/1.1":客户端发出的请求行
            404:服务器返回给客户端的状态码
            206:返回给客户端不包含响应头的字节数
		      组合日志格式
			        设置
				          LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{user-agent}i\" " combined
				          CustomLog "" combined
			        产生结果
				          123.206.210.160 - - [28/Oct/2018:04:01:27 +0800] "GET /help.php HTTP/1.1" 404 206 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/31.0"
				          参数解释:
            多出来的-:referer请求头,-代表内容为空
            "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/31.0":user-agent请求头,客户端提供的浏览器识别信息
1.5 虚拟主机
	  通过<VirtualHost>区块指令来识别不同的身份(虚拟主机)
	  基于主机名的虚拟主机
		    NameVirtualHost *:80 # 指定主机的IP地址和端口号
		      <VirtualHost *:80>
        DocumentRoot "/var/www/html"
        ServerName 
        ServerAlias 
        ServerAlias 114.115.159.177
        ErrorLog "logs/localhost-error_log"
		      </VirtualHost>
	  基于IP地址的虚拟主机
		    NameVirtualHost 192.168.1.1 # 指定主机的IP地址和端口号
		    <VirtualHost 192.168.1.1> # 注意要与外边的一致
      DocumentRoot "/var/www/html"
      ServerName 
      ServerAlias 
      ServerAlias 114.115.159.177
      ErrorLog "logs/localhost-error_log"
		    </VirtualHost>
1.6 URL重写
	  mod_rewrite模块:基于正则表达式分析器的重写引擎来实现重写url请求
		    指令分为服务器级和目录级
		      服务器级作用域为服务下的所有网站,在httpd.conf中配置
		      目录级只对.htaccess文件所在目录有效,在.htaccess中配置
		    工作步骤:
			      接收一个具有一定规则的url请求
			      按照设定的规则进行匹配,成功则生成匹配结果
			      通过匹配结果进行下一步操作
		    开启重写功能
			      httpd.conf文件中LoadModule rewrite_module modules/mod_rewrite.so去掉注释 
	  常用指令
		    RewriteEngine On|Off:开启|关闭重写引擎
		    RewriteBase url_path:设置重写根目录
		    RewriteCond test CondPattern [flags]:定义重写规则的条件,满足该条件进行重写
		    RewriteRule Pattern Substitution [flags]:定义重写规则的条件,满足该条件进行重写
		    RewriteLogLevel level:重写引擎日志的详细程度的级别,默认为0(不记录),9代表记录所有操作(level很大会降低服务器速度)
1.7 实战案例
	  防图片盗链
		    通过http referer进行限制,设置默认图片
	  apache伪静态
		    通过程序生成静态化页面|rewrite模块来实现
	  用户访问权限设置
		    创建用户
			      ---
			      htpasswd -c 目录/htaccess user1
			      ---
		    httpd.conf开启如下三个模块
			      LoadModule auth_basic_module modules/mod_auth_basic.so
			      LoadModule auth_file_module modules/mod_authn_file.so
			      LoadModule auth_user_module modules/mod_authz_user.so
		    /conf/extra/文件中
			      <Directory "C:/apache2.2/htdocs/shop/"> # 注意要与外边的一致
        Options Indexes MultiViews
				        AllowOverride None
				        Order allow,deny
				        Allow from all
			      </Directory>
			      <Directory "C:/apache2.2/htdocs/shop/">
				        AuthType Basic [None | Basic | Digest | Form,后三种为不同的加密方式] #指定认证类型模型
				        AuthName 请输入用户名和密码 # 验证登录框的提示信息
				        AuthUserFile /usr/file/password # 指定验证信息文件的存放目录
				        Require user user1 # 指定允许访问的用户,多个用户之间用空格隔开
			      </Directory>
第2章 PHP与MYSQL开发环境的搭建
2.1 在windows上安装iis
2.2 PHP的安装和配置
	  在windows下的安装和配置
	  在linux下的安装和配置
		  apache安装和配置
			    安装包拷贝到"/usr/local"下
				      ---
				      cp httpd-2.2.17.tar.gz /usr/local/
				      ---
			    切换目录为"/usr/local",创建httpd目录
				      ---
				      cd /usr/local
				      mkdir httpd
				      ---
			    解压安装包,解压后进入目录
				      ---
				      tar zxvf httpd-2.2.17.tar.gz
				      cd httpd-2.2.17
				      ---
			    配置项检测,生成makefile文件,为make做准备
				      ---
				      ./configure --prefix=http://www.likecs.com/usr/local/httpd --enable-so
				      ---
			    编译
				      ---
				      make
				      ---
			    安装
				      ---
				      make install
				      ---
			    apache启动:/usr/local/httpd/bin/apachetcl start
			    apache停止:/usr/local/httpd/bin/apachetcl stop
		  安装libxml---xml c语言版的解析器
			    与apache安装相同
		  PHP安装预配置
			    安装同Apache安装
			    配置项检测出的异同:
				      ---
				      ./configure --prefix=http://www.likecs.com/usr/local/php --with-apxs2=http://www.likecs.com/usr/local/httpd/bin/apxs --with-libxml-dir=http://www.likecs.com/usr/local/libxml2 --with-mysql=http://www.likecs.com/usr/local/mysql --with-mysqli=http://www.likecs.com/usr/local/mysql/bin/mysql_config --with-pdo-mysql=http://www.likecs.com/usr/local/mysql
				      ---
			    安装完成后修改配置文件
				    ---
				    gedit /usr/local/httpd/conf/httpd.conf
				    ---
				    在末尾添加如下两行
				    -----
				    AddDefaultCharset UTF-8
				    AddTypr application/x-httpd-php.php
				    -----
			    修改目录的用户权限
				      ---
				      chown -R /usr/local/httpd/htdocs/
				      chmod -R 755 /usr/local/httpd/htdocs/
				      ---
			    测试
				      -----
				      <?php
      phpinfo();
				      ?>
				      -----
			    拷贝PHP.ini文件
				      ---
				      cp /usr/local/php-5.2.14/php/ini-recommended /usr/local/php/lib/php.ini
				      ---
2.3 MySQL的安装预配置
	  windows下的安装和配置
	  linux下的安装语篇日志
		    创建mysql账号,并加入组群
			      ---
			      /usr/sbin/groupadd mysql
			      /usr/sbin/useradd -g mysql mysql
			      ---
		    拷贝安装包
		    解压
		    创建到跟那个解压的文件夹的链接,并命名为mysql
			      ---
			      ln -s mysqll-5.1.53-linux-i686-glibc23 mysql
			      ---
		    进入目录并安装
			      ---
			      cd mysql
			      ./scripts/mysql_install_db --user=mysql
			      ---
		    拷贝mysql配置文件到系统目录,并重命名为my.cnf
			      ---
			      cp ./support-files/my-medium.cnf /ext/my.cnf
			      ---
		    启动mysql:/usr/local/mysql/bin/mysqld_safe --user=mysql&
		    停止mysql:/usr/local/mysql/bin/mysqldadmin -u root -p shutdown
		    登入:/usr/local/mysql/bin/mysql -u root -p
2.4 php与mysql连接
	  PHP.ini文件去掉注释
		    extension=php_mysql.dll
		    extension=php_mysqli.dll
		    extension=php_pdo_mysql.dll
	  关系型数据库;mysql sqlserver,oracle
	  数据库抽象层:metabase/pear:db/pdo/adodb
《php与mysql权威指南》第一部分
内容版权声明:除非注明,否则皆为本站原创文章。

