美文网首页运维相关自我总结
备份文档——LNMP架构搭建-构建一个blog网站

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

作者: 如歌丨如歌 | 来源:发表于2020-02-12 20:24 被阅读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'; 创建密码
    

    相关文章

      网友评论

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

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