(看视频课程的一个笔记,留着自己看)
一、网站重现基础概念
1、常用场景
(1)网站源代码的重现:把拿到的网站源代码和数据库在本地已有的环境里搭建起来
(2)服务器镜像网站重现:部分网站并不是随服务器启动而启动,要看服务器里面的站点是否正常启动,如果网站程序没有正常启动,我们需要启动相应的服务或做一些配置的调整
(3)拿到静态文件(网站页面),它是通过网页爬取工具等把文件和数据等进行固定,主要通过浏览器进行查看
(重点:从网站源码到数据库这两部分组合起来做网站数据的重建)
网站如何在主机系统上运行?
网站可以理解为一种运用程序,不能脱离操作系统独立运行,它存在的基础需要相应的主机系统或容器,网站需要相应的配套服务去解析它的代码,以及需要相应的数据库服务来承载存储数据。
①网站代码的运行服务:web服务器。
配置文件:用于描述这个网站如何运行,端口是什么,代码存储在哪里等
服务器日志文件:通过日志文件找到网站的被访问情况,找后台地址可以通过访问日志文件找到相应线索
站点代码:PHP,Java,ASP等
②数据库:对于数据库,我们要能找到网站数据存储的路径,通过对数据的备份,在还原时有相应的数据支撑。包含:数据库配置,数据库日志,数据库文件
数据库配置:对应的端口,涉及的表,引擎操作等
2、 PHP网站代码
(1)代码特点:明文展示,便于查看和修改
(2)入口文件:index.php,网站起始执行文件
(3)动态加载:支持,代码文件的修改效果立即体现(修改完代码,网站可通过刷新进行体现,无需再次进行编译等)
(4)网站结构:一般采用MVC架构
M:model--数据模块,用于存储网站和数据库的数据(从数据库中读取出数据,网站处理数据的地方)
V:view--视图,用于展示网站数据的页面代码
C:controller--用于处理数据的业务代码,比如登录验证,加密算法等
(5)常见框架有:ThinkPHP、Yii、Laravel
3、jar包
(1)代码特点:二进制代码,需要Jd-gui工具查看
(2)入口文件:静态页面HTML结合接口返回数据
(3)动态加载:一般不支持,只修改配置文件
(4)网站结构:Java框架sprintboot、springcloud等,遵循MVC结构
(以下是几个常见的代码里需要分析的模块:)
①BOOT-INF:
classes--业务代码及配置文件,可以查找登录逻辑,加密算法
lib--库,如果是框架,登录校验可能存在这里
②META-INF:打包相关清单文件
③Org:框架库
4、数据库数据
常用数据库类型 | 记录备份格式 | 常用版本 | 配置文件 |
MySQL/MariaDB | .sql | 5.1、5.6、5.7(无法向下兼容)、8.0 | my.cnf(Linux)、my.ini(Windows) |
SqlServer | .sql、.bak(自带) | 2005、2008、2012、2014 | 独立配置工具 |
PostgreSQL | .sql | 10、11、12、13 | postgresql.conf |
MongoDB | json格式文件 | 3、4、5 | mongod.conf |
5、环境-组合方式
二、网站重现步骤
1、基本步骤
①准备好web服务器、数据库服务器、缓存服务、其他运行环境等
②创建网站配置:用于描述这个站点是如何运行的,运行需要哪些信息(如端口,源代码从哪里开始读取,网站日志如何存储等),需要告诉web服务器,web服务器根据描述来实行网站的管理
③导入代码/数据库文件
④启动服务
⑤修改hosts:网站通过域名访问,需要将域名指向本地的IP地址
⑥网站后台地址/绕过后台登录:进入网站的管理后台,分析具体的业务管理数据
2、重建要素-PHP站点
(1)版本:5.3、5.6、7.1
(2)发现版本
①从代码index.php中看
②指令获取版本 eg. php -v
③部署工具 eg.宝塔
④看配置文件
(3)运行目录:(网站不一定放在根目录下跑,入口文件也可能放在二级目录下)
运行目录下一定有index.php
①根目录
②public
3、重建要素-jar包站点
jar运行环境:
①指令获取 eg. java -version
②查看配置文件,如清单文件、ETA-INF/MANIFEST.MF
③启动命令:Java -jar test.jar>test.log & (启动后可以通过IP加端口去访问,不需配置相应的nginx)
4、重建要素-数据库版本
获取版本:
(1)原环境查看 eg.mysqld --version
(2)数据文件查看:.frm文件33到34里有对应的版本信息
(数据解释器中会计算出五位数字,32bit:50553,第一个5表示5的大版本,后面两位05代表第二级的子版本,最后两位53代表小版本,一般不关注第三级版本,所以50553代表版本5.5)
5、重建要素-站点配置文件(这里的配置文件是指数据库的连接配置文件和本身基础的配置文件,是代码里面的配置文件不是web服务器的配置文件)
作用:重建网站和数据库时,我们要保证它们之间的关系要关联起来,数据能流转起来,网站的代码去请求数据时,要有对应的数据库连接配置信息给到网站程序,根据这些连接信息建立数据库连接以后,能方便、直接的从数据库中读取数据,所以这个配置文件会放在网站代码的某一个位置。
(1)数据库配置:PHP
文件类型:PHP代码
存放路径:不一定,但一般存放在业务代码中
(如,config.php里存放着配置文件)
(2)数据库配置:JAR包
文件类型:yml、yaml、properties
存放路径:BOOT-INF的classes目录下
5、重建要素-缓存配置(目前很多java或者php网站常用缓存进行提速,它可以通过这种缓存配置加载相应的缓存数据,缓存配置要么跟数据库配置写在一起,要么独立进行配置,有的网站没有缓存配置会报错,可以根据此来进行判断是否需要搭建缓存配置)
缓存类型:redis、memcached
三、常见场景分析
1、常见重建工具
名称 | 特点 |
宝塔面板 | 丰富环境源,切换方便,网站配置灵活 |
小皮面板 | 类似宝塔,但环境源及操作不如宝塔 |
oneinstack | Linux环境包,没有交互操作的页面 |
云堪大师 | 操作简单,主要支持PHP站点,对应运行环境支持少 |
其他工具 | 如护卫神,西部数码网站管理等,功能少 |
2、PHP案例
网站案例 | 架构 |
TpShop | PHP5.6、MySQL5.6、Apache/Nginx、运行目录根目录 |
ECShop | PHP5.6、MySQL5.6、Apache/Nginx、运行目录根目录 |
ThinkCMS | PHP5.6、MySQL5.6、Apache/Nginx、运行目录根目录 |
fastadmin | PHP7.1、MySQL5.6、Apache/Nginx、运行目录public |
crud后台管理 | Java1.8.0、Nginx、MySQL |
盲测 | Java1.8.0、Nginx、MySQL、Redis |