《php与mysql权威指南》第一部分

第一部分 准备篇
第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 www.example.com:主站点的名称
    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 www.example.com
        ServerAlias www.example.com
        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 www.example.com
      ServerAlias www.example.com
      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=/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=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-libxml-dir=/usr/local/libxml2 --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/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

posted @ 2018-11-13 10:21  井梅0709  阅读(284)  评论(0编辑  收藏  举报