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常见配置文件参数有哪些?含义是什么?
user www www;
worker_processes 2;
error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;
events
{
worker_connections 1024;
}
http
{
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 64k;
client_max_body_size 8m;
keepalive_timeout 65;
autoindex on;
autoindex_exact_size on;
autoindex_localtime on;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
server
{
listen 80;
server_name 127.0.0.1;
rewrite ^(.*) https://www.baidu.com;
deny 127.0.0.1;
allow 172.18.5.54;
}
upstream myserver {
ip_hash;
server 127.0.0.1:8080;
server 192.168.142.101:8080 backup;
server 192.168.142.101:8080 weight=1;
fair
}
server
{
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;
}
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;
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/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把用户的请求分为静态界面和动态界面两种方案。静态界面请求(例如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数据库源码部署步骤有哪些?
1、下载并上传mysql和boots包,并解压
2、安装依赖
3、创建用户和组
4、预编译
5、编译并安装
6、初始化并且设置启动命令
14)MYSQL 5.5和5.7、8.0创建用户和授权的命令分别是?
-------------------------5.5-------------------------
create user zabbix@localhost identified by '123456';
grant all on *.* to zabbix;
-------------------------5.7-------------------------
grant all privileges on *.* to 'root'@localhost identified by '123456';
-------------------------8.0-------------------------
create user 'zabbix'@'localhost' identified with mysql_native_password by '123456';
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远程访问。写出所有操作过程截图和命令;
mysql> create database jfedu1;
Query OK, 1 row affected (0.00 sec)
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)
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)
|