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. android目录

    2013-09-121.activity生命周期 activity生命周期2 widget http://blog.csdn.net/xiang_j2ee/article/details/727564 ...

  2. How To Install Development Tools In Linux

      In this brief tutorial, we will be discussing how to install development tools in popular Linux di ...

  3. 干掉拖延症!写给新人的GTD方法

    部门周会上有一个环节是每个同学讲述本周之最:最认可自己的.最反思的.最困惑的.其中,最认可自己,代表自己阶段性的成就感,在从外界取得成就感之前,首先自己要认可自己.最反思,要注意,不能只反不思,要记录 ...

  4. CSS选择器笔记

    一.元素选择符 序号 选择器 含义 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元 ...

  5. MVC中Jqgrid的用法

    Jqgrid可以接受的数据源格式通常是local.json.string等,而我们通过MVC Controller查询数据库(Linq)通常转化为tolist(),例如: public object ...

  6. GitHub之上传文件

    github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开.对于一般人来说公共仓库就已经足够了,而且我们也没多少代码来管理,O(∩_∩)O ...

  7. JQuery 动态添加onclick事件

    $('#div_id').click(function(){ show(1,2,this); });

  8. 【学习笔记】【C语言】指向函数的指针

    每个函数都有自己的内存地址,指针保存了函数的地址后就能指向函数了. #include <stdio.h> double haha(double d, char *s, int a) { } ...

  9. List.Select按字符串选择属性

    不知道大家有没有遇到这样的情况:List使用Lambda表达式的时候,想要选择项的某个属性列. 例如,选择编号ID: var idList=list.Select(o=>o.ID).ToList ...

  10. C# 线程--第一单线程基础

    概念 什么是进程? 当一个程序被打开运行时,它就是一个进程.在进程中包括线程,进程可以由一个或多个线程组成. 什么是线程? 线程是程序执行流的最小单元.一个标准的线程由线程ID,当前指令指针(PC), ...