php与mysql权威指南_《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 虚拟主机

通过区块指令来识别不同的身份(虚拟主机)

基于主机名的虚拟主机

NameVirtualHost *:80 # 指定主机的IP地址和端口号

DocumentRoot "/var/www/html"

ServerName www.example.com

ServerAlias www.example.com

ServerAlias 114.115.159.177

ErrorLog "logs/localhost-error_log"

基于IP地址的虚拟主机

NameVirtualHost 192.168.1.1 # 指定主机的IP地址和端口号

# 注意要与外边的一致

DocumentRoot "/var/www/html"

ServerName www.example.com

ServerAlias www.example.com

ServerAlias 114.115.159.177

ErrorLog "logs/localhost-error_log"

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/文件中

# 注意要与外边的一致

Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all

AuthType Basic [None | Basic | Digest | Form,后三种为不同的加密方式] #指定认证类型模型

AuthName 请输入用户名和密码 # 验证登录框的提示信息

AuthUserFile /usr/file/password # 指定验证信息文件的存放目录

Require user user1 # 指定允许访问的用户,多个用户之间用空格隔开

第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/

---

测试

-----

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值