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. DNS服务器搭建

    注意正式运行的dns服务器主dns设置 中没有启用转发器,所以部分网页如taobao解析时可能很慢.开启转发器即可转发器地址指向电信dns. [root@master ~]# lsb_release ...

  2. PHP使用COM 获取RTF内容

    1. 需要在APP服务器上安装Office 2. 可能需要创建文件夹:Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop 3. 可能需要设 ...

  3. 智捷公开课马上开始了-欢迎大家一起讨论学习-第一系列读《Swift开发指南(修订版) 》看Swift视频教程

    引用: 智捷课堂携手51CTO学院.图灵教育联合举办iOS线上培训就业班系列体验公开课. 分享移动开发.移动设计方向最新,最热,最抢眼技术热点以及设计经验.我们每周将最少举办一次公开课,同时会提前安排 ...

  4. 20141111--SQL触发器

    ---------------------触发器----------------------------- --触发器本质上还是一个存储过程,trigger --只不过不是通过exec调用执行,而是通 ...

  5. 转载:python文件打开方式详解——a、a+、r+、w+区别

    第一步 排除文件打开方式错误: r只读,r+读写,不创建      ###f.readline()是读取第一行,f.readlines()是读取全部并返回一个列表 w新建只写,w+新建读写,会将文件内 ...

  6. 分享7款顶级的CSS3动画特效

    1.CSS3 SVG文字背景动画 超酷的文字特效 今天我们来分享一款基于CSS3和SVG的文字特效,文字的背景可以定义一些动画特效,在背景动画播放的同时,我们还可以选中文字.本示例让文字背景展示水波和 ...

  7. VC按钮控件实现指示灯效果

    VC为按钮控件添加图片的方法有很多种: 直接调用SetBitmap:  CButton pButton->SetBitmap(hBitmap); 使用CButtonST控件: 使用CDC: 使用 ...

  8. java 设计模式之单例模式

    -------Success is getting what you want, happiness is wanting what you get. java设计模式之单例模式(Singleton) ...

  9. Linux下安装Websphere MB所需的系统rpm包

    很少使用到Linux,这次刚好用户有一个在linux下搭建Websphere MB/MQ的任务.试了几次都不行,经过多方打听,询问原来是少了rpm包的问题,但是,具体包名不详.. --#mount / ...

  10. NSS_08 extjs表单验证

    Extjs做了非常好的表单验证功能, 使用起来非常方便. 系统内置了4种验证功能,分别是alpha, alphanumeric,url, email, 在程序中可以直接使用,(可以结合allowBla ...