网站搭建基础知识-Apache、PHP、Mysql、CDN、日志、网站搬家
目录
---------------------------------------------------------------------------------------------------
1、下载地址:https://www.apache.org/
2、下载完成后将压缩包中的Apache24文件夹解压至指定文件夹,本文解压至D:\Apache24
3、查看80端口是否被占用
#cmd输入 netstat -ano | find ":80"
发现80端口被PID为4的进程所占用
解决方法1:
① 键盘Win+R打开”运行窗口“,输入regedit打开注册表
② 依次打开如下:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP
③ 找到一个名称为:Start,类型为:REG_DWORD的项,右击修改,将其数值数据改为0,点确定保存
④ 重启系统,System进程不会占用80端口
⑤ 若重启后80端口任会仍被System占用,这时可将start项所在的HTTP文件夹权限设置为system拒绝
解决方法2:
如果80端口被占用,可以将:D:\Apache24\conf\httpd.conf 文件中的80端口改为其他端口后保存
4、配置安装Apache的主服务
#以管理员身份运行cmd d: #先进入安装apache的盘符里 cd D:/Apache24/bin #进入apache的解压路径 httpd.exe -k install -n apache
5、启动Apache服务
双击bin目录下的:ApacheMonitor.exe,在电脑右下角双击它的显示符号,在弹出的窗口中点击start
6、打开浏览器,输入:127.0.0.1(或者:http://localhost),出现如下界面就表示配置成功
如果在第三步将Apache的80端口改掉了,那么需要在回环地址下加上修改后的端口
7、Apache卸载
① 将apache服务进行手动禁止
② 卸载Apache服务
#管理员模式打开cmd sc delete apache
③ 删除Apache文件夹
打开httpd.conf文件即可看到相应配置信息
网站根目录:浏览器访问网站的时候默认初始目录
默认首页文档:浏览器访问网站的时候当如果没有输入任何访问资源,默认展示的文件
原理:当客户端访问任意一个存在的目录时,Apache服务器将会默认在此目录中寻找一个index list中的文件
若文件不存在,则会列出当前目录下所有的文件或返回403状态码,列出目录下所有文件的行为称为目录遍历
Apache默认允许目录遍历
修复方法:
在 httpd.conf 文件中修改如下配置,重启Apache服务
目录遍历漏洞修复结果如下:
① 将Define SRVROOT改为自己的apache文件位置
② 将Server Name前面的"#"去掉,并改掉servername名
③ 修改DocumentRoot、directory 改为自己存放运行文件的根目录
④ 在DirectoryIndex 后面加上index.php
⑤ 修改ScriptAlias,具体为apache位置+/cgi-bin/
⑥ 修改ScriptAlias下面的directory
⑦ 在apache中找到httpd.conf文件,在最末尾加上代码
LoadModule php5_module "D:/php56/php5apache2_4.dll" #apache调用此php接口进行一系列操作 AddType application/x-httpd-php .php .html #仅允许后缀名为上述文件才能通过 php 解析器去运行,其他文件一律不走php解析器 PHPIniDir "D:/php56"
⑧ 将php目录中的php.ini-development重命名为php.ini,然后打开并去掉extension_dir = "ext"前面的分号
以上操作完成之后,可在网站根目录下写一个php文件查看是否解析成功
解析结果:
1、下载地址:https://windows.php.net/download/
进入历史版本,本文下载 php-5.6.40-Win32-VC11-x64.zip 版本,下载之后解压至指定文件夹即可
Mysql下载地址:https://downloads.mysql.com/archives/community/
Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip
如果安装过Mysql过程中,出错了或者想重新再来一把,则在管理员的cmd中输入
sc delete mysql #删除已经安装好的mysql服务
下载后会得到zip安装文件,解压的路径最好不要有中文和空格,这里我解压到 E:\software\mysql-5.7.19-winx64 目录下
添加环境变量 : 电脑-属性-高级系统设置-环境变量,在Path 环境变量增加mysql的安装目录\bin目录, 如下图
在 E:\software\mysql-5.7.19-winx64 目录下下创建 my.ini 文件, 需要我们自己创建,并写入以下内容
[client] port=3306 default-character-set=utf8 [mysqld] # 设置为自己MYSQL的安装目录 basedir=E:/software/mysql-5.7.19-winx64/ #注意这里的\与/问题 # 设置为MYSQL的数据目录 datadir=E:/software/mysql-5.7.19-winx64/data/ #注意这里的\与/问题 port=3306 character_set_server=utf8 #跳过安全检查 skip-grant-tables
使用管理员身份打开cmd , 并切换到 E:\software\mysql-5.7.19-winx64目录下执行以下命令
mysqld -install
mysqld --initialize-insecure --user=mysql
执行成功之后会生成data文件夹,然后启动mysql 服务
net start mysql
进入mysql 管理终端: 【当前root 用户密码为 空】
mysql -u root -p
修改用户密码
use mysql; update user set authentication_string=password('passwd') where user='root' and Host='localhost'; #修改 root用户的密码为passwd flush privileges; #刷新权限 quit; #退出
修改配置文件,重启服务
修改my.ini , 再次进入就会进行权限验证了,将下列语句注释掉 #skip-grant-tables #重新启动mysql net stop mysql net start mysql
再次进入Mysql
mysql -u root -p
密码正确,进入mysql
下载地址:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.28-winx64.zip
下载后会得到zip安装文件,解压的路径最好不要有中文和空格,这里我解压到 D:\zrh\mysql828 目录下
添加环境变量 : 电脑-属性-高级系统设置-环境变量,在Path 环境变量增加mysql的安装目录\bin目录
在 D:\zrh\mysql828 目录下下创建 my.ini 文件, 需要我们自己创建,并写入以下内容
[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\\zrh\\mysql828\\bin # 切记此处一定要用双斜杠\\ # 设置mysql数据库的数据的存放目录 datadir=D:\\zrh\\mysql828\\bin\\Data # 此处同上 # 允许最大连接数 max_connections=200 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8
注意:data目录不需要创建,下一步初始化工作中会自动创建
在MySQL安装目录的 bin 目录下以管理员身份运行cmd,并输入以下指令
mysqld --initialize --console
执行完成后,会打印 root 用户的初始默认密码,比如:
A temporary password is generated for root@localhost: iG,p4v!&6:j5 其中root@localhost:后面的 iG,p4v!&6:j5 就是初始密码
如果关快了或者没记住,那么删掉初始化的 datadir 目录,再执行一遍初始化命令,又会重新生成的
在MySQL安装目录的 bin 目录下执行命令:
mysqld --install net start mysql mysql -u root -p #输入刚才的初始密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; flush privileges; #刷新权限
管理员root的host是localhost,代表仅限localhost登录访问。如果要允许开放其他ip登录,则需要添加新的host
如果要允许所有ip访问,可以直接修改成“%”
mysql -u root -p; use mysql; select host,user from user; update user set host='%' where user='root'; flush privileges;
关系型数据库
采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解
关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码
关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织
键值型数据库
通过 Key-Value 键值的方式来存储数据,其中 Key 和 Value 可以是简单的对象,也可以是复杂的对象
Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE)
如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算
键值型数据库典型的使用场景是作为内存缓存,Redis是最流行的键值型数据库
搭建环境:PHP7.4-Apache-Mysql8.0.28(需要将apache配置为php模式)
将Discuz的CMS解压至D:\zrh\Apache24\htdocs,或者将CMS解压至新的文件夹,但是需要将httpd.conf中DocumentRoot、directory修改为此文件夹地址
解压完成后,打开php.in
配置完成后打开自己的回环地址开始进行安装即可
CC攻击主要影响中间件的响应速度,网站可以打开,但是非常的慢、卡
DDOS是流量攻击,当一瞬间服务器流量超过5G,那么服务器就会进入黑洞状态,比如:控制1000台机器向同一个端口同时发送1个G的流量包
CDN (全称 Content Delivery Network),即内容分发网络,用户在上网的时候不用直接访问源站,而是访问离他“最近的”一个 CDN 节点,术语叫「边缘节点」,其实就是缓存了源站内容的代理服务器
CDN 目的是为了改善互联网的服务质量,通俗一点说其实就是提高访问速度,从安全角度讲,CDN更好的隐藏了源站的IP地址,一定程度商阻碍了CC、DDOS攻击
在没有应用CDN时,我们使用域名访问某一个站点时的路径为
用户提交域名→浏览器对域名进行解释→DNS 解析得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复
应用CDN后,DNS 返回的不再是 IP 地址,而是一个CNAME(Canonical Name ) 别名记录,指向CDN的全局负载均衡
CNAME实际上在域名解析的过程中承担了中间人(或者说代理)的角色,这是CDN实现的关键
宝塔默认有存储日志信息的地方
网址.error.log为网站错误日志
网站.log为网站访问记录
我们打开网站访问记录可以看到61.185.128.13这个ip地址在2022-06-08 15:05:58通过get方法请求了test.txt文件,返回200状态码,表示请求成功
61.185.128.13在2022-06-08 15:06:04重新请求了一次test.txt,返回304状态码
304状态码:如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。简单的表达就是:服务端已经执行了GET,但文件未变化
windows日志访问:
管理工具---事件查看器
为了方便起见,可以使用LogParser.exe工具查看
网站搬家最主要的两点就是打包源代码+打包数据库
源代码可以直接压缩打包,数据库可以使用Navicat进行sql语句的导出
注意搬家之后的数据库设置一库一账户,然后在源码中的配置文件修改数据库名称、账号密码等信息
例如:Discuz源码在搬家之后需要在如下两个配置文件修改数据库名称、账号、密码