Linux云计算-评测题目

6 篇文章 0 订阅
5 篇文章 0 订阅

Linux云计算VIP培训班-测评题目

1)Nginx工作原理?

查找配置文件,将用户的请求反向代理给后端服务器的location block模块,而location block会根据请求的条件,分别寻找相应的匹配项,然后再把获取到的界面或者信息,发给代理服务器,再次经过代理转发给用户。

2)Nginx Master进程和Worker进程区别?

Nginx里,Master只有1个,Worker可以有多个;
Master:管理Worker,读取配置文件,判断配置文件语法
Worker:处理用户请求
#扩展
user nginx;
worker_processes 1;

上述配置的意思就是启动nginx后只有1个worker进程,你想要多少个worker进程,将worker_processe指令的值设置成多少就好了,非常简单, worker_ processes指令只能在main区域中使用,通常情况下,
worker_processes的值通常不会大于服务器中cpu的核心数量,

3)Nginx虚拟主机类型有几种?分别是?

3种:
1、基于域名的虚拟主机
2、基于IP的虚拟主机
3、基于端口的虚拟主机
分别为:
1、修改主配置文件,主配置末行添加includ vhost/*.conf
2、进入vhost目录创建虚拟主机配置文件
3、在虚拟主机配置文件中,创建server、监听端口、域名、发布目录以及虚拟主机首页

server {
	listen  80;
	server_name v1.jfedu.com;
	
	location / {
	root html;
	index index.html index.htm;
	}
}
4、在发布目录里面创建测试页面
tree ./
html/
└── index.html
5、设置hosts文件,设置本地域名解析(或者通过外网域名做解析)

vim /etc/hosts
192.168.142.100 v1.jfedu.com

windows 修改hosts文件(位置:C:\Windows\System32\drivers\etc\hosts),以管理员身份,记事本打开方式(取消只读,更改权限才能保存。)添加本地web解析
192.168.142.100 v1.jfedu.com
保存退出,浏览器测试访问

#扩展
虚拟主机指的是:在web界面里面,就是一个独立的站点域名(或者IP或者端口),具有独立的程序以及资源目录,可以提供给用户进行访问

4)Nginx域名虚拟主机类型-实现的流程和方法大致有哪些?

#类型
1、基于域名的虚拟主机 2、基于IP的虚拟主机 3、基于端口的虚拟主机
#流程方法:
用户在获取默认网页为 域名/index.html的情况下,在http模块里面创建两个server模块,创建(server模块必须在http模块里才能生效。)

5)Nginx Location用途是什么?

用户的请求分发给master之后,master会指定匹配的规则给worker,并让worker如何去匹配。

6)Nginx发布网站,浏览器访问http://IP/,如何实现默认显示about.html的内容?

index选项名字更改
#默认情况
index index.html index.htm;
#更改之后
index about.html index.html index.htm;

7)Nginx常见配置文件参数有哪些?含义是什么?

#定义Nginx运行的用户和用户组
user www www;
#nginx进程数,建议设置为等于CPU总核心数.
worker_processes 2;
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;

#进程文件
pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致.
worker_rlimit_nofile 65535;
#
#工作模式与连接数上限
events
{
   #单个进程最大连接数(最大连接数=连接数*进程数)
   worker_connections 1024;    #最大连接数,默认为512
}
#
#设定http服务器
http
{
   include mime.types; #文件扩展名与文件类型映射表
   default_type application/octet-stream; #默认文件类型
   #charset utf-8; #默认编码
   server_names_hash_bucket_size 128; #服务器名字的hash表大小
   client_header_buffer_size 32k; #上传文件大小限制
   large_client_header_buffers 4 64k; #设定请求缓存
   client_max_body_size 8m; #设定请求缓存
   keepalive_timeout 65;  #连接超时时间,默认为65s,可以在http,server,location块。
   # 开启目录列表访问,合适下载服务器,默认关闭.
   autoindex on; # 显示目录
   autoindex_exact_size on; # 显示文件大小 默认为on,显示出文件的确切大小,单位是bytes 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
   autoindex_localtime on; # 显示文件时间 默认为off,显示的文件时间为GMT时间 改为on后,显示的文件时间为文件的服务器时间
   
   sendfile on; # 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载.注意:如果图片显示不正常把这个改成off.
   tcp_nopush on; # 防止网络阻塞
   tcp_nodelay on; # 防止网络阻塞(必须和sendfile搭配使用)
   
   
   # FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度.下面参数看字面意思都能理解.
   fastcgi_connect_timeout 300; ## 链接超时
   fastcgi_send_timeout 300;  ##读取 是指nginx进程向fastcgi进程发送request的整个过程的超时时间
   fastcgi_read_timeout 300;  ##发请求 是指fastcgi进程向nginx进程发送response的整个过程的超时时间
   fastcgi_buffer_size 64k;   ##缓存大小
   fastcgi_buffers 4 64k;	   ##缓存4*大小
   fastcgi_busy_buffers_size 128k;  #繁忙时候的缓存设置大小设置
   fastcgi_temp_file_write_size 128k; ##临时文件写入大小设置
   
   # gzip模块设置
   gzip on; #开启gzip压缩输出
   gzip_min_length 1k; #允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大
   gzip_buffers 4 16k; #表示申请4个单位为16k的内存作为压缩结果的缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
   gzip_http_version 1.1; #压缩版本(默认1.1,目前大部分浏览器已经支持gzip解压.前端如果是squid2.5请使用1.0)
   gzip_comp_level 2; #压缩等级.1压缩比最小,处理速度快.9压缩比最大,比较消耗cpu资源,处理速度最慢,但是因为压缩比最大,所以包最小,传输速度快
   gzip_types text/plain application/x-javascript text/css application/xml;
   #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn.
   gzip_vary on;#选项可以让前端的缓存服务器缓存经过gzip压缩的页面.例如:用squid缓存经过nginx压缩的数据
   
   #开启限制IP连接数的时候需要使用
   #limit_zone crawler $binary_remote_addr 10m;
   
   #虚拟主机的配置
   server
   {
       # 监听端口
       listen 80;
       # 域名可以有多个,用空格隔开
       server_name 127.0.0.1;
       # HTTP 自动跳转 HTTPS
       rewrite ^(.*) https://www.baidu.com;
       deny 127.0.0.1;  #拒绝的ip(黑名单)
       allow 172.18.5.54; #允许的ip (白名单)
   }
   ##upstream的负载均衡,5种调度算法()
   upstream myserver {   
     ip_hash;   ##哈希算法,同ip使用固定后端服务器来访问,并且可以有效解决动态网页存在的session共享问题。
     server 127.0.0.1:8080;  ##默认轮询
     server 192.168.142.101:8080 backup;  #热备
     server 192.168.142.101:8080 weight=1; #rr轮询权值,权限越大,访问概率越大
     fair   ##fair算法,可以根据页面大小和加载时间长短智能地进行负载均衡,根据后端响应时间来分配请求,更智能。nginx本身不支持fair算法需要添加upstream_fair 模块
     
   }
   server
   {
       # 监听端口 HTTPS
       listen 443 ssl;
       server_name https://www.baidu.com;
       root /data/www/;
       # 配置域名证书
       ssl_certificate      /data/ngixnx/conf/certs/v1.jd.com_bundle.crt;
       ssl_certificate_key  /data/nginx/conf/certs/v1.jd.com.key;
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
       ssl_protocols SSLv2 SSLv3 TLSv1;
       ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
       ssl_prefer_server_ciphers  on;
   
       index index.html index.htm index.php;
       
       location ~ .*\.(php|php5)?$
       {
           fastcgi_pass 127.0.0.1:9000;
           fastcgi_index index.php;
           include fastcgi.conf;
       }
       
       # 配置地址拦截转发,解决跨域验证问题
       location /oauth/{
           proxy_pass https://localhost:12345/sdf/;
           proxy_set_header HOST $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
       
       # 图片缓存时间设置
       location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
           expires 10d;
       }
       
       # JS和CSS缓存时间设置
       location ~ .*\.(js|css)?$ {
           expires 1h;
       }

       # 日志格式设定
       log_format access '$server_name $remote_addr -$remote_user [$time_local] "$request"'
                 '$status $uptream_status $body_bytes_sent "$http_referer"'
                 '"$http_user_agent" "$http_x_forwarded_for" '
                 '$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time';
      # 定义本虚拟主机的访问日志
       access_log /var/log/nginx/access.log access;
       
       # 设定查看Nginx状态的地址.StubStatus模块能够获取Nginx自上次启动以来的工作状态,此模块非核心模块,需要在Nginx编译安装时手工指定才能使用
       location /NginxStatus {
           stub_status on;
           access_log on;
           auth_basic "NginxStatus";
           auth_basic_user_file conf/htpasswd;
           #htpasswd文件的内容可以用apache提供的htpasswd工具来产生.
       }
   }
}
···········································································
location ( = | ^~ | ~* | ~ | / )
=			精确匹配
^~			以什么开头匹配
~*|~		不区分大小写匹配|区分大小写匹配
/			最大目录匹配

8)Nginx负载均衡算法有哪些?RR和IP_HASH区别是?

1、轮询
每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。

2、weight(轮询权值)
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

3、ip_hash 哈希分配
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。

4、fair(第三方)
比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

5、url_hash(第三方)

按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。

9)Nginx动静分离是什么意思?实现的方法是?

#Nginx动静分离:
Nginx把用户的请求分为静态界面和动态界面两种方案。静态界面请求(例如html|htm)分发给静态文件服务器处理,动态界面请求(例如js|css)分发给php/tomcat处理。
#实现方法
把静态界面的请求设置一个域名与动态请求界面请求的域名区分开,这样用户就不会直接通过location规则去匹配,再去区分,节省资源

10)MYSQL数据库用途?

存储数据,读取数据。部署在服务器上,应用在web上。
数据的来源有很多,比如用户账号密码,出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

11)关系型(MYSQL)数据库特点有哪些?

数据以表格的形式出现;
每行记录数据的真实内容;
每列记录数据真实内容的数据域;
无数的行和列组成一张表;
若干的表组成一个数据库。

12)MYSQL工作引擎有哪些?

ISAM
MyISAM
InnoDB 
MEMORY
CSV
BLACKHOLE
ARCHIVE
PERFORMANCE_SCHEMA
Berkeley
Merge
Federated
Cluster/NDB
.....
其中MyISAM、InnoDB使用最为广泛
1.Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数的。当进行Select count(*) from table指令的时候,需要进行扫描全表。所以当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的。
2.MyIASM引擎,它是MySql的默认引擎,但不提供事务的支持,也不支持行级锁和外键。因此当执行Insert插入和Update更新语句时,即执行写操作的时候需要锁定这个表。所以会导致效率会降低。不过和Innodb不同的是,MyIASM引擎是保存了表的行数,于是当进行Select count(*) from table语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的。可以将MyIASM作为数据库引擎的首先。

5.7和8.0默认使用的是Innodb引擎

各种搜索引擎介绍

InnoDB
MySql 5.6 版本默认的存储引擎。InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。InnoDB 的行级别锁定以及 Oracle 风格的一致性无锁读提升了它的多用户并发数以及性能。InnoDB 将用户数据存储在聚集索引中以减少基于主键的普通查询所带来的 I/O 开销。为了保证数据的完整性,InnoDB 还支持外键约束。

MyISAM
MyISAM既不支持事务、也不支持外键、其优势是访问速度快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者以读为主的数据场景。

Memory
在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失

BLACKHOLE
黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。

CSV
它的表真的是以逗号分隔的文本文件。CSV 表允许你以 CSV 格式导入导出数据,以相同的读和写的格式和脚本和应用交互数据。由于 CSV 表没有索引,你最好是在普通操作中将数据放在 InnoDB 表里,只有在导入或导出阶段使用一下 CSV 表。

NDB
(又名 NDBCLUSTER)——这种集群数据引擎尤其适合于需要最高程度的正常运行时间和可用性的应用。注意:NDB 存储引擎在标准 MySql 5.6 版本里并不被支持。目前能够支持
MySql 集群的版本有:基于 MySql 5.1 的 MySQL Cluster NDB 7.1;基于 MySql 5.5 的 MySQL Cluster NDB 7.2;基于 MySql 5.6 的 MySQL Cluster NDB 7.3。同样基于 MySql 5.6 的 MySQL Cluster NDB 7.4 目前正处于研发阶段。

Merge
允许 MySql DBA 或开发者将一系列相同的 MyISAM 表进行分组,并把它们作为一个对象进行引用。适用于超大规模数据场景,如数据仓库。

Federated
提供了从多个物理机上联接不同的 MySql 服务器来创建一个逻辑数据库的能力。适用于分布式或者数据市场的场景。

Example
这种存储引擎用以保存阐明如何开始写新的存储引擎的 MySql 源码的例子。它主要针对于有兴趣的开发人员。这种存储引擎就是一个啥事也不做的 "存根"。你可以使用这种引擎创建表,但是你无法向其保存任何数据,也无法从它们检索任何索引。

常用存储引擎及适用场景

InnoDB
用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择。
事务

MyISAM
如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么可以选择这个存储引擎。

Memory
将所有的数据保存在内存中,在需要快速定位记录和其他类似数据的环境下,可以提供极快的访问。Memory的缺陷是对表的大小有限制,虽然数据库因为异常终止的话数据可以正常恢复,但是一旦数据库关闭,存储在内存中的数据都会丢失。

补充2点:
1.大容量的数据集时趋向于选择Innodb。因为它支持事务处理和故障的恢复。Innodb可以利用数据日志来进行数据的恢复。主键的查询在Innodb也是比较快的。
2.大批量的插入语句时(这里是INSERT语句)在MyIASM引擎中执行的比较的快,但是UPDATE语句在Innodb下执行的会比较的快,尤其是在并发量大的时候。

13)MYSQL数据库源码部署步骤有哪些?

#5.7
1、下载并上传mysql和boots包,并解压
2、安装依赖
3、创建用户和组
4、预编译
5、编译并安装
6、初始化并且设置启动命令

14)MYSQL 5.5和5.7、8.0创建用户和授权的命令分别是?

-------------------------5.5-------------------------
#创建用户zabbix@localhost并设置密码
create user zabbix@localhost identified by '123456';
#授权所有权限给zabbix@localhost
grant all on *.* to zabbix;
-------------------------5.7-------------------------
#创建并授权给root@localhost用户所有权限并设置密码为123456
grant all privileges on *.* to 'root'@localhost identified by '123456';			
-------------------------8.0-------------------------
#创建用户zabbix@localhost并设置密码
create user 'zabbix'@'localhost' identified with mysql_native_password by '123456';
#授权所有权限给zabbix@localhost
grant all on *.* to "zabbix"@"localhost";

15)在MYSQL5.7数据库中,创建jfedu1库,同时创建用户jfedu,在jfedu1库中,创建t1表,表字段设置为:id,name,passwd,ip,app,插入2条数据。实现Windows客户端192.168.1.100通过Navicat for mysql工具通过jfedu用户和密码123456远程访问。写出所有操作过程截图和命令;

#在MYSQL5.7数据库中,创建jfedu1库
mysql> create database jfedu1;
Query OK, 1 row affected (0.00 sec)
#同时创建用户jfedu
mysql> grant all privileges on jfedu1.* to "jfedu1"@"192.168.142.%" identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#在jfedu1库中,创建t1表,表字段设置为:id,name,passwd,ip,app
mysql> create table t1 (
   -> id int(20) primary key auto_increment,
   -> name varchar(20),
   -> passwd varchar(20),
   -> ip varchar(20),
   -> app varchar(10)
   -> );
Query OK, 0 rows affected, 1 warning (0.00 sec)
#查看所有表
mysql> show tables;
+------------------+
| Tables_in_jfedu1 |
+------------------+
| t1               |
+------------------+
1 row in set (0.00 sec)
#查看表结构
mysql> desc t1;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(20)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(20) | YES  |     | NULL    |                |
| passwd | varchar(20) | YES  |     | NULL    |                |
| ip     | varchar(20) | YES  |     | NULL    |                |
| app    | varchar(10) | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
5 rows in set (0.02 sec)
#插入两条数据
mysql> insert into t1 values('1','zhangsan','123456','001','linux');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 values('2','lisi','123456','002','linux');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+----+----------+--------+------+-------+
| id | name     | passwd | ip   | app   |
+----+----------+--------+------+-------+
|  1 | zhangsan | 123456 | 001  | linux |
|  2 | lisi     | 123456 | 002  | linux |
+----+----------+--------+------+-------+
2 rows in set (0.00 sec)

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值