1.搭建服务器

思考:作为一名开发人员,如何将自己的网站让互联网上其他的电脑能够访问呢?
引入:网站想要让其他用户访问,其实就是让其他用户知道你有一台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/


Apache安装1.png

4.查看文件目录

Apache安装2.png

5.修改配置文件:配置网站默认站点

  • ServerRoot:服务器所在目录:D:/server/Apache24


    Apache安装3.png

DocumentRoot:网站默认根目录:D:/server/Web(为了方便新建一个Web文件夹,学习通常可以放到默认网站根目录:Apache/htdocs)

Directory:权限控制,指定与网站默认根目录一致:D:/server/Web


Apache安装5.png

以后建议使用快捷键:win键+R键(同时按),然后输入cmd命令(常用)

Apache安装6.png

进入到控制台界面

Apache安装7.png

7.切换磁盘路径为Apache所在磁盘D盘:直接输入盘符:D:(带冒号),然后回车


Apache安装8.png

8.使用CD命令(Change Directory)进入到Apache的bin目录下:cd server/Apache24/bin,然后回车

Apache安装9.png

9.安装Apache,并将Apache安装成Windows系统服务,输入:httpd.exe -k install

Apache安装10.png

10.第一次安装后不会自动启动,需要手动启动,输入:httpd.exe -k start(也可以启用ApacheMonitor(Apache/bin/ApacheMonitor.exe)

Apache安装11.png

11.结果验证

Apache安装12.png

12.修改配置文件,除去错误信息。找到ServerName,增加一个ServerName 为localhost

Apache安装13.png

13.通过httpd.exe -t进行配置文件错误检查

Apache安装14.png

至此,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目录下

安装PHP1.png

3.为了方便管理,将文件夹名字改成PHP7(至此PHP已经安装完毕)
安装PHP2.png

4.掌握PHP常用内容

  • PHP扩展:ext(extension)文件夹,存放了PHP所支持的各类扩展


    安装PHP3.png
  • PHP执行文件:php.exe,PHP代码解释器,能够将PHP代码解析成HTML文件

  • PHP配置文件:php.ini,默认的PHP提供了两套配置文件php.ini-development(开发环境)和php.ini-production(生产环境)


    安装PHP4.png

5.将php.ini-development修改成php.ini格式(建议复制一份php.ini-development然后修改成php.ini)

安装PHP5.png

6.测试php.exe的功能

  • 在D:/server/Web文件夹下创建一个index.php文件(需要通过文件系统修改显示文件后缀名,Windows系统默认隐藏后缀名)


    安装PHP6.png
  • 使用编辑器打开文件,然后输入对应的代码(不建议使用Windows自带的TXT编辑器,建议使用代码编辑器:editplus/phpstorm/subline)

  • 在控制台(CMD)下进入到php.exe所在目录


    安装PHP8.png

使用命令测试php.exe对代码的执行:php.exe -f D:/server/Web/index.php


安装PHP9.png

总结: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


Apache加载PHP1.png

2.在Apache配置文件中使用LoadModule命令加载PHP模块:LoadModule php7_module php7apache2_4.dll路径(绝对路径)

Apache加载PHP2.png

3.在Apache中指定需要PHP解析的文件(以后缀区分):AddType application/x-httpd-php .php .html(多种文件可以使用空格分离,通常就是php和HTML文件)

Apache加载PHP3.png

4.PHP虽然为Apache打工,但是PHP的运行是独立的,如果想让PHP完全服从Apache,需要将PHP的配置文件加载到Apache中:PHPIniDir php.ini文件路径(绝对路径)

Apache加载PHP4.png

5.任何Apache配置文件修改(包括已经加载到Apache中的php.ini)都需要重启Apache才能生效:运行Apache->bin->ApacheMonitor.exe,然后重启
Apache加载PHP5.png

6.测试运行:在D:/server/Web/index.php中输入phpinfo()函数


Apache加载PHP6.png

7.在浏览器中打开访问:localhost/index.php


Apache加载PHP7.png

8.在PHP环境中往下找可以看到,timezone(时区)对应的默认的是UTC(世界标准时间),作为中国开发者应该修改为PRC时区,所以需要在php.ini中找到timezone,并添加一个为PRC(默认注释掉了)


Apache加载PHP8.png

9.重启Apache生效


Apache加载PHP9.png

总结: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/下

安装mysql1.png

3.为了方便管理,把文件夹重命名为mysql

安装mysql2.png

4.mysql以后会经常使用,因此先添加系统环境变量:以Windows10为例,邮件“我的电脑”选择“属性”,然后点击“高级系统设置”

安装mysql3.png

5.点击“环境变量”,选中“系统变量”中的“path”,点击下面的“编辑”按钮,进入到系统环境变量管理界面

安装mysql4.png

6.点击“新建”增加环境变量,并输入:D:\server\mysql\bin(注意:在Windows下正斜杠“/”和反斜杠“\”都可以作为路径分隔符),然后点击各种“确定”按钮


安装mysql5.png

7.当前mysql的安装并不是傻瓜式安装文件,所以需要在mysql目录下新建一个配置文件mysql.ini
安装mysql6.png

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    
安装mysql7.png

9.在控制台(CMD)进行命令安装(管理员身份进入),进入到Mysql的bin目录,输入:mysqld.exe -install

安装mysql8.png

10.进行初始化操作,继续输入:mysqld --initialize-insecure --user=mysql


安装mysql9.png

11.此时会在mysql安装目录下多出一个data目录,用于存储数据


安装mysql10.png

12.第一次安装不会自动启动mysql,需要手动启动(以后自动启动),输入:net start mysql

安装mysql11.png

13.默认安装mysql有一个超级管理员用户root,但是当前没有密码,非常不安全,因此需要修改root用户的密码,输入:mysqladmin -u root -p password 新密码


安装mysql12.png

14.在增加新密码的时候,会让你输入旧密码,而原来没有密码,所以直接回车即可

安装mysql13.png

15.安装好了之后测试下效果:Mysql是一种C/S结构软件,因此需要使用客户端去访问服务端,mysql提供了自己的客户端mysql.exe,可以在控制台(CMD)下通过mysql.exe进行访问,输入:mysql.exe(或者mysql) -u用户名 -h主机地址 -P端口 -p密码

安装mysql14.png

总结: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

配置虚拟主机1.png

②.在虚拟主机配置文件中清除已有的示例虚拟主机

配置虚拟主机2.png

③.增加基于域名的虚拟主机标签
配置虚拟主机3.png

④.配置虚拟主机主要信息:站点位置(文件夹路径)和主机名,其中站点位置就是本地某个确定要放网页的文件夹;主机名如果是本地开发随便取,如果是对外提供服务就应该是一个真实的域名

配置虚拟主机4.png

⑤.权限配置,权限是针对文件夹的,通常至少会设置网站的根目录,实际上目录可以设置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:用户没有指定访问脚本的时候默认提供哪个文件


    配置虚拟主机5.png

⑥.一旦启动虚拟主机,原来的默认localhost主机便失效,因此需要为localhost配置新的虚拟主机


配置虚拟主机6.png

⑦.所有的修改在重启Apache后生效

⑧.以上操作只能代表服务器准备完毕,用户访问的话还需要配置DNS(开发时本地hosts文件)

配置虚拟主机7.png

总结:Apache提供的虚拟主机能够为一些企业提供一套服务器对外提供多个网站的服务需求,解决了中小企业很多资金问题(不需要根据网站数据量配置大量服务器硬件),也能够让服务器实现更大化的利用价值。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容