web运行大致流程
浏览器输入地址,回车(发送请求)
根据规则找到对应web服务器。规则如下:
首先在本机hosts文件中找对应IP
如果hosts中没有找到,则到互联网上找对应IP
如果还是没有找到,则终止请求,返回“找不到服务器”提示
web服务器取得对应文件
如有需要,对该文件进行一定的处理(比如php代码执行)
将文件(或执行结果文件)返回给浏览器(返回应答)
浏览器接收到文件
浏览器处理文件(显示/执行) hosts文件位置:
window操作系统目录/system32/drivers/etc/hosts
注意:hosts文件没有后缀,而且就是文本文件。
该文件只有一个语法:
ip地址 域名
含义:该域名对应该ip地址。
其中127.0.0.1表示“本机”
DNS服务器:无非是“超大规模的hosts文件” WEB软件运行原理图 PHP网站运行原理图:
涉及到浏览器, apache软件, PHP语言, MySQL数据库,我们的PHP程序(代码) 安装apache
规划目录:
尽量将apache,php,mysql安装到一个位置,比如: 建议大家直接在c盘或d盘建一个文件夹amp,然后再分上述目录。
安装完后,初始站点为:http://localhost/
如下: 该站点对应文件夹为: apache安装目录/htdocs/
该“主页”文件为:index.html 在apache中配置PHP语言包
apache的配置文件为:
apache安装目录/conf / httpd.conf
打开它,并“装载”php语言包:
基本语法如下: 并重启apache。 设定php文件有php语言模块处理的代码,还可以有以下方式: 实际上,这种后缀,可以任意设定,比如
AddType application/x-httpd-php .php .abc phtml php的配置
配置时区
初始运行php输出时间: 结果却是这样: 错误提示的意思是没有配置php的“时区”(timezone)。
php的配置文件默认“没有”,如下所示:
先运行<?php phpinfo(); ?>,可以看到php的配置文件的情况 虽然默认情况下,php没有配置文件也能运行。但实际上,php语言包中提供了2个配置文件的模板,自己选用就可以了: 我们只要修改其后缀就可以(现在选用开发阶段的php.ini) 首先,我们要需要在apache的配置文件中,“指定”php.ini文件的位置!!! 然后再去php.ini文件中找到关键字:timezone,
原始:
修改为如下: 还得重启apache。
最后重新运行刚才的3php.php网页: 配置php内部模块
php,作为一门语言,其也有若干个模块,每个模块可以完成某些特定的工作,比如数据库操作,比如图片处理。
这些模块,通常都只要进行“开关”设置,如下所示: 目标:让php可以调用mysql函数,如下所示: 初始运行结果为: 说明:严重错误,调用了未定义的函数 mysql_connect();.......
实际上,mysql_connect()函数,就是隶属于php中的一个模块,必须打开该模块,才可以使用:
初始: 打开它: 还需要指定,php的这些(扩展)模块所在的完整物理路径(位置),形式如下:
extends_dir “完整物理路径(位置)”; 修改为: 重启apache,然后再浏览,结果为: 可见,现在该函数可以使用了,但因为还没有mysql数据库服务器,自然连接不成功! 接下来安装mysql数据库
mysql数据库的安装
我们安装: mysql-5.5.24-win32.msi 然后在重新运行, 结果如下: 设置2个环境变量以方便和后续的操作:
apache的bin目录:
apache安装目录/bin
mysql的bin目录:
mysql安装目录/bin 加入到系统环境变量设置:
资源管理器》计算机》右键》属性》高级属性设置》高级》环境变量》系统变量》path
虚拟主机基本配置
什么叫虚拟主机?
通常是指,对外看来是一台独立运行的“服务器”,有其自身的域名可以对外提供服务。虚拟主机其实就是讲一台真实的主机(电脑),通过一定的软件设定,让外界看起来像有“多台”主机,此时就成为虚拟主机。
端口监听设置
一台电脑(服务器),对外来说,确定其“身份”(位置),本质上只有一个IP。通过IP来识别该服务器。 此时,如果一个请求来到“本机”,但又可能需要不同的方式来区分不同的请求(比如web浏览请求,文件下载请求,邮件收发请求。。。。),此时就使用一个叫做“端口”的数字来对此做进一步区分。
对于apache,则只要在配置文件httpd.conf中,声明对哪些端口提供服务,则外界来的该端口请求就会找到apache这个web软件并提供相应服务——如果不是这些端口,apache不负责。
默认只对80端口负责提供web服务: 我们可以自己来加上更多端口(虽然很少这样实际使用): 重启apache,结果如下: 主机配置关键项:2项
设定主机名:
就是网站的域名。
ServerName www.abc.com
或者:
ServerName abc.com
或者:
ServerName news.abc.com
或者:
ServerName def.news.abc.com 设定主机的实际物理路径:
就是网站的实际文件所在位置。
DocumentRoot “c:/www”
或者:
DocumentRoot “H:/itcast/class/bj-php-36” 理解一个主机的本质:就是一个文件夹而已,并映射一个域名以对外“好看”。 不过,通常,一个站点的实际文件夹,也需要给其设定“访问权限”:
目录访问设定
<directory “要设定权限的实际目录路径”>
#这里来设定访问权限
</directory>
举例: 在目录权限设定范围中,还可以设定“是否允许分布式权限配置文件”:
<directory “要设定权限的实际目录路径”>
AllowOverride All
</directory>
其含义是:该目录中,允许一个特定的文件(.htaccess)来对该目录做“其他设定”(其实也是权限设定一类)。该文件的设定,会覆盖这里Directory中的设定! 在该文件中: 其他相关设定
默认页设置DirectoryIndex:
如果请求的地址中没有指定要访问的页面文件名,则此项生效 目录别名设置Alias
目录别名又叫“虚拟目录”,就是一个不存在的文件夹(目录) ,但却可以对外访问。
比如,某站点(www.php36.com)所在的文件夹中,没有soft这个目录,但我们可以配置出如下可访问的效果:
http://www.php36.com/soft/ 语法实现:
Alias /虚拟目录名 “实际目录完整路径”
举例: 多域名虚拟主机配置
一个主机,通常设定的项包括:
主机名(ServerName)
主机别名(ServerAlias):
主机实际路径(文件)(DocumentRoot)
目录权限中的一些设定:<Directory>Options, Order, Allow, AllowOverride, DirectorIndex...</Directory>
目录默认页设定(DirectorIndex)
目录别名(Alias): 则多域名虚拟主机设定,就是可以做多个站点,每个站点都可以设定上述项目。 注意:我们如果开通过多域名虚拟主机配置项,则原来httpd.conf中的默认主机的配置项就“失效”了。 多站点实现方式:
1,在主配置文件(httpd.conf)中打开虚拟主机配置文件(httpd-vhosts.conf)引入项:
初始: 打开后: 2,设定计划做多站点配置的IP及端口(通常是已经设定好了): 3,然后就一个一个站点配置就好了:
#站点1:
<VirtualHost *:80>
这里就是第一个站点的所有配置项
</VirtualHost>
#站点2:
<VirtualHost *:80>
这里就是第 2 个站点的所有配置项
</VirtualHost>
#站点3:
<VirtualHost *:80>
这里就是第 3 个站点的所有配置项
</VirtualHost> 举例:
通常,需要先删除默认安装时生成的2个“虚拟主机配置项”。 站点2: 可见该站点只是“找回”原来的站点而已。 在这种多站点配置中,第一个站点被称为“默认站点”:
——当某个请求根据端口进入到本apache的服务范围中,但该请求的地址信息中的域名又无法跟任何一个站点的主机名匹配的时候,Apache就会当做用户是要访问该默认站点(第一个站点)。

php配置步奏的更多相关文章

  1. Centos7 配置网络步奏详解

    Centos7 配置网络步奏详解 编辑网卡配置文件 vi /etc/sysconfig/network-script/ifcfg-ens01 备注:这里的ens01不是所有系统都叫这个,有的可能叫其他 ...

  2. cocos2dx创建win32项目一般步奏

    1.导入一个新项目步奏:解决方案:右键->添加->添加现有项目->添加依赖项目libCocoStudioD:\work\CannonDefender\cocos2d\cocos\ed ...

  3. linux 生成免密登陆步奏

    1.大致流程 有时需要从服务器A免密连接到服务器B,这时需要在服务器A生成私钥和公钥,大致过程其实就2步. 1.1 在服务器A生成公钥和私钥 在服务器A上输入如下命令: ssh-keygen -t r ...

  4. Struts1项目转成Struts2项目步奏

    注意:要转成Struts2必须struts2配置和流程理解,我不知道,我只能说还是知道struts2然后转成struts2对. 1.先备份一份.不要没转成功项目搞蹦了都回不来了. 2.导入Struts ...

  5. NDK 的helloworld步奏

    1. helloworld.c #include <string.h> #include <jni.h> /* * Class: com_example_ndk_NativeH ...

  6. gat和post封装代码和爬虫的5个步奏

    1了解需求2根据需求找网站3请求4获取5存储from urllib import request, parsefrom urllib.error import HTTPError, URLError ...

  7. JDBC编程步奏、问题总结(一)

    jdbc编程步骤: 1. 加载数据库驱动 2. 创建并获取数据库链接 3. 创建jdbc statement对象 4. 设置sql语句 5. 设置sql语句中的参数(使用preparedStateme ...

  8. node 模板引擎使用的步奏

    //定义模板引擎 app.engine('html',swig.renderFile);//设置模板引擎所存放的位置app.set('views','/views');//注册所使用的模板引擎app. ...

  9. MySQL(mariadb)主从复制模式与复制过滤

    在前一篇文章<mysql多实例与复制应用>中只对mysql的复制做了简单的介绍,本篇内容专门介绍一下mysql的复制. MySQL复制 mysql复制是指将主数据库的DDL和DML操作通过 ...

随机推荐

  1. C#程序开机运行

    #region 系统启动项 /// <summary> /// 获取启动项值 /// </summary> /// <param name="name" ...

  2. Sharepoint 高级筛选

    先看看效果吧.............. 默认情况下:不做任何筛选. 添加一个筛选条件: 条件:如果是int类型那么可以有> < = 等 如果是string的话那么就没有这么多条件,当然这 ...

  3. HTML5_注册表单的自动聚焦与占位文本

    首先看下面要使用HTML自动聚焦和占位文本的示例代码 1: <!DOCTYPE html> 2: <html> 3: <head> 4: <title> ...

  4. android 底部tabview模板

    以下只是我个人的浅见,大神请忽略~ 底部tab的实现如下图: 现在实现这种界面是有很多方法的,但是对于android新手来说,实现这样的界面还是有难度的. 在网上找到了一个别人写好的底部tab模板,修 ...

  5. Java之简单图形面积计算

    设计一个类层次,定义一个抽象类--形状(类名:shape).其中包括求形状的面积抽象方法(方法名:calArea()).继承该抽象类定义三角形(Triangle).矩形(Rectangle).圆(Ci ...

  6. c#抽象类相关

    abstract class mylass { public int age{get;set} public abstract void SaiHi(); } 1,抽象类中可以有实例成员,也可以有抽象 ...

  7. OSPF系列

    实验一.点对点链路上的OSPF 拓扑图 1. 首先配置好路由器R1接口地址和回环地址 2. 配置路由器R2的接口地址和回环地址 3. 配置路由器R3的接口地址和环回地址 4. 配置R1的OSPF协议 ...

  8. git 基本使用

    简单几步操作让你在终端下用git实现文件的上传. 一.克隆项目    在工作中,常见的情景都是远程库已经建好了,需要大家把代码拉下来,共同协作开发.本文所有操作均在终端下进行.    //克隆一个本地 ...

  9. Winform实现鼠标可穿透的窗体镂空效果

    今天找到一个名叫LICEcap的录屏软件,录制界面是这样的:     这个炫酷的空心窗口就是镜头,调整好大小,然后对准需要录制的地方按下Record就可以生成gif了. 卧槽太NB了我也要做一个! 根 ...

  10. 升级ionic版本后,创建新项目报Error Initializing app错误解决

    命令行,进入项目路径后,运行 ionic start myApp --v2 命令执行后,报如下错误 Installing npm packages...Error with start undefin ...