思考:作为一名开发人员,如何将自己的网站让互联网上其他的电脑能够访问呢?
引入:网站想要让其他用户访问,其实就是让其他用户知道你有一台Web服务器,而且知道服务器所在的地址即可。
搭建基础Web服务器【掌握】
定义:基础Web服务器,就是在电脑上安装一个对应的Web服务器,能够对外提供本地已有的网页资源(静态网页)。而与PHP配合最好的Web服务器无外乎两种:Windows下通常是Apache,而Linux下可以是Apache或者Nginx。Windows系统通常初学者都比较熟悉,因此第一台基础Web服务器就是在Windows下安装Apache。
1.获取Apache:apache官网,但是下载步骤还比较麻烦(大家也可以百度一下如何下载),直接给大家一个下载链接:Apache2.4下载注意选择系统对应位数(64位和32位)
2.解压文件
3.将Apache24文件夹复制到安装目录:案例地址D:/server/
4.查看文件目录
5.修改配置文件:配置网站默认站点
-
ServerRoot:服务器所在目录:D:/server/Apache24
DocumentRoot:网站默认根目录:D:/server/Web(为了方便新建一个Web文件夹,学习通常可以放到默认网站根目录:Apache/htdocs)
Directory:权限控制,指定与网站默认根目录一致:D:/server/Web
以后建议使用快捷键:win键+R键(同时按),然后输入cmd命令(常用)
进入到控制台界面
7.切换磁盘路径为Apache所在磁盘D盘:直接输入盘符:D:(带冒号),然后回车
8.使用CD命令(Change Directory)进入到Apache的bin目录下:cd server/Apache24/bin,然后回车
9.安装Apache,并将Apache安装成Windows系统服务,输入:httpd.exe -k install
10.第一次安装后不会自动启动,需要手动启动,输入:httpd.exe -k start(也可以启用ApacheMonitor(Apache/bin/ApacheMonitor.exe)
11.结果验证
12.修改配置文件,除去错误信息。找到ServerName,增加一个ServerName 为localhost
13.通过httpd.exe -t进行配置文件错误检查
至此,Web服务器就安装完成,如果只是一般的静态页网站(纯HTML、CSS和JavaScript网页)就可以通过该服务器对外发布了。如果要完成对外发布,只需要额外做以下几件事情:
1.购买或者租用(通常已经安装好)一台服务器安装上Apache2.购买一个域名,将Apache的配置文件中的ServerName由localhost改成对应的域名3.在购买域名的服务商那里绑定所购买的域名指向的你服务器对应的IP地址4.将网站页面放到对应的Web文件夹(DocumentRoot所指向的文件路径)
总结:基础Web服务器就是需要安装一个Apache即可,随即可以向外提供对应的网站服务,操作还是很简单的。
思考:静态网站通过Apache可以服务,但是如果开发的是一个动态网站,用的是PHP语言,那么Apache能够解决问题吗?
引入:PHP是一种运行在服务器端的脚本语言,言外之意需要在服务器端(Apache)就解析掉,浏览器不可识别。而Apache的本质只是从服务器获取已有文件,提供给浏览器的功能,并不能解析PHP或者其他动态脚本语言。因此,想要解析PHP脚本就必须安装PHP解释程序。
安装PHP【掌握】
定义:PHP解释器是一种能够将PHP编写的代码解析成HTML格式的代码的软件,它由Zend公司提供,专门解析PHP代码。因此服务器端若需要解析PHP脚本,就必须通过PHP解释程序来实现。接下来就在服务器端实现PHP的安装。
1.获取PHP:php官网,获取最新版本7.2.4,或者直接进入PHP7.2.4下载界面下载(注意下载适合计算机的位数的版本zip文件,当前电脑为64位操作系统,另外下载的软件应该是Thread Safety)
2.解压缩压缩文件到D:/server目录下
4.掌握PHP常用内容
-
PHP扩展:ext(extension)文件夹,存放了PHP所支持的各类扩展
PHP执行文件:php.exe,PHP代码解释器,能够将PHP代码解析成HTML文件
-
PHP配置文件:php.ini,默认的PHP提供了两套配置文件php.ini-development(开发环境)和php.ini-production(生产环境)
5.将php.ini-development修改成php.ini格式(建议复制一份php.ini-development然后修改成php.ini)
6.测试php.exe的功能
-
在D:/server/Web文件夹下创建一个index.php文件(需要通过文件系统修改显示文件后缀名,Windows系统默认隐藏后缀名)
使用编辑器打开文件,然后输入对应的代码(不建议使用Windows自带的TXT编辑器,建议使用代码编辑器:editplus/phpstorm/subline)
-
在控制台(CMD)下进入到php.exe所在目录
使用命令测试php.exe对代码的执行:php.exe -f D:/server/Web/index.php
总结:PHP的安装很简单,PHP也的确能够将PHP的脚本解析成对应的HTML文件。在安装的过程中没有过多要注意的东西,但是在安装路径上要注意不能使用中文路径。
思考:PHP能够解析PHP文件,Apache能够根据用户的需求去访问PHP文件,但是二者的操作是独立的,这样能够实现动态网站吗?
引入:PHP与Apache的“独立”工作无法实现动态网站,因为实际的请求是用户请求Apache服务器,而Apache想要的结果是拿到一个PHP文件并解析成HTML,自己却做不到。要实现动态网站,就需要Apache在拿到PHP文件请求的时候,能够让PHP解释器来帮忙解析。
Apache加载PHP【掌握】
定义:Apache的工作原理是模块化加载工作,即加载某个模块后就可以使用对应模块的功能;而PHP是独立工作,不具备从互联网中接收别人请求的能力,二者需要相互协作。协作的模式就是PHP为Apache提供的调用功能模块,Apache只需要按照正确的方式去调用PHP,并且让PHP在需要的时候能够工作即可。
1.找到PHP为Apache提供的模块文件:php7apache2_4.dll
2.在Apache配置文件中使用LoadModule命令加载PHP模块:LoadModule php7_module php7apache2_4.dll路径(绝对路径)
3.在Apache中指定需要PHP解析的文件(以后缀区分):AddType application/x-httpd-php .php .html(多种文件可以使用空格分离,通常就是php和HTML文件)
4.PHP虽然为Apache打工,但是PHP的运行是独立的,如果想让PHP完全服从Apache,需要将PHP的配置文件加载到Apache中:PHPIniDir php.ini文件路径(绝对路径)
6.测试运行:在D:/server/Web/index.php中输入phpinfo()函数
7.在浏览器中打开访问:localhost/index.php
8.在PHP环境中往下找可以看到,timezone(时区)对应的默认的是UTC(世界标准时间),作为中国开发者应该修改为PRC时区,所以需要在php.ini中找到timezone,并添加一个为PRC(默认注释掉了)
9.重启Apache生效
总结:Web服务器要实现制作动态网站,需要Apache和PHP共同协作。而Apache和PHP是独立的软件,PHP知道自己的缺点(不能独立获取用户请求),便“委身于”Apache,为Apache提供调用模块,Apache就可以在特定情况下调用PHP。Apache加载PHP在实际开发中经常用到,而实际的操作只有那么几步,务必掌握好。
思考:Apache加上PHP之后的确能够实现网站的动态效果,但是所谓的动态的很大的前提是根据用户的需求提供不同的数据,Apache显然是不能保存数据的,PHP是否可以做到呢?
引入:PHP是一种动态处理的脚本语言,能够在内存运行过程中保存数据,但是所有的数据是基于内存的,一旦运行结束,内存就会返回给操作系统,意味着数据就会消失。所以PHP本身不能长久持续的保留数据,所以不能够对外提供数据支持。因此,如果想要持久的数据支持,Apache和PHP还做不到,还需要能够持久化存储数据的数据库支持。
安装Mysql数据库【掌握】
定义:数据库是一种能够持久化存储数据,同时高效的管理数据的软件,是为动态网站根据用户提供不同数据的基础支撑。mysql数据库是一种独立的软件,是一种在PHP需要的时候通过代码去操作的软件。因此mysql的安装可以完全独立出来,不需要在安装时就与Apache或者PHP关联(Apache无法操作数据库)。同时,mysql也是一款开源免费的数据库产品,深得广大开发公司的喜爱。接下来就完成Mysql数据库的安装。
1.获取Mysql安装软件:Mysql官网,获取最新版本mysql5.7.21(同样注意计算机位数) 2.解压缩文件,同时把解压后的文件夹放到Server目录,即D:/server/下
3.为了方便管理,把文件夹重命名为mysql
4.mysql以后会经常使用,因此先添加系统环境变量:以Windows10为例,邮件“我的电脑”选择“属性”,然后点击“高级系统设置”
5.点击“环境变量”,选中“系统变量”中的“path”,点击下面的“编辑”按钮,进入到系统环境变量管理界面
6.点击“新建”增加环境变量,并输入:D:\server\mysql\bin(注意:在Windows下正斜杠“/”和反斜杠“\”都可以作为路径分隔符),然后点击各种“确定”按钮
8.在mysql.ini中输入以下配置内容
[mysqld]
port = 3306
basedir=D:/server/mysql
datadir=D:/server/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8
9.在控制台(CMD)进行命令安装(管理员身份进入),进入到Mysql的bin目录,输入:mysqld.exe -install
10.进行初始化操作,继续输入:mysqld --initialize-insecure --user=mysql
11.此时会在mysql安装目录下多出一个data目录,用于存储数据
12.第一次安装不会自动启动mysql,需要手动启动(以后自动启动),输入:net start mysql
13.默认安装mysql有一个超级管理员用户root,但是当前没有密码,非常不安全,因此需要修改root用户的密码,输入:mysqladmin -u root -p password 新密码
14.在增加新密码的时候,会让你输入旧密码,而原来没有密码,所以直接回车即可
15.安装好了之后测试下效果:Mysql是一种C/S结构软件,因此需要使用客户端去访问服务端,mysql提供了自己的客户端mysql.exe,可以在控制台(CMD)下通过mysql.exe进行访问,输入:mysql.exe(或者mysql) -u用户名 -h主机地址 -P端口 -p密码
总结:Mysql数据库是一种广泛应用的数据库软件,64位的数据库(Apache也一样)都是通过配置安装,如果32位的有安装文件(.exe结尾),安装过程比配置安装要简单一点。至此,一个真正有效的动态网站的服务器环境搭建(WAMP)就搭建完成,我们可以在这种环境下去开发需要的网站了。
思考:Web服务器已经完成了,可是我们的网站访问是通过localhost来访问,但是实际上网络上网站的访问都不是通过localhost访问的,这个怎么实现呢?
引入:localhost访问通常是开发阶段,程序员在本地开发和测试的时候使用的,如果部署好对外访问的话,需要申请公网有效的域名并进行维护。而且通常,程序员在开发的时候手上不止一个项目,为了安全和方便,都不会放到一个文件夹,而是分开维护。所以还需要通过Apache来实现多项目开发管理。
安装虚拟主机【掌握】
定义:Apache为了方便用户开发,也方便服务器对外提供多个网站的访问,提出了虚拟主机的概念。虚拟主机是指在一台计算机上,理论上只能代表一台主机,但是因为需求需要在一台电脑上对外提供多个网站服务,Apache可以通过一定的技术手段(配置),让一台电脑好像拥有多个主机,这个技术称之为Apache虚拟主机。
1.虚拟主机分类:Apache虚拟主机根据设定的方式可以分为两类:
- 基于IP的虚拟主机:一台电脑绑定多个IP(多个网卡,一个网卡一个IP),每个IP针对一个网站;
- 基于域名的虚拟主机:一台电脑上只有一个IP,但是通过给不同文件夹命名一个“虚拟”的主机名号,一个文件夹对应一个网站。
2.搭建基于域名的虚拟主机:基于域名的虚拟主机可以在Apache的主配置文件中httpd.conf下进行配置,但是Apache为了方便配置文件的管理,将虚拟主机单独形成了一个配置文件叫做httpd-vhosts.conf,在主配置文件同级目录的extra文件夹下。
①.在主配置文件夹中开启虚拟主机配置文件的加载(默认关闭的):httpd.conf
②.在虚拟主机配置文件中清除已有的示例虚拟主机
④.配置虚拟主机主要信息:站点位置(文件夹路径)和主机名,其中站点位置就是本地某个确定要放网页的文件夹;主机名如果是本地开发随便取,如果是对外提供服务就应该是一个真实的域名
⑤.权限配置,权限是针对文件夹的,通常至少会设置网站的根目录,实际上目录可以设置N个
- Directory:针对指定目录
- Require:访问权限
- Require local:本地访问
- Require all granted:全部访问
- Require all Denied:拒绝所有访问
- Require ip 127.0.0.1:允许指定IP访问(内部访问)
- Require not ip 192.168.98.1:禁止指定IP访问(防止指定攻击)
- Require host localhost:允许使用localhost访问(私有主机)
-
DirectoryIndex:用户没有指定访问脚本的时候默认提供哪个文件
⑥.一旦启动虚拟主机,原来的默认localhost主机便失效,因此需要为localhost配置新的虚拟主机
⑦.所有的修改在重启Apache后生效
⑧.以上操作只能代表服务器准备完毕,用户访问的话还需要配置DNS(开发时本地hosts文件)
总结:Apache提供的虚拟主机能够为一些企业提供一套服务器对外提供多个网站的服务需求,解决了中小企业很多资金问题(不需要根据网站数据量配置大量服务器硬件),也能够让服务器实现更大化的利用价值。