第二周-1:简单集群架构的设计和安装

CSDN学习小组–第二周-1

简单集群架构的设计

    本次实验的集群架构设计,包含了Nginx进行网站的反向代理,配置MySql实现跨主机数据库的存储和访问,实现通过部署Tomcat到三个主机上进行网站的访问,其中我主要负责MySql的安装和配置,以及确保能够远程连接。

Nginx

简介

    Nginx是一款高性能的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,能够实现反向代理与负载均衡。
   由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。

安装方法

第一步:下载nginx压缩包,可以去Nginx官网下载压缩包
比如:
http://nginx.org/download/nginx-1.18.0.tar.gz
将Nginx压缩包解压到指定目录,比如 /usr/local/ 下

第二步:配置nginx安装所需的环境

  1. 安装gcc

Nginx的编译依赖 gcc 环境。安装指令如下:

sudo apt install gcc-c++

第三步:编译安装nginx
进入Nginx的目录,使用

make

命令进行Nginx的编译,然后通过

make install 

用来安装Nginx
返回 /usr/local/nginx目录下,运行./nginx

重要参数配置

使用gedit打开/usr/local/nginx/conf下的nginx.conf,编辑和修改http部分代码,将网页请求导向至小组三台电脑上

http {
    upstream luckDog{
        #server 192.168.43.211 weight=1;
        server 192.168.43.252:8080 weight=2;
        server 192.168.43.185:8080 weight=3;
        ip_hash;
    }
        server {
            listen 80;
            server_name 192.168.43.51;
            location / {
                proxy_pass http://luckDog;
                index index.html index.html;
                proxy_set_header Host $host;
            }
        }
    }
    }

Tomcat

简介

Tomcat 服务器是一个免费开源的轻量级Web应用服务器,属于轻量级应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它与Apache服务器是独立运行的,所以运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

安装方法

第一步:下载Tomcat压缩包,可以去Apache Tomcat官网下载压缩包
比如:apache-tomcat-8.5.37.tar.gz
将Nginx压缩包解压到指定目录,比如 /usr/local/ 下,使用

tar -zxvf apache-tomcat-8.5.37.tar.gz /usr/local/

第二步:启动Tomcat
进入Tomcat目录下在这里插入图片描述
进入bin目录,运行./start.sh命令,在浏览器输入:http://localhost:8080/,回车后,会弹出Tomcat服务页面:
在这里插入图片描述
至此,Tomcat配置完毕

MySQL

简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。作为最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件的授权分为社区版和商业版,其中社区版免费,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

安装方法

MySQL针对Linux系统提供了多种安装方式,但是apt仓库安装方式为官方推荐方法,首先使用终端运行

sudo apt-get install mysql-server

之后会有一系列问题,默认为yes选项,之后运行

sudo service mysql status

查看MySQL服务状态,如果状态为
在这里插入图片描述
Active:active(running),则表明MySQL服务正常启动
这样一路Next下来,root用户的密码默认为空,需要运行mysql_secure_installation进行根密码设置,设置好后运行

sudo mysql -u root -p

填写密码,进入MySQL终端

MySQL常用命令

#显示mysql版本
SELECT VERSION();
#显示所有数据库
SHOW DATABASES;
#使用某一个特定数据库
USE student;
#显示所有表
SHOW TABLES;
#显示表结构
DESC stu;
#显示表数据
SELECT * FROM stu;
#插入表数据
INSERT INTO stu(id,NAME) VALUES(1,'john');
#更新表数据
UPDATE stu SET NAME='lilei' WHERE id=100;
#删除表数据
DELETE FROM stu WHERE id=1;

简单集群网页设计和运行

一切准备就绪后,下载eclipse的安装包,将eclipse安装好,新建项目中选中Web->Dynamic Web Project,整体项目如下:
在这里插入图片描述
展示数据库简单页面index.jsp代码如下:

<%@page language="java" contentType="text/html; charset=UTF-8"%>
<%@page import="java.sql.*"%>
<html>
<head>

<title>Insert title here</title>
</head>
<body>
<pre>
    <%
 // 声明Connection对象
	Connection con;
	
	// 驱动程序名,新版本的mysql connect注意看包名,不是mysql.jdbc,而是mysql.cj.jdbc
	String driver = "com.mysql.cj.jdbc.Driver";
	
//	数据库名
	String database="school";
//	表名
	String table="student";
	// URL指向要访问的数据库名mysql
	//serverTimezone=UTC表示服务使用标准时间,即北京时间UTC,
	//使用SSL安全连接
	String url = "jdbc:mysql://192.168.43.60:3306/"+database+"?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";
	
	// MySQL配置时的用户名
	String user = "csdn";
	// MySQL配置时的密码
	String password = "csdn1234";
	
	// 遍历查询结果集
	try {
		// 加载驱动程序
		Class.forName(driver);
		//其作用与
//		DriverManager.registerDriver(new Driver(driver));;
		
		// 1.getConnection()方法,连接MySQL数据库!!
		con = DriverManager.getConnection(url, user, password);
		if (!con.isClosed())
			out.println("Succeeded connecting to the Database!");
		
		// 2.创建statement类对象,用来执行SQL语句!!
		Statement statement = con.createStatement();
		// 要执行的SQL语句
		String sql = "select * from "+table;
		// 3.ResultSet类,用来存放获取的结果集!!
		ResultSet rs = statement.executeQuery(sql);
		
		out.println("执行结果如下所示:");
		
//		4.获取元数据,也就是获取其表单的列头信息
		ResultSetMetaData metaData=rs.getMetaData();
		
		out.println("-----------------");
		for(int i=1;i<=metaData.getColumnCount();i++) {

			out.print(metaData.getColumnName(i)+"\t");
		}
		out.println();
		out.println("-----------------");

		String col1 = null;
		String col2=null ;
		while (rs.next()) {
			// 获取第一列数据
			col1 =rs.getString(1);
			// 获取第二列数据
			col2 = rs.getString(2);
			// 输出结果
			out.println(col1 + "\t" + col2 );
		}
		//6.结果集必须关闭,否则会引发问题
		rs.close();
		
//		//删除数据
//		String sql1="delete from first where age=16";
//		int del=statement.executeUpdate(sql1);
//		System.out.println("删除了 id=12  的记录"+del+" 条数据");
//		
//		//添加数据
//		String sql2="insert into first values(null,18,'使用jdbc')";
//		int ins=statement.executeUpdate(sql2);
//		System.out.println("添加了 "+ins+" 条数据!");
		
		//7.与数据库的连接必须在最后关闭,否则可能会引发无法访问数据库的错误
		con.close();
	} catch (ClassNotFoundException e) {
		// 数据库驱动类异常处理
		out.println("Sorry,can`t find the Driver!");
		e.printStackTrace();
	} catch (SQLException e) {
		// 数据库连接失败异常处理
		e.printStackTrace();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		out.println("数据库数据成功获取!!");
	}
    %>
    </pre>
</body>
</html>

运行结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44237378/article/details/110920261