综合实验---Web---进阶版

实验配置:

7-1为内网Nginx服务器;7-2和7-3为Web服务器;7-4为网关服务器;7-5为外网客户机;

yum安装Nginx;yum安装Mysql;

编译安装PHP;编译安装

由于我们Nginx和Mysql都是yum安装,实验配置略有改动

1.PHP调整主配置文件时,修改文件内容

1.原内容调整(在编译安装的情况下)

cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini	vim /usr/local/php/lib/php.ini--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai

2.调整如下

--1170行--修改
mysqli.default_socket = /var/lib/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai

3.没有调整的,根据之前配置就行

2.配置Nginx支持PHP解析

1.原内容如下

vim /usr/local/nginx/conf/nginx.conf
--65行--取消注释,修改
location ~ \.php$ {root           html;   $document_rootfastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;	#将 /scripts 修改为nginx的工作目录include        fastcgi_params;
}

2.调整如下

vim /etc/nginx/nginx.conf
--65行--取消注释,修改
location ~ \.php$ {root           html;fastcgi_pass   127.0.0.1:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;	#将 /scripts 修改为nginx的工作目录include        fastcgi_params;
}vim /etc/nginx/nginx.confroot           html;fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;	#将 /scripts 修改为nginx的工作目录

 

[root@localhost fpm]# vim /etc/nginx/nginx.conf

[root@localhost fpm]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost fpm]# nginx -s reload
nginx: [error] invalid PID number "" in "/run/nginx.pid"
[root@localhost fpm]# systemctl start nginx
[root@localhost fpm]# nginx -s reload

3.验证PHP测试页

1.原内容如下

vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>systemctl restart nginx.service

2.调整如下

vim /usr/share/nginx/html/index.php
<?php
phpinfo();
?>systemctl restart nginx.service

4.安装论坛,下载安装包

1.原内容如下

cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/

2.调整如下

cd /opt/dis/dir_SC_UTF8/cp -r upload/ /usr/share/nginx/html/bbs/

5.调整论坛权限

1.原内容如下

cd /usr/local/nginx/html/bbs/chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

2.调整如下

cd /usr/share/nginx/html/bbs/chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

6.论坛页面访问

http://192.168.91.100/bbs/index.php

或者在nginx主配置文件中加入:

index  index.html  index.htm  index.php;

 




第二题:

为nginx服务配置虚拟主机,新增两个域名 www.kgc.com 和 www.benet.com,使用http://www.kgc.com/index.php可访问上一题的Discuz论坛页面。
使用http://www.benet.com则访问/var/www/html目录中的index.html文件的内容,内容自定义。

1.修改配置文件 

 38     server {39         listen  80;40         server_name     www.benet.com;41         root    /var/www/html;42 }47         server_name  www.kgc.com;

2.本机中添加域名 

C:\Windows\System32\drivers\etc\hosts

3.为www.benet.com创建页面 

[root@localhost bbs]# mkdir -p /var/www/html
[root@localhost bbs]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# echo `pwd` > index.html
[root@localhost html]# cat index.html
/var/www/html

4.测试页面效果

第三题:

对基于www.benet.com域名的虚拟机主机的nginx服务调优:隐藏nginx版本号,缓存静态图片网页时间为1天,设置防盗链功能。

1.编辑配置文件

[root@localhost html]# vim /etc/nginx/nginx.conf
 18         server_tokens   off;19         expires 1d;

 44         location ~* \.(jpg|gif|png)$ {45         valid_referers none bloaced *.benet.com benet.com;46         if ( $invalid_referer ) {47         return  403;48 }49 }

2.为防盗链功能添加图片

3.在7-2Tomcat服务器上安装httpd服务

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# vim index.html
[root@localhost html]# systemctl restart httpd

<html>
<body>
<h1>this is yunjisuan</h1>
<img src="http://www.benet.com/11.jpg"/>
</body>
</html>

4.当我们没有设置防盗链时

5.当我们设置完防盗链时

第四题:

网关服务器搭建NFS服务,提供的文件系统使用LVM类型,共享目录名称为/opt/nfs;要求根据日期对Discuz论坛服务的访问日志进行日志分割,要求每天生成一份日志文件,保存到NFS服务共享的目录内

1.开启7-4网关服务器的NFS

[root@localhost ~]# systemctl start nfs
[root@localhost ~]# 
[root@localhost ~]# systemctl status nfs

2.设置共享目录

因为我们根本身就是逻辑卷;所以就不另外添加磁盘了,就在根下面做

[root@localhost ~]# mkdir /opt/nfs
[root@localhost ~]# cd /opt

[root@localhost opt]# cat /etc/exports
/opt/nfs *
[root@localhost opt]# exportfs -r
exportfs: No options for /opt/nfs *: suggest *(sync) to avoid warning
[root@localhost opt]# exportfs -v
/opt/nfs      	<world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)

3.去7-1挂载共享目录

[root@localhost html]# showmount -e 192.168.91.104
Export list for 192.168.91.104:
/opt/nfs *
[root@localhost html]# mount 192.168.91.104:/opt/nfs /mnt
[root@localhost html]# df

4.日志分割

1.修改7-1配置文件

vim /etc/nginx/nginx.conf
43         access_log  /opt/benet.log  main;

看一下opt下,有没有生成benet.log

2.在7-1的html下创建日志脚本

#!/bin/bash
pid=`cat /run/nginx.pid`cd /opt
mv benet.log	/mnt/`date +%F`
touch benet.logkill -USR1 ${pid} 

 找nginx的pid路径

3.当我们没有运行脚本时

4.当我们访问www.benet.com页面后

先运行脚本

访问页面 

 

 看日志用量是否发生改变

5.给日志定时

[root@localhost html]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost html]# 
[root@localhost html]# crontab -l
0 23 * * * /var/www/html/log.sh

第五题:

要求配置location匹配请求地址http://www.kgc.com/test/XXXX,使用户访问该路径下的文件时返回/var/share/nginx/html/目录下的文件内容。要求使用rewrite将使用域名www.benet.com 请求以 .php 结尾的访问都跳转到域名www.kgc.com上,而且后面的参数保持不变,比如访问http://www.benet.com/bbs/index.php跳转到http://www.kgc.com/bbs/index.php。

1.修改7-1配置文件

要求配置location匹配请求地址http://www.kgc.com/test/XXXX,使用户访问该路径下的文件时返回/var/share/nginx/html/目录下的文件内容。

 58         location /test {59         alias /var/share/nginx/html;60 }

2.创建被访问文件内容

[root@localhost ~]# mkdir -p /var/share/nginx/html
[root@localhost ~]# 
[root@localhost ~]# echo /var/share/nginx/html > /var/share/nginx/html/index.html
[root@localhost ~]# cat /var/share/nginx/html/index.html
/var/share/nginx/html

 

3.修改7-1配置文件

要求使用rewrite将使用域名www.benet.com 请求以 .php 结尾的访问都跳转到域名www.kgc.com上,而且后面的参数保持不变,比如访问http://www.benet.com/bbs/index.php跳转到http://www.kgc.com/bbs/index.php。

 45         location ~* \.php$ {46         rewrite ^/(.*)     http://www.kgc.com/$1 permanent;47 }

4.测试结果

成功跳转

第六题:

在Nginx服务器上对基于www.benet.com域名的虚拟机主机设置动静分离由nginx提供静态页面服务,将对 .jsp文件的动态页面请求转发到Tomcat 服务器处理,并实现负载均衡

1.修改7-1的配置文件

 25     upstream tomcat {26         server 192.168.91.102:8080;27         server 192.168.91.103:8080;28 }

 49         location ~* \.jsp {50         proxy_pass http://tomcat;51 }

2.测试结果

第七题:

在网关服务器上设置SNAT/DNAT,使client使用网关服务器的ens36接口的IP地址访问也可实现上一题的效果。

解析:

###我们想要客户机7-5用7-4网关服务器的ens36接口IP地址(12.0.0.1)去访问www.benet.com/index.jsp,从而得到我们在  Tomcat服务器中配置的 动态页面

###所以这是外网(7-5IP:12.0.0.12)访问内网(7-1IP:192.168.91.100)

###所以我们使用的是DNAT

1.配置网关服务器7-4

1.添加一个网卡

2.配置网卡ens36

[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
GATEWAY=12.0.0.1

3.配置网卡ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7abd6f7b-b026-4959-80e0-52bdb768b839
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.91.104
NETMASK=255.255.255.0
GATEWAY=192.168.91.104

4.重启网卡并开启路由转发

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# sysctl -a |grep ip_forward[root@localhost network-scripts]# vim /etc/sysctl.conf
[root@localhost network-scripts]# sysctl -p

[root@localhost network-scripts]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1

2.配置外网客户机7-5

1.修改网卡

[root@centos5 ~]# cd /etc/sysconfig/network-scripts
[root@centos5 network-scripts]# vim ifcfg-ens33
[root@centos5 network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=5c9d3e71-28e2-4af2-8d5a-a5a37195146f
DEVICE=ens33
ONBOOT=yes
IPADDR=12.0.0.12
NETMASK=255.255.255.0
GATEWAY=12.0.0.1
[root@centos5 network-scripts]# systemctl restart network

3.配置内网Nginx服务器7-1

1.修改网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=c1d6be33-1c8f-4836-a6ae-4e14aeca1923
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.91.100
NETMASK=255.255.255.0
GATEWAY=192.168.91.104[root@localhost ~]# systemctl restart network

4.配置7-4网关服务器

[root@localhost network-scripts]# iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.91.100

###相当于;将内网地址(7-1:192.168.91.100)映射在公网上 (网关:12.0.0.1);让外网可以访问(7-5:12.0.0.12) 

5.配置外网7-5客户机

1.配置hosts文件

2.在7-5中测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java数据库关系型数据库设计(上)

目录 1.数据库设计的重要性及定义 1.数据库设计的重要性 1.失败的数据库设计造成的后果 2.优秀的数据库设计带来的好处 2.数据库设计的定义 2.数据库需求分析 1.需求分析的步骤 1.收集信息 2.标识实体 3.标识每个实体详细信息 4.标识实体之间的联系 1.数据库设…

架构实战:海量存储系统与分布式概念解析

在当今的互联网时代&#xff0c;海量数据的存储和处理成为了技术领域的热门话题。为了应对数据量的激增&#xff0c;传统的单体存储系统逐渐暴露出其局限性&#xff0c;而分布式系统因其高扩展性、高可用性和容错性等优势&#xff0c;成为了解决这一问题的关键技术。本文将通过…

同城预约上门服务APP小程序开发 打造快捷便利生活

随着移动互联网的快速发展&#xff0c;人们的生活方式正在发生深刻的变化。特别是在城市生活中&#xff0c;人们越来越依赖移动应用来解决日常生活中的各种问题。其中&#xff0c;同城预约上门服务APP正成为一种新型的生活服务平台&#xff0c;为人们提供了更加便利和快捷的服务…

腾讯云图形验证码的PHP示例

需要准备的 1.API密钥 SecretId 及 SecretKey 两部分&#xff0c; SecretId 用于标识 API 调用者的身份&#xff0c; SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥。 前往API密钥管理页面&#xff0c;即可进行获取 https://console.cloud.tencent.com/cam/ca…

idea将非UTF-8的properties修改为UTF-8编码的文件

需求背景 由于项目初始化时&#xff0c;properties文件的编码格式为ASCII编码格式&#xff0c;此时用idea打开该文件会默认展示UTF-8的编码内容&#xff0c;其中汉字可以正常展示&#xff0c;但是使用notepad打开却依旧时ASCII编码格式 idea配置 打开idea-setting-editor-f…

【MySQL】5. 数据类型

数据类型 1. 数据类型分类 2. 数值类型 2.1 tinyint类型 数值越界测试&#xff1a; mysql> use tt; Database changed mysql> create table t1(-> num tinyint-> ); Query OK, 0 rows affected (0.01 sec)mysql> insert into t1 values(-128); Query OK, 1 r…

代码随想录算法训练营第四十八天 | 121. 买卖股票的最佳时机

好忙这几天&#xff0c;偷个懒小做一点&#xff0c;后面有空补回来 题目链接&#xff1a;121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(vector<int>& prices) {int minrINT_MAX;int result0;for(int …

前端React篇之对 Redux 的理解,主要解决什么问题?Redux 原理及工作流程

目录 对 Redux 的理解&#xff0c;主要解决什么问题&#xff1f;Redux 原理及工作流程 对 Redux 的理解&#xff0c;主要解决什么问题&#xff1f; Redux是一个用于管理数据状态和UI状态的JavaScript应用工具&#xff0c;主要解决了在复杂JavaScript单页应用&#xff08;SPA&a…

飞桨科学计算套件PaddleScience

PaddleScience 是一个基于深度学习框架 PaddlePaddle 开发的科学计算套件&#xff0c;利用深度神经网络的学习能力和 PaddlePaddle 框架的自动(高阶)微分机制&#xff0c;解决物理、化学、气象等领域的问题。支持物理机理驱动、数据驱动、数理融合三种求解方式&#xff0c;并提…

c#学习记录

1.使用可以使转义字符无效 class study {static void Main() {string a "123\t123";Console.ReadLine();Console.WriteLine(a); }} 例如&#xff1a;string a "123\t123";&#xff0c;输出123\t123 2.字符的不可变性 例如&#xff1a; class study …

Day40:安全开发-JavaEE应用SpringBoot框架JWT身份鉴权打包部署JARWAR

目录 SpringBoot-身份鉴权-JWT技术 SpringBoot-打包部署-JAR&WAR 思维导图 Java知识点 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;序列化数据&#xff0c;身份验证&#xff0c;框架开发&#xff0c;第三方组件使用等. 框架库&#xff1a;MyBatis&…

SQLiteC/C++接口详细介绍之sqlite3类(十三)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十二&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十四&#xff09;&#xff08;未发表&#xff09; 40.sqlite3…

深入探讨医保购药APP的技术架构与设计思路

随着移动互联网的发展&#xff0c;医疗保健行业也迎来了数字化转型的浪潮。医保购药APP作为医保体系数字化的一部分&#xff0c;其技术架构和设计思路至关重要。接下来&#xff0c;小编将为您讲解医保购药APP的技术架构与设计思路&#xff0c;为相关从业者提供参考和启发。 一、…

【知识简略】 简单理解SpringCloud微服务架构:服务注册发现、配置中心、限流、熔断、降级、网关路由等

主要介绍Nacos那一套。 目录 微服务架构1.服务注册发现2.配置中心3.限流、熔断、降级4.网关路由 微服务架构 Spring Cloud 微服务架构中&#xff0c;Nacos 提供了一系列核心组件和服务治理功能&#xff0c;以下是对 Nacos 中涉及的相关组件及其功能的详细解释&#xff1a; 1.…

51单片机基础篇系列-定时/计数器的控制工作方式

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制&#xff0c;TMOD用于设置其工作方式&#xff1a; 1.工作方式寄存器TMOD 工作方式寄存器TMO…

Rust学习02:推荐一本入门书,免费的

都说Rust的学习曲线很陡峭&#xff0c;试过才知雀实不容易。 先说我的基础&#xff0c;非科班&#xff0c;自学Python&#xff0c;写过几个小程序。 我买书从来不扣扣嗖嗖的&#xff0c;所以先啃了几本Rust的入门书&#xff0c;包括&#xff1a; Tim McNamara的《Rust实战》&am…

inux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)

文章目录 1. 项目文件操作工具类设计 1. 项目文件操作工具类设计 根据前面的分析&#xff0c;这个文件类的基本属性如下&#xff1a; 文件大小信息文件最后修改时间文件最后一次访问时间&#xff0c;方便文件的热点管理文件名称&#xff0c;需要从http 请求行上的uri中获取基…

P8780 [蓝桥杯 2022 省 B] 刷题统计 Python

[蓝桥杯 2022 省 B] 刷题统计 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a a a 道题目&#xff0c;周六和周日每天做 b b b 道题目。请你帮小明计算&#xff0c;按照计划他将在第几天实现做题数大于等于 n n n 题? 输入格式 输入一…

JavaWeb(p135-p155)

分页查询 可以利用分页插件PageHelper 1.引入依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.2</version> </dependency>2.EmpMapper …

Python 数据结构与算法

Python 是一种强大且灵活的编程语言&#xff0c;非常适合用于实现各种数据结构和算法。数据结构和算法是计算机科学中的基础概念&#xff0c;对于解决实际问题、优化程序性能以及提高代码的可读性和可维护性至关重要。 ### 数据结构 数据结构是计算机存储、组织和管理数据的方…