• 第20周作业



    1、搭建一个 LNMP 架构请写出它的底层原理,当用户访问的是静态资源、和动态资源这两种类型的资源是,其中各个 service 之间做了什么操作。请分别一 一写出
    nginx+mysql+php,

    nginx

    #!/bin/bash
    #安装前请检查是否存在web服务和要安装的nginx的版本
    download_url="http://nginx.org/download/nginx-1.18.0.tar.gz"
    filename=${download_url##*/}
    uncompress_dir=${filename%.t*}
    download_dir="/usr/local/src"
    install_dir="/apps/nginx"
    cpu=`lscpu|awk '/^CPU(s)/{print $2}'`

    install_nginx(){
    [ -d $install_dir ]||mkdir -pv $install_dir
    yum install -y gcc pcre-devel openssl-devel zlib-devel
    useradd -s /sbin/nologin nginx
    cd $download_dir
    wget $download_url
    tar xf $filename
    cd $uncompress_dir
    ./configure --prefix=$install_dir --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module
    --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
    make -j $cpu && make install
    chown -R nginx.nginx $install_dir
    ln -s $install_dir/sbin/nginx /usr/bin/
    cat >> /usr/lib/systemd/system/nginx.service <<EOF
    [Unit]
    Description=nginx - high performance web server
    Documentation=http://nginx.org/en/docs/
    After=network-online.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    [Service]
    Type=forking
    PIDFile=/apps/nginx/run/nginx.pid
    ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID
    [Install]
    WantedBy=multi-user.target
    EOF
    mkdir -pv $install_dir/run
    sed -Ei.bak '/^#pid/s@#pid.*@pid /apps/nginx/run/nginx.pid;@' $install_dir/conf/nginx.conf

    systemctl daemon-reload
    systemctl enable --now nginx
    }

    install_nginx


    前面用nginx做代理,当访问不同后缀的页面时调度到相应的服务,通过location定义
    mysql放到后面.通过php或其他程序建立与数据库的连接
    2、AOF 和 RDB 的两者之间的区别以及优缺点
    RDB:基于时间的快照,其默认只保留当前最新的一次快照,特点是执行速度比较快,redis从master主进程先fork出一个子进程,使用写时复制的机制,子进程将内存中的数据保存为一个临时文件,当数据保存完成再将上一次保存的临时文件替换掉,然后关闭子进程,这样可以保证每一次做快照时保存的数据都是完整的
    缺点:不能实时保存数据,可能会丢失自上次RDB备份到当前的内存数据
    AOF:默认每秒钟fsync一次,即执行的命令默认保存到AOF文件中,这样即使redis服务器发生故障的话最多只丢失1秒钟之内的数据,也可以设置不同的策略,数据的安全性相对较高写入采用的是append模式,在写入过程中不需要seek,即使出现了宕机现象,也不会破坏日志文件中已经存在的内容,可以在AOF文件体积变得过大时,自动进行AOF的重写.包含一个格式清晰、易于理解的文件日志记录
    缺点:即使有些操作是重复的也会全部记录,AOF文件的大小要大于RDB文件
    AOF在恢复大数据时的速度比RDB的恢复速度慢
    bug出现的可能性更多
    3、请问 Redis 持久化如何实现。
    RDB和AOF
    RDB:
    自动保存
    定时执行下bgsave,做好备份
    AOF:
    修改配置文件 appendonly yes
    4、通过脚本实现自动化 RDB 备份
    用定时任务,定时执行备份
    #!/bin/bash
    redis-cli -h 127.0.0.1 -a 123456 bgsave &> /dev/null
    date=`date +%F_%T`
    [ -e /backup/redis-rdb ]||mkdir -p /backup/redis-rdb
    mv /var/lib/redis/dump.rdb /backup/redis-rdb/dump_6379-$date.rdb

  • 相关阅读:
    SystemTap
    在qemu上运行BusyBox
    Initramfs 原理和实践
    在qemu环境中用gdb调试Linux内核
    [转载] 你所不知道的TIME_WAIT和CLOSE_WAIT
    Linux VXLAN
    :not伪类选择器一些错误的写法
    c# 微软小冰-虚拟女友聊天
    Django使用表单操作数据库
    Django内置过滤器详解附代码附效果图--附全部内置过滤器帮助文档
  • 原文地址:https://www.cnblogs.com/ssel/p/13936258.html
Copyright © 2020-2023  润新知