目录
前言:网站搭建的组件
- 服务器
- 容器
- 数据库
- 脚本程序
虽然市面上有像宝塔、phpstudy等一系列的一键搭建集成环境的软件,非常的方便,但是这里我们仍然选择手工搭建网站,一步一步了解网站的搭建过程和原理,更重要的是在这个过程中 会遇到很多的问题,每个问题都要记录下来,会提升自己解决问题的能力,这一点非常重要。
再者,集成环境软件厂商如果不注重安全可能会存在非常大的安全隐患,比如phpstudy曾经爆出过安全事件,即使官网的文件都有后门,因为集成环境中所有组件都是在集成环境软件服务器中下载的,黑客攻击了比如phpstudy服务器那么就会导致出现安全问题,且找不到任何解决问题的办法,这种攻击在apt中也叫供应链打击。
一、关于服务器
1、安装虚拟机软件Vmware
- 优点
- 出现问题可以还原,有快照功能,类似于游戏的存档功能,当我们遇到问题时可以恢复到出现问题之前
- 会用到很多工具,安装在物理机上很杂乱且一些工具在物理机上使用会出现问题,比如layer挖掘子域名工具会导致物理机宽带连不上等问题
- 挂起功能很方便,点击挂起后可以永远保持在那个界面即使物理机关机后再打开虚拟机
- 防止本机中木马。之后的实践复现都会在虚拟机上进行,即使出问题也可以用快照还原。
- 建议
- 用管理员身份运行,一些权限只能管理员身份
2、下载安装iso镜像软件
推荐网站:https://msdn.itellyou.cn
-
家庭电脑和服务器的区别
- 硬件的区别(pc和服务器都是计算机
- 服务器在性能和稳定性方面更优越(毕竟服务器一般一运行几十年都没问题),一般没有显卡
- pc更侧重于用户体验,有显卡从而有图形化界面
- 当然pc也可以当作服务器用,也可以用pc去搭建网站,服务器贵嘛,但是区别可能例如,pc只能支持100个人去访问,而服务器可以支持1000甚至10000个人去访问
- 操作系统的区别(以Windows为例
- Pc
- windows xp
- windows 7
- Windows10
- Windows11
- …
- 服务器
- Windows server2003
- Windows server2012
- Windows server2016
- Windows server2019
- …
- 服务器的os性能和稳定性方面也会更优越
- 现在一些中老年人可能还在用xp或者win10,因为比较习惯可能,一般可以选择不升级,年轻人大多数用win10或者win11,因为界面比较漂亮,符合当前审美。但是服务器系统不行,因为服务器可以被全世界的计算机访问,也就是说可以被黑客攻击。因此就要不断升级系统防止安全事故的发生,pc不会被攻击(有公网ip才能被访问,pc没有)
- Pc
- 硬件的区别(pc和服务器都是计算机
3、搭建服务器(虚拟机
这里我们下载windows server 2016
打开vmware新建虚拟机安装镜像文件
这里最大分配60G内存,不断添加app真的会占这么多内存
从物理机分配2核4G内存,后续可调整
如果分配太多,运行起来可能导致物理机本身很卡
相当于虚拟机是一个子系统从物理机分出来的,物理机是母体,下图一是分配后物理机的情况,分配前内存是6.x个G(呜呜呜
接下来看看网络配置
介绍一下三种网络连接方法:
- 桥接模式:类似于局域网中的一台独立的主机,可以访问内网中任何一台机器,但是他要和宿主机器处于同一网段,这样虚拟机才能和宿主机进行通信(主机防火墙开启会导致ping不通(内网相对于外网会多一层安全防火墙))
- NAT模式:通过宿主机的网络来访问公网。虚拟机在访问外网时用的是宿主的ip,这样从外网来看,只能看到宿主机不能看到虚拟机
- 仅主机模式:虚拟机直接与宿主机连接起来(共享网络)
常见问题:在学校,由于校园网大多是拨号上网,实名制上网,网络管理员不允许你分配给其他机器,输入账户密码,一号一机,给的隐藏地址,虚拟机没有认真认证账户密码导致无法成功分配到ip也就无法通过NAT和桥接模式上网,此时选择“仅主机模式”,用手机开一个热点或者电脑开共享网络,步骤如下图
现在在家里可以选择桥接模式hh
然后就可以启动啦
此时去连接网络
在vmware中从编辑->虚拟网络编辑器进去(以管理员身份才可以编辑)
打开物理机的cmd,输入ipconfig /all命令显示详细信息,找到物理机使用的无线局域网络配置信息,记住其描述,然后配置在上图中
点击应用然后点击确定
然后打开虚拟机设置的网络适配器,选择自定义选择vmnet0,就是刚刚设置的网络
至此,网络已经配置完毕,可以上网啦
有一个问题,访问网站老是弹出来一个ie增强配置,可以在服务器管理器中找到本地服务器去关闭就可以了
拍摄快照
二、关于容器
1、相关概念的理解
- 容器也叫web容器或者web应用,就是一个应用程序。实际上计算机之间的访问和通信都是计算机上面的应用程序之间的通信。
- 简单的通信原理:两台计算机想要通信必须具备两个条件
- 端口:计算机上有很多应用程序呀,数据包向上交付给哪个应用程序呢通过端口来确定。
- 端口常识
- 每台计算机上有65535个端口,各种应用服务一般会有默认端口,pc上的端口是随机的,端口具有本地唯一性
- web应用服务端口默认为80
- 端口常识
- 协议:两台计算机之间以什么样的规则进行通信,数据包的格式等等
- 协议常识
- web应用通信协议:http和https
- 常使用协议:dns协议、tcp/ip协议、http、https、udp、icmp……
- 协议常识
- 端口:计算机上有很多应用程序呀,数据包向上交付给哪个应用程序呢通过端口来确定。
两台计算机的通信就相当于两个人在两个房子里想要互相交流,端口就相当于窗户,总要开窗户交流吧,不能封闭在房子里嘛,协议就相当于规定交流的语言,都用中文还是英语交流等等
- 常见的容器
- IIS:每一个Windows系统中都会有,在pc也会有,以我的win11为例,下图所示可以打开
- Apache
- Nginx
- Tomcat
上述四种容器的使用人数是从少到多,apache的经验非常足很稳定,而nginx具有高并发性,tomcat比nginx的并发性更强一点,是基于java开发的
四种容器的区别:并发性不同(同时请求网站的人数的不同谁能扛得住
默认监听端口是80端口,tomcat默认8080端口
2、搭建容器
这里我们搭建apache容器
下载apache,下载地址https://www.apachehaus.com ,下载64位的(这里复制下载链接到迅雷,官网太慢啦
解压后拖到虚拟机里面(因为有vmware tools 所以可以直接拖进去)然后放到c盘下面
配置过程
先配置windows环境变量:左下角搜索“环境变量”打开“编辑系统环境变量”然后打开进行如下操作
系统变量中选择path点击“编辑”
添加变量值如下所示
apache服务器的配置:
打开Apache24/conf/httpd.conf用记事本打开,查找内容
修改路径
打开命令行netstat -a查看本地端口80有没有被占用,发现没有所以不用修改,端口就是80(如果占用就改一个端口号,1-65535中选一个没有被占用的端口号就可以
配置apache的主服务
然后输入
出现下图就安装成功啦
利用windows启动服务
至此就安装配置好apache容器啦
打开ie输入127.0.0.1看看
三、关于脚本
1、相关概念
- 脚本分类
- 静态脚本
比如html脚本,是描述性语言,对网页的描述
静态脚本就是页面内容是不变的,用户无法通过输入改变页面内容,没有交互性,如果非要改页面内容,只能去服务器端改脚本程序。如果用户想实现输入123,返回456这种功能必须要用动态脚本
- 动态脚本
可以实现类似于输入123返回456的功能,就是加上了一个判断,以下图示
- 不同的容器对应的脚本也不同(不是固定搭配,但效率最高吧可以说是,谁会去选择效率不高的搭配呢)
- IIS:asp、asp.net
七八年以前很多人用这个语言,但是需要很多人写而且开发时间长导致效率不高渐渐可能会被淘汰
- Apache:php
php从开发到使用非常快,不需要java等语言开发过程非常麻烦,php一个人就可以干完整个项目,且入门非常容易,比Java、c++容易太多
- Nginx:php
- Tomcat
2、搭建脚本(这里选择php
下载php地址:www.php.net
复现漏洞的时候,wamp中一些软件版本的不同可能就会导致漏洞复现不成功
这里下载5.6.4版本(这时下载错版本了,应该下载thread safe版本,这里是nts版本没有php5apache2_4.dll扩展,后面会讲重新下载)
将下载好的压缩包解压放到虚拟机中C盘目录下
配置php
配置php环境变量
将php和apache连接
配置httpd.conf文件,CTRL+F查找ServerRoot,改为如下所示
查找DocumentRoot "${SRVROOT}/htdocs"
DocumentRoot是定义这个服务器对外发布的超文本文档存放的路径,也就是说,放的是网站根目录
在C盘新建一个文件夹myWebsite作为网站根目录
查找DocumentRoot修改根目录
查找DirectoryIndex修改为如下所示(打开网站默认页面。默认首页,优先级依次降低)
在文件最后一行添加如下内容
(添加的内容有php/php5apache2_4.dll,但是我下载的php没有这个扩展程序,解决办法如下
要下载thread safe版本才会有,我们没有应该是下载的是not thread safe版本,看上面的笔记,我们下载的是nts也就是not thread safe版本,重新下载!!!
下载x64版本,将原来的版本删掉,放新下载的版本进去,同样命名文件夹为php5.6.4)
内容如下
至此,该文件配置完毕
配置php.ini文件
将php5.6.4目录下的php.ini-production的文件复制一份重命名为php.ini粘贴到此目录下
修改如下
测试
在DocumentRoot即设置的访问目录下(myWebsite文件夹)写入一个.php文件,然后去浏览器访问
php文件如下1.php
四、数据库安装与配置
下载mysql,下载地址:https://dev.mysql.com/downloads/mysql/
建议复制链接到迅雷下载,浏览器太慢啦
添加环境变量
此电脑->右键属性->高级系统设置->环境变量
编辑path系统变量,将%MYSQL_HOME%\bin添加到path变量最后面
新建my.ini如下
后期改了my.ini的内容,因为客户端和服务端的编码方式不同会导致出错,后期改为utf8,内容如下
初始化MySQL数据库
以管理员身份打开命令提示符
切换到bin目录下
执行命令mysqld -initialize -console得到初始密码和账户
密码是#hFoVPbCh6gV
账户为root
安装mysql服务并且启动:mysqld --install mysql
出现了问题,如图
安装服务被拒绝! --->原因是权限不够用,要用管理员权限运行
打开cmd.exe选择用管理员身份打开,再执行命令mysqld --install mysql(安装mysql服务)
启动服务net start mysql
修改密码操作
输入mysql -uroot -p,然后输入刚刚保存的密码
输入命令ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';这里密码是root
可以输入quit或者exit退出啦,之后登录可以用
登录就可以用mysql -uroot -p然后再输入密码
修改php.ini文件内容(php连接mysql)
要连接MySQL,就将extension=pdo_mysql前面的分号去掉,连接其他数据库也需要把相应的分号去掉。
然后将 On windows: extension_dir =“ext”这里的地址填写完整,即extension_dir = “C:\php5.6.4\ext”
安装mysql数据库管理软件(管理数据库的软件,看得见可操作的,一个mysql连接工具),这里选择navicat premium
在老师群里直接下载了,偷个懒
解压后放到虚拟机c盘中
打开文件夹中的.exe文件,在桌面创建快捷方式,便于使用
打开应用程序,连接数据库
在搭建好discuz后,我们知道如何安装CMS,需要为这个网站新建一个数据库,
后续为了更好的学习php开发,删掉了discuz删掉相应的数据库