运维相关自我总结

备份文档——LNMP架构搭建-构建一个blog网站

2020-02-12  本文已影响0人  如歌丨如歌
1..LNMP架构的组成
    L --- Linux
    注意: selinux必须关闭,防火墙关闭
      确保/tmp目录为1777,否则mysql服务无法启动
    N --- nginx服务部署
    作用: 用于处理用户的静态请求 处理html jpg txt等静态资源文件
    M --- mysql服务部署(yum安装很慢 编译安装很慢,复杂)
    (使用mariadb替代)
    作用: 存储用户字符串数据信息
    P --- php服务
    作用: 处理动态的页面请求
          和数据库建立关系
2..nginx服务介绍
    介绍nginx服务软件特点
    1) 支持高并发,消耗内存资源少
    2) 具有多种功能
        网站web服务功能    --- apache
        网站负载均衡功能 --- LVS
        网站缓存服务功能 --- squid
    3) 在多种系统平台都可以进行部署
    4) nginx实现网络通讯时使用的是'异步网络'io模型: epoll模型(apache使用select模型)
        epoll模型: 连接数多,性能基本不影响
            宿舍管理员: 找人,查看人员的登记信息 -- 回调callback
            幼儿园阿姨: 小盆友上厕所,提前和小盆友说好,有需求,站在某个位置,发现后去处理
    
        select模型: 连接数多,性能下降
            宿舍管理员: 找人,一个一个去问 -- 线性轮询
            幼儿园阿姨: 小盆友上厕所,一个一个小盆友去询问

3..nginx服务安装(采用yum安装)   --- web服务器上安装
    yum官网源安装过程
    第一步: 更新nginx官方yum源
            [root@web01 nginx-1.16.1]# vim /etc/yum.repos.d/nginx.repo
            [nginx-stable]
            name=nginx stable repo
            baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
            gpgcheck=1
            enabled=1
            gpgkey=https://nginx.org/keys/nginx_signing.key
            module_hotfixes=true
    
    第二步:yum安装nginx
        yum install nginx
        [root@web01 nginx-1.16.1]# echo $?  ##返回值 -- 0 才是成功
        0
        可以查询上一步的操作是否成功
    
    第三步: 启动nginx服务检查是否安装成功
        [root@web01 nginx-1.16.1]# systemctl start nginx
        [root@web01 nginx-1.16.1]# systemctl enable nginx
        测试访问nginx服务
            电脑浏览器访问10.0.0.7的外网地址,测试是否访问成功(注意修改hosts)
4..nginx重要目录
    /etc/logrotate.d/nginx  --- 实现nginx日志文件定时切割处理
            1..利用脚本实现切割处理
                #!/bin/bash
                
                mv /var/log/nginx/access.log /var/log/nginx/access_$(data +%F).log
                systemctl restart nginx ##重启完会自动生成access.log文件
            2..利用专用的程序进行切割处理---logrotate
            [root@web01 nginx-1.16.1]# vim /etc/logrotate.conf 
            # see "man logrotate" for details
            # rotate log files weekly
            weekly                          --- 定义默认切割周期

            # keep 4 weeks worth of backlogs
            rotate 4                        --- 保存多久的文件,默认4周,

            # create new (empty) log files after rotating old ones
            create                          --- 创建出一个相同的源文件

            # use date as a suffix of the rotated file
            dateext                         --- 创建出角标信息(扩展名称信息)

            # uncomment this if you want your log files compressed
            #compress                       --- 是否压缩处理切割文件

            # RPM packages drop log rotation information into this directory
            include /etc/logrotate.d        --- 加载包含/etc/logrotate.d/目录中的配置文件

            # no packages own wtmp and btmp -- we'll rotate them here
            /var/log/wtmp {                 --- 单独对某个文件进行切割配置
                monthly
                create 0664 root utmp
                    minsize 1M
                rotate 1
            }

            /var/log/btmp {
                missingok
                monthly
                create 0600 root utmp
                rotate 1
            }

            # system-specific logs may be also be configured here.

    /etc/nginx                              
    /etc/nginx/conf.d
    /etc/nginx/conf.d/default.conf
        --- 主配置文件
    /etc/nginx/fastcgi_params
    /etc/nginx/koi-utf
    /etc/nginx/koi-win
    /etc/nginx/mime.types
        --- 媒体资源配置文件
        
PS:
        前端开发中:
        html    页面代码
        css     定义页面的样式
        js      定义页面的特效,功能

    总结: 重要目录
    01../etc/nginx  配置文件
    02../var/log/nginx  日志文件
    03../usr/bin/nginx  命令文件
    04../usr/share/nginx/html   站点目录
        图片信息    附件信息    音频  视频
        
5..nginx配置文件详细配置说明
/etc/nginx/nginx.conf       --- 主配置文件

第一部分: 配置文件主区域配置文件
vim /etc/nginx/nginx.conf ---> user nginx ---> user www
另外,一定将index.html的站点目录文件,的属主改成指定的用户!,即chown -R www.www /html/
user  nginx;                    --- 定义work进程管理的用户
        补充:nginx进程
        master  process     主进程 -- 管理服务是否能够正常允许
        worker  process     工作进程 -- 处理用户访问请求
        
worker_processes  1;            --- 定义有几个worker进程 好处: 越多,处理并发访问的处理能力越强 最好等于硬件服务器的cpu核数/2倍
error_log  /var/log/nginx/error.log warn;   --- 定义错误日志路径信息
pid        /var/run/nginx.pid;              --- 定义pid文件路径信息

第二部分: 配置文件事件区域
events {
    worker_connections  1024;               --- 一个worker进程同时可以接收1024个访问请求
}

第三部分: 配置HTTP区域
http {
    include       /etc/nginx/mime.types;    --- 加载一个配置文件
    default_type  application/octet-stream; --- 指定默认识别文件的类型
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                    --- 定义日志的格式
    access_log  /var/log/nginx/access.log  main;
                    --- 指定日志路径信息 - 引用日志格式
    sendfile        on; ??
    #tcp_nopush     on; ??
    keepalive_timeout  65;  --- 定义超时时间
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

    
    

    /etc/nginx/conf.d/default.conf  --- 扩展配置文件(虚拟主机配置文件)
    [root@web01 conf.d]# cat default.conf
    
(sed命令复习) --- sed -i.bak '/#/d;/^$/d' default.conf  ###删除默认行和空行
    
第四个部分: server区域信息(配置一个网站     www/bbs/blog --- 虚拟主机)
server {
    listen       80;                            --- 指定监听的端口
    server_name  localhost;                     --- 指定网站域名
    location / {                                ???
        root   /usr/share/nginx/html;           --- 定义站点目录的位置 类似于对外开放的共享文件
        index  index.html index.htm;            --- 定义首页文件
    }
    error_page   500 502 503 504  /50x.html;    --- 优雅显示页面信息,找不到文件,自动替换为index.html文件
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}


6..具体构建www blog bbs网站
php服务部署流程:
第一步: 更新yum源,卸载系统自带的php软件
    yum remove php-mysql php php-fpm php-common
    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
直接yum安装会安装最新版本

第二步: 安装php软件
    yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded  php71w-gd php71w-mcrypt php71w-mbstring  php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache  php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

第三步: 编写配置文件
    vim /etc/php-fpm.d/www.conf
        user = www      nginx----www  而动态服务是由nginx交给php进行处理的,所以要用户统一
        group = www     

第四步: 启动php服务
    systemctl start php-fpm
    systemctl enable php-fpm


    vim /etc/nginx/conf.d/www.conf
        [root@web01 conf.d]# cat www.conf bbs.conf blog.conf 
        server {
            listen       80;
            server_name  www.test.com;
            location / {
                root   /html/www;
                index  index.html;
            }
        }
        server {
            listen       80;
            server_name  bbs.test.com;
            location / {
                root   /html/bbs;
                index  index.html;
            }
        }
        server {
            listen       80;
            server_name  blog.test.com;
            location / {
                root   /html/blog;
                index  index.html;
            }
        }
7..其他一些设置
    (1) 指定站点目录下某个目录指定ip不能访问
        [root@web01 conf.d]# vim www.conf 
        server {
            listen  80;
            server_name www.oldboy.com;
            location /  {
              root  /html/www;
              index index.html;
            }
            location /AV {
                deny    10.0.0.0/24;
                allow   172.16.1.0/24;
                root    /html/www;
                index   index.html;
            }
        }

        
也可以将:第一个location删除,将其内容变成全局配置,
PS: location外面的配置是全局配置
    
    (2) 根据用户访问进行认证: ngx_http_auth_basic_module
                    Example Configuration

        location / {
            auth_basic           "closed site";     --- 开启认证功能
            auth_basic_user_file conf/htpasswd;     --- 加载密码文件
        }
        
        第一步: 编写虚拟主机配置文件
                server {
                listen  80;
                server_name www.oldboy.com;
                location /  {
                  root  /html/www;
                  index index.html;
                  auth_basic           "closed site";
                  auth_basic_user_file password/htpasswd;
                  
        第二步: 创建密码文件(文件中密码信息必须是密文的)
                使用htpasswd  命令创建
                参数说明:
                [root@web01 conf.d]# htpasswd -help
                 -c  Create a new file. *****
                        创建一个密码文件
                 -n  Don't update file; display results on stdout.
                        不会更新密码文件;显示文件内容信息
                 -b  Use the password from the command line rather than prompting for it.******
                        免交互方式输入用户密码信息
                 -i  Read password from stdin without verification (for script usage).
                        读取密码信息采用标准输入方式,并不做检查
                 -m  Force MD5 encryption of the password (default).
                        md5的加密算法
                 -B  Force bcrypt encryption of the password (very secure).
                        使用bcrypt进行加密
                 -C  Set the computing time used for the bcrypt algorithm
                     (higher is more secure but slower, default: 5, valid: 4 to 31).
                        
                 -d  Force CRYPT encryption of the password (8 chars max, insecure).
                        密码加密方式
                 -s  Force SHA encryption of the password (insecure).
                        密码加密方式
                 -p  Do not encrypt the password (plaintext, insecure).
                        不进行加密
                 -D  Delete the specified user.
                        删除指定用户
                 -v  Verify password for the specified user.


                    修改密码文件权限???(不修改也可以,但是修改后更安全)
                    但是!修改成600后出现500错误
                    500:
                    1) 内部程序代码编写有问题
                    2) 文件权限有问题
                    
                    所以应该将属主修改成www(worker用户)

8..nginx企业实际应用
    (1) 构建目录检索式网站
        模块: 
            nginx模块:ngx_http_autoindex_module
            Syntax:     autoindex on | off;
            Default: 
            autoindex off;
            Context:    http, server, location
        
        使用例子:
        location / {
            autoindex on;
        }
        ---- 详见day40
PS: 1..需要将首页文件进行删除(改名--默认会加载首页文件)
    2..mime.conf媒体资源类型文件作用
        文件中存在的扩展名文件,浏览器可以直接进行解析
        没有的.访问时会进行下载
        
    (2) 利用nginx服务搭配配置文件别名功能
        作用: 1) 便于网站访问测试
              2) 定位要访问的网站服务器(因为web服务器一般是一个集群---所有配置都一样,使用www.xxx访问,不知道是访问哪台,所以需要设置别名)
                 运维人员上线代码需要使用!!逐一进行上线
                 
    (3) 利用nginx状态模块功能对网站进行监控
        ngx_http_stub_status_module
        
        Syntax:     stub_status;
        Default:    —
        Context:    server, location
        例子:
        location = /basic_status {
            stub_status;
        }
        
    (4) nginx日志功能配置
        /var/log/nginx/
        1..访问日志 access.log  
        ngx_http_log_module模块
        
        Syntax:     access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
        access_log off;
        Default:    
        access_log logs/access.log combined;
        Context:    http, server, location, if in location, limit_except        ----可以放在相应的网站配置下用以按网站切割日志
        
    (5) nginx服务location作用说明
        ngx_http_core_module模块
        
        作用: 进行匹配(uri)
        错误页面优雅显示
        
        location /oldboy {
            root /html/www;
            error_page 404 /oldboy.jpg;
        }
    
    (6) 利用nginx实现页面跳转功能
            利用rewrite模块
            ngx_http_rewrite_module
            
            Syntax:     rewrite regex replacement [flag];       ---rewrite 匹配的正则信息 替换成什么信息
            Default:    —
            Context:    server, location, if
            
部署一个blog网站
需要服务器:
web01 db01 nfs01 
web服务器安装软件:nginx php相关软件(见41天)
    上传一个wordpress网站代码文件 ---> /html/blog/
    web服务器配置:
        vim /etc/nginx/conf.d/blog.conf
            [root@web01 conf.d]# vim blog.conf 
            server {
                listen  80;
                server_name blog.oldboy.com;
                location /  {
                  root  /html/blog;
                  index index.php;              ##首页文件改成index.php
                }
            ================================以上为原先的,以下为添加跳转的================================================
                location ~ \.php$ {
                    root /html/blog;
                    fastcgi_index index.php;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                                                    url             uri                 用以确认身份
                    fastcgi_pass 127.0.0.1:9000;
                    include fastcgi_params;                                             定义上行的变量-----fastcgi_params是一个包含变量的文件
                
                }
            }
        编写php配置文件,将用户和用户组修改成对应的用户
        vim /etc/php-fpm.d/www.conf
            user = www      nginx----www  而动态服务是由nginx交给php进行处理的,所以要用户统一
            group = www     
            
数据库服务器安装软件: mariadb mariadb-server
    (yum安装的数据库不需要初始化?)
    启动数据库服务后: 设置数据库密码
    systemctl start mariadb.service
    systemctl enable mariadb.service
    启动后才能设置密码:
        mysqladmin -u root password 'oldboy123' --- 设置密码(不是重置密码) 但是明文
        登录数据库: 
        (1) mysql -u root -poldboy123           ----不安全
        (2) mysql -u root -p                    ----推荐
        
    数据库配置
        1..创建数据库
        create database wordpress;
        show databases;
        2..创建数据库管理用户
        grant all on wordpress.* to 'wordpress'@'172.16.1.%' identified by 'oldboy123'; !!!!!!!远程数据库使用这个!
        
        grant all on wordpress.* to 'wordpress'@'localhost'; 授予用户权限,授予指定数据库的权限,授予主机权限"@允许存储的主机"
        grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123'; 创建密码
上一篇下一篇

猜你喜欢

热点阅读