作业

作者: xinxin2019 | 来源:发表于2019-10-15 12:11 被阅读0次

    一、选择题:(20 分,每题2 分)

    1、下列哪个不属于内核的功能? ( A )

    A 用户管理B 内存管理C 进程管理D 安全管理

    2、修改文件或者目录的读写权限使用下面哪个命令?(  B  )

    A chown B chmod C umask D chgrp

    3、sed 命令用于修改原文件内容的参数是?( C )

    A. -E B. -l C. -i D. -x

    4、ping 命令指定包大小的参数是?(  D  )

    A -c B -s C -x D -l

    5、下面不属于linux 系统启动级别的是?(  D  )

    A 多用户模式B 预留模式C 重启模式D 命令行模式

    6、下面不属于进程状态的是:(  D )

    A running B stopped C Zombie D wait

    7、下面不属于VIM 编辑器的模式是?( D )

    A 命令模式  B 编辑模式 C 末行模式 D 运行模式

    8、vsftpd 服务中关于匿名用户的配置,如下解释不正确的有?( A )

    A anonymous_upload_enable=YES,允许上传文件

    B anonymous_enable=YES,允许匿名登录

    C anonymous_other_write_enable=YES,允许删除文件

    D 以上都不对

    9、配置lnmp 环境,访问index.html 时,网页显示403,有可能出现的原因是?  A 

    A http 运行用户无法访问网页目录

    B 网页不存在

    C php 配置不正确

    D mysql 配置不正确

    10、下面不属于httpd 虚拟机类型是?(  C )

    A、IP

    B、端口

    C、Hostname

    D、FQDN

    二、简答题(30 分,每题5 分)

    1、描述linux 目录结构以及目录结构命名规定。(5 分)

    /bin :存放系统命令

    /sbin:超级用户使用的命令存放的目录

    /boot:存放着系统的启动文件和内核

    /dev:设备文件主目录

    /proc:系统进程和系统硬件信息

    /etc:系统主配置文件

    /var:所有服务的登录的文件或错误信息文件(LOG FILES)都在/var/log下,此外,一些数据库如MySQL则在/var/lib下,还有,用户未读的邮件的默认存放地点为/var/spool/mail

    /home:普通用户的家目录

    /lib&lib64:系统库文件存放的目录

    /usr:系统帮助文档以及源码包安装位置,此目录是最庞大的目录,要用的应用程序和文件几乎都在这个目录

    /mnt:用户挂载目录

    /run:存放当前运行程序库的目录(当前运行的目录)

    /root:超级用户root家目录

    /tmp:临时文件存放目录 系统启动过程中会产生一些临时文件,这些临时文件就存放在tmp目录下。如果说tmp目录没有存储空间,系统一定启动不起来。

    /media:可移动介质挂载点

    /opt:第三方应用程序文件存放目录

    第一层:“/”目录下的各个目录应该放什么文件数据,例如:/etc目录下放置系统的配置文件,例如:/etc/exports,/etc/hosts,而/bin和/sbin放置程序及系统命令。

    第二层:是针对/usr(unix software resource|Secondary hierarchy)和/var(Variable data)这两个目录的子目录来定义。例如:/var/log下放置系统日志文件等

    linux系统的目录结构最顶端是“/”,一切目录从根开始。 我们可以通过tree命令得到根(/)下的目录结构

    2、Linux 上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。(5 分)

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

    ls: list

    功能:查看目录下文件的详细信息

    -a:显示所有文件,包括隐藏文件。

    -l:列表形式显示详细信息。

    -d:查看目录属性。

    [root@localhost ~]# ls

    anaconda-ks.cfg  nginx-1.14.2  nginx-1.14.2.tar.gz

    [root@localhost ~]# ll

    total 996

    -rw-------. 1 root root    1335 Feb 24 20:08 anaconda-ks.cfg

    drwxr-xr-x  9 1001 1001    186 Mar 26 21:14 nginx-1.14.2

    -rw-r--r--  1 root root 1015384 Mar 26 21:13 nginx-1.14.2.tar.gz

    cd :change directory 切换目录

    cd ~ 切换之家目录

    cd  / 切换至根目录

    pwd:显示当所在的工作目录

    [root@localhost ~]# pwd

    /root

    touch:创建文件

    [root@localhost ~]# touch xinxin2019

    total 996

    -rw-------. 1 root root    1335 Feb 24 20:08 anaconda-ks.cfg

    drwxr-xr-x  9 1001 1001    186 Mar 26 21:14 nginx-1.14.2

    -rw-r--r--  1 root root 1015384 Mar 26 21:13 nginx-1.14.2.tar.gz

    -rw-r--r--  1 root root      0 Mar 31 20:18 xinxin2019

    mkdir :创建文件夹

    [root@localhost ~]# mkdir xinxin

    [root@localhost ~]# ll

    total 996

    -rw-------. 1 root root    1335 Feb 24 20:08 anaconda-ks.cfg

    drwxr-xr-x  9 1001 1001    186 Mar 26 21:14 nginx-1.14.2

    -rw-r--r--  1 root root 1015384 Mar 26 21:13 nginx-1.14.2.tar.gz

    drwxr-xr-x  2 root root      6 Mar 31 20:19 xinxin

    -rw-r--r--  1 root root      0 Mar 31 20:18 xinxin2019

    cp:复制文件或者文件夹(-r)

    -r 复制目录

    [root@localhost ~]# cp xinxin2019 ./xinxin

    mv:移动文件或者更名

    [root@localhost ~]# mv xinxin2019 xinxin2020

    rm :移除文件

    -r:递归

    -f :不询问直接删除

    rm -rf (常用)

    rm -rf ./xinxin2020

    cat:显示文件内容

    [root@localhost ~]# cat anaconda-ks.cfg

    ln:创建链接文件

    -s :创建符号链接

    -v : 显示

    [root@localhost ~]# ln -sv anaconda-ks.cfg softlink

    ‘softlink’ -> ‘anaconda-ks.cfg’

    lrwxrwxrwx  1 root root      15 Mar 31 20:26 softlink -> anaconda-ks.cfg

    find:查找系统命令路径

    [root@localhost ~]# which useradd

    /usr/sbin/useradd

    tar:压缩或者解压目录

    压缩:

    tar -zcvf xinxin2019.tar.gz nginx-1.14.2

    解压:

    tar -zxvf xinxin2019.tar.gz -C /tmp

    3、一个文件的内容如下,如何使用awk 截取第二列的2-5 位置的字符? (5 分)

    cat tmp.txt |awk '{print $2}'|awk -F"xx" '{print $1}'

    $ cat tmp.txt

    aaa aaaxxaaaaaa

    bbb bbbxxbbbbbb

    ccc cccxxcccccc

    ddd dddxxdddddd

    eee eeexxeeeeee

    4、叙述centos7 启动图形界面的开机启动流程?(5 分)

    1.uefi或BIOS初始化,开始post(power on self test)开机自检

    这个过程是开机后,BIOS或UEFI进行硬件检查的阶段,检查内存,硬盘,CPU等硬件信息。

    2. 加载MBR到内存

    加载磁盘主引导记录到内存

    自检硬件没有问题时候,BIOS将会直接找硬盘的第一个扇区,找到前446字节,将MBR加载到内存中,MBR将告诉程序下一阶段去哪里找系统的grub引导。此阶段属于grub第一阶段。grub还有1.5阶段和2阶段。

    MBR概述:全称为Master Boot Record,即硬盘的主引导记录;是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。

    1.主引导程序即主引导记录(MBR)

    可在FDISK程序中找到,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统。

    2.磁盘分区表项(DPT,Disk Partition Table)

    由四个分区表项构成。

    负责说明磁盘上的分区情况,其内容由磁盘介质及用户在使用FDISK定义分区时决定。(具体内容略)

    3.结束标志

    其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。

    3. GRUB阶段

    grub引导阶段

    grub第1.5和第2阶段,信息默认存放在扇区中,如果使用grub-install生成的第2阶段的文件是存放在/boot分区中的。

    为了加载内核系统,不得不加载/boot分区,而加载/boot分区,要有/boot分区的驱动,/boot分区驱动是放在/boot分区中的啊,我们好像进入死循环了,Linux是怎么解决的呢?就是靠放在1.5阶段中的数据,放在第一个扇区后的后续扇区中,第1.5阶段和2阶段总共27个扇区。

    第1.5阶段:mbr之后的扇区,识别stage2所在的分区上的文件系统。

    第2阶段:开机启动的时候看到Grub选项、信息,还有修改GRUB背景等功能都是stage2提供的,stage2会去读入/boot/grub/grub.conf或者menu.lst等配置文件。

    4. 加载内核和initramfs

    引导内核阶段

    加载内核,核心开始解压,启动一些最核心的程序。

    为了让内核足够的轻小,硬件驱动并没放在内核文件里面。

    kernel内核开始初始化,用systemd来代替centos6以前的init程序

    先执行initrd.target

    包括挂载/etc/fstab文件中系统,挂载之后,就可以切换到根目录了。

    从initramfs根文件系统切换到磁盘的根目录

    systemd执行默认target配置

    centos7表面有“运行级别”这个概念,实际是为了兼容以前的系统,每个所谓“运行级别”都有对应的软连接指向,默认的启动级别/etc/systemd/system/default.target,根据它的指向可以找到系统要进入到哪个模式。

    模式:

    0 ==> runlevel0.target, poweroff.target

    1 ==> runlevel1.target, rescue.target

    2 ==> runlevel2.target, multi-user.target

    3 ==> runlevel3.target, multi-user.target

    4 ==> runlevel4.target, multi-user.target

    5 ==> runlevel5.target, graphical.target

    6 ==> runlevel6.target, reboot.target

    5. systemd阶段

    systemd阶段开启服务

    systemd执行sysinit.target

    systemd启动multi-user.target下的本机与服务器服务

    systemd执行multi-user.target下面的/etc/rc.d/rc.local

    Systemd执行multi-user.target下的getty.target及登录服务

    systemd执行graphical图形化(运行级别为5)需要的服务

    5、简述LVS NAT 模型工作原理(5 分)

    原理是修改目标IP地址为挑选出新的RS的IP地址。即请求进入负载均衡器时做DNAT,响应出负载均衡器时做SNAT。

    1.当用户请求到达Director Server,此时请求的数据报文会先到达内核的PREROUTING链,此时报文的源IP是CIP,目标IP是VIP。

    2.PREROUTING链检查发现数据包的目标IP是本机,将数据包送至INPUT链。

    3.IPVS内核模块比对数据包请求的服务是否为集群服务,如果是,则修改数据包的目标IP为后端服务器的IP,然后将数据包发至POSTROUTING链,做DNAT转换。此时报文的源IP是CIP,目标IP是RIP

    4.POSTROUTING链通过选路,将数据包发送到Real Server。

    5.Real Server比对发现目标IP是自己的IP,开始建立响应报文发回给Director Server,此时报文的源IP是RIP,目标IP是CIP.

    6.Director Server在响应客户端之前,此时会将源IP地址修改为自己的IP地址,然后响应给客户端,做SNAT转换。此时报文的源IP是VIP。目标IP是CIP。

    6、简述HTTP 的MPM 工作模式(5 分)

    MPM:multi-processing  module多路处理模块,支持三种I/O模型:prefork,worker,event

    prefork:多进程I/O模型,每个进程响应一个请求,默认模型

    一个主进程:生成和回收n个子进程,创建套接字,不响应请求

    多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个

    会预先准备好子进程等待用户的访问,系统调用fork函数

    prefork用一个进程相应用户的请求

    worker:复用的多进程I/O模型,多进程多线程,IIS使用此模型

    一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n

    缺点是当一个线程受影响时,该子进程的所有线程都会受到影响

    event:事件驱动模型(worker模型的变种)

    一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n,有专门的线程来管理这些keep-alive类型的线程,(这里是比worker改进的地方)当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放,这样增强了高并发场景下的请求处理能力

    prefork MPM:进程相应请求

    worker MPM:线程响应用户的请求

    event MPM:比worker多了一个监管的模型

    三、实战题:(总分50 分)

    1、创建一个20G 的分区,并格式化为ext4 文件系统。**要求:**(15 分)

    - (1)block 大小为2048,预留空间20%,卷标为MYDATA,

    fdisk /dev/sdb

    n-->p-->1-->2048-->+20G-->w

    mkfs -t ext4 -b 2048 

    tune2fs -m 20 /dev/sdb1

    e2label /dev/sdb1 /mydata

    - (2) 挂载至/mydata 目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。

    mkdir /mydata

    mount -o noatime,noexec /dev/sdb1 /mydata

    - (3)可开机自动挂载。

    vim /etc/fstab

    /dev/sdb1 /mydata ext4 noatime,noexec 0 0

    mount -a

    2、使用systemd 配置nginx 服务开机启动(10 分)

    vim /usr/lib/systemd/system/nginx.service

    [Unit]

    Description=nginx - high performance web server

    After=network.target remote-fs.target nss-lookup.target

    [Service]

    Type=forking

    ExecStart=/usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf

    ExecReload=/usr/local/openresty/nginx/sbin/nginx -s reload

    ExecStop=/usr/local/openresty/nginx/sbin/nginx -s stop

    [Install]

    WantedBy=multi-user.target

    systemctl daemon-reload

    开启nginx服务

    systemctl start nginx.service

    开机自启nginx

    systemctl enable nginx.service

    3、搭建DNS,并实现DNS 主从解析。(10 分)

    搭建DNS主从服务器。假设主DNS服务器IP为192.168.1.100,从DNS服务器IP为192.168.1.101

    (1)登录主DNS服务器和从DNS服务器上安装DNS服务器软件

    root用户执行 yum install bind

    (2)然后修改主DNS服务器上的DNS主配置文件/etc/named.conf

    options {

    listen-on port 53 { any; };  监听端口和哪些主机可以访问解析,any表示所有

    directory      "/var/named"; 数据库文件的目录位置

    allow-query    { any; }; 允许哪些主机请求查询

    recursion yes;  将自己视为客户端的一种查询方式

    zone "." IN {

    type hint;

    file "named.ca";

    };

    zone  "magedu.com" IN {

    type master;

    file "magedu.com";

    allow-transfer{192.168.1.101;}  定义哪些从DNS服务器可以同步数据,多个IP之间以分号分隔,且最后以分号结尾。

    }

    zone "1.168.192.in-addr.arpa" IN {

    type master;

    file  "named.192.168.1";

    allow-transfer{192.168.1.101;}

    }

    (3)修改从DNS服务器上的DNS主配置文件/etc/named.conf

    options {

    listen-on port 53 { any; };  监听端口和哪些主机可以访问解析,any表示所有

    directory      "/var/named"; 数据库文件的目录位置

    allow-query    { any; }; 允许哪些主机请求查询

    recursion yes;  将自己视为客户端的一种查询方式

    zone "." IN {

    type hint;

    file "named.ca";

    };

    zone  "magedu.com" IN {

    type slave;  表示本机是从DNS服务器

    file "slaves/magedu.com"; 表示同步后的文件放置在哪里,这是相对于/var/named/目录的相对路径

    masters{192.168.1.100;}  定义主服务器地址

    }

    zone "1.168.192.in-addr.arpa" IN {

    type slave;

    file  "slaves/named.192.168.1";

    masters{192.168.1.100;}

    }

    (4)修改主DNS服务器的域名的解析库文件,从DNS服务器不需要定义

    正向解析文件:/var/named/magedu.com

    $TTL 86400

    $ORIGIN  magedu.com.

    @      IN SOA  ns1.magedu.com.   admin.magedu.com. (

    2019011301

    1H

    5M

    1W

    86400 )

    @  IN   NS    ns1.magedu.com.

    @  IN   NS    slave.magedu.com.

    @  IN   MX   10  mail.magedu.com.

    ns1  IN A       192.168.1.110

    slave  IN A       192.168.1.111

    www  IN  A     192.168.1.110

    ftp     IN  A      192.168.1.110

    web  IN  A       CNAME   ftp

    说明:增加了两条slave的记录。

    反向解析文件:/var/named/named.192.168.1

    $TTL 86400

    @      IN SOA  ns1.magedu.com.   admin.magedu.com. (

    2019011301

    1H

    5M

    1W

    86400 )

    @  IN   NS    ns1.magedu.com.

    @  IN   NS    slave.magedu.com.

    110  IN  PTR   ns1.magedu.com.

    111  IN  PTR   slave.magedu.com.

    110  IN  PTR   www

    110  IN PTR   ftp

    110  IN PTR   web

    (5)重启主DNS服务器和从DNS服务器上的named服务

    # cd /var/named

    (仅主DNS服务器执行)# chown  named:named  named.192.168.1   magedu.com

    # service  named restart

    (6)观察

    观察从DNS服务器上的解析库文件是否进行同步,位置于/var/named目录下

    观察日志文件:/var/log/messages

    子域授权:

    在本域名服务器上的正向解析文件定义子域

    #  vim  /var/named/magedu.com

    $TTL 86400

    $ORIGIN  magedu.com.

    @      IN SOA  ns1.magedu.com.   admin.magedu.com. (

    201901130

    1H

    5M

    1W

    86400 )

    @  IN   NS    ns1.magedu.com.

    @  IN   NS    slave.magedu.com.

    ops.magedu.com.   IN   NS    ns1.ops.magedu.com.    添加NS记录

    @  IN   MX   10  mail.magedu.com.

    ns1  IN A       192.168.1.110

    ns1.ops.magedu.com.   IN    A   192.168.1.120           添加对应的A记录

    slave  IN A       192.168.1.111

    www  IN  A     192.168.1.110

    ftp     IN  A      192.168.1.110

    web  IN  A       CNAME   ftp

    当然子域还需要有对应的子域的解析库文件,配置格式与上级域类似。这样才能对子域进行解析。

    4、基于LNMP 搭建wordpress。(15 分)

    1、编译安装搭建wordpress

    1)编译安装nginx

    yum -y install gcc gcc-c++ autoconf automake make wget vim

    yum -y install openssl openssl-devel libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed libtool zlib zlib-devel pcre pcre-devel patch

    yum -y install libxml2 libxml2-dev

    yum -y install libxslt-devel

    yum -y install perl-devel perl-ExtUtils-Embed

    yum install bzip2 bzip2-devel -y

    yum -y install libjpeg-devel -y

    yum install libpng -y

    yum install libpng-devel -y

    yum install freetype-devel -y

    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_flv_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_stub_status_module --with-http_sub_module --with-http_random_index_module --with-http_degradation_module --with-http_secure_link_module --with-http_gzip_static_module --with-http_perl_module --with-pcre=../pcre-8.42 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.1-pre8 --with-file-aio --with-mail --with-mail_ssl_module --with-stream --with-ld-opt="-Wl,-E" --add-module=../nginx-sticky-module --add-module=../nginx_vts

    vim /usr/lib/systemd/system/nginx.service

    [Unit]

    Description=nginx - high performance web server

    After=network.target remote-fs.target nss-lookup.target

    [Service]

    Type=forking

    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    ExecReload=/usr/local/nginx/sbin/nginx -s reload

    ExecStop=/usr/local/nginx/sbin/nginx -s stop

    [Install]

    WantedBy=multi-user.target

    2)编译安装php

    ./configure -prefix=/usr/local/php -with-config-file-path=/usr/local/php/etc -with-bz2 -with-curl -enable-ftp -enable-sockets -disable-ipv6 -with-gd -with-jpeg-dir=/usr/local -with-png-dir=/usr/local -with-freetype-dir=/usr/local -enable-gd-native-ttf -with-iconv-dir=/usr/local -enable-mbstring -enable-calendar -with-gettext -with-libxml-dir=/usr/local -with-zlib -with-pdo-mysql=mysqlnd -with-mysqli=mysqlnd -with-mysql=mysqlnd -enable-dom -enable-xml -enable-fpm -with-libdir=lib64 -enable-bcmath --with-openssl

    vim /usr/lib/systemd/system/php-fpm.service

    [Unit]

    Description=php-fpm

    After=syslog.target network.target

    [Service]

    Type=forking 

    ExecStart=/usr/local/php/sbin/php-fpm

    ExecStop=/usr/bin/pkill php-fpm

    PrivateTmp=false

    [Install]

    WantedBy=multi-user.target

    cp ./php.ini-production /usr/local/php/etc/php.ini

    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

    确保phpinfo()显示正常。

    3)安装数据库

    yum install wget -y

    wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

    yum localinstall mysql57-community-release-el7-7.noarch.rpm -y

    yum install mysql-community-server -y

    systemctl start mysqld

    systemctl enable mysqld

    grep 'temporary password' /var/log/mysqld.log

    2019-06-09T11:00:52.630626Z 1 [Note] A temporary password is generated for root@localhost: YHORQsfC_1,D

    mysql_secure_installation

    define( 'DB_NAME', 'wordpress' );

    /** MySQL database username */

    define( 'DB_USER', 'wordpress' );

    /** MySQL database password */

    define( 'DB_PASSWORD', '数据库密码' );

    /** MySQL hostname */

    define( 'DB_HOST', '127.0.0.1' );

    /** Database Charset to use in creating database tables. */

    define( 'DB_CHARSET', 'utf8' );

    2、搭建php-admin

    下载phpMyAdmmin上传至服务器

    登录phpMyAdmin报错mysqli_real_connect(): (HY000/2002): No such file or directory

    mv  config.sample.inc.php config.inc.php

    $cfg['Servers'][$i]['host'] = '127.0.0.1';

    安装成功。

    0人点赞

    linux运维

    相关文章

      网友评论

          本文标题:作业

          本文链接:https://www.haomeiwen.com/subject/puzjmctx.html