NO.A.0003 —— Para criar um combate real de arquitetura LNMP WEB de nível empresarial —— YUM

Conteúdo do curso:
Criar uma arquitetura LNMP WEB de nível empresarial, combate real
AWK, Sed, análise Grep nginx log
SHELL em um script para cortar a data Nginx;

1. Construir um combate de arquitetura LNMP WEB de nível corporativo:
quando o método de compilação make source code constrói a plataforma web nginx, o servidor web nginx padrão publica apenas um conjunto de onde voltar, e o código-fonte é uma página de teste, conforme mostrado na figura
Insira a descrição da imagem aqui

2. Construir o combate real da arquitetura da web LNMP de nível empresarial,
AWK sed grep analisa o
shell de log nginx e se transforma em tutorial de corte de log nginx;
1. Construir o combate real da arquitetura da web LNMP de nível empresarial:
Como equipe de operação e manutenção, as responsabilidades do trabalho são: garantir o servidor empresarial, liberação de código, site Atualização, banco de dados, manutenção do sistema de negócios, etc .;
2. Na empresa, os desenvolvedores desenvolveram um conjunto de código do site, que é escrito com base na linguagem PHP e exige que o pessoal de operação e manutenção use o código do site PHP para obter acesso a usuários externos como operação e manutenção Como operar:
avalie o número de usuários (usuários simultâneos) visitando o site PHP no período posterior,
compre servidores online (Tencent Cloud Host, 8C16G8M) CPU de núcleo 8C, memória 16G, largura de banda de 8M
Sistema operacional Tencent Cloud Host (sistema operacional Linux Centos7.x) )
Registre o nome de domínio da extranet e arquivo para o registro ao mesmo tempo.Cvc.net acessará posteriormente o nome de domínio para
construir a estrutura LAMP e LNMMP WEB para publicação do site PHP;

//检查硬件环境:
[root@cdeba90ec46e /]# cat /etc/redhat-release
CentOS Linux release 7.6.2003 (Core) 
[root@cdeba90ec46e /]# uname -a
Linux cdeba90ec46e 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@cdeba90ec46e /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay         100G  4.5G   96G   5% /
tmpfs           910M     0  910M   0% /dev
tmpfs           910M     0  910M   0% /sys/fs/cgroup
/dev/sda5       100G  4.5G   96G   5% /etc/hosts
shm              64M     0   64M   0% /dev/shm
tmpfs            64M  1.1M   63M   2% /run
tmpfs            64M     0   64M   0% /run/lock
tmpfs            64M     0   64M   0% /var/log/journal
tmpfs           910M     0  910M   0% /tmp

3. Com base no host de nuvem Centos7 Linux, construa um conjunto de arquitetura LNMP WEB a partir de 0, publique e processe o código do site PHP
LNMP:
L: sistema operacional Linux (centos7) desenvolvido com base no kernel do Linux
N: Nginx de código aberto, servidor WEB gratuito de alto desempenho Software;
M: MySQL, banco de dados relacional Mariadb
P: Perl, Python, ambiente PHP e compilador PHP

O princípio de funcionamento da arquitetura LNMP: na arquitetura
LNMP WEB, o Nginx é um servidor WEB de alto desempenho, que por si só não pode lidar com PHP. Quando recebemos a solicitação HTTP Regtest enviada pelo navegador do cliente, o servidor Nginx responde e processa solicitações da web e recursos estáticos. O servidor nginx pode processar e responder diretamente às solicitações de arquivos estáticos, como CSS, imagens, vídeos e TXT.
A solicitação de página dinâmica de PHP nginx não pode ser processada diretamente, o servidor nginx transmitirá o script da web PHP para PHP-FPM (programa de gerenciamento de processo) por meio do protocolo de transferência de interface (protocolo de gateway)
PPH-FPM chama o analisador de PHP (PHP-CGI) Análise do analisador de PHP Informações do script PHP. Por fim, o interpretador PHP coloca o script analisado de volta em php-fpm, e php-fpm transmite as informações do script para a mãe na forma de fase-CGI, se mostrado;
Insira a descrição da imagem aqui
Observação, a base da implantação do LNMP no ambiente docker arredores:

[root@localhost ~]# docker run -tid --net=none --name=centos7-nginx.yum.82qiye --privileged=true centos7-ssh:zabbix-agent /sbin/init
27ba4cba71d5991e7cf814fb268c421474cd4018f0a62c560655d2bbb69c0634
[root@localhost ~]#  pipework  br0 centos7-nginx.yum.82qiye 192.168.1.82/[email protected]
[root@localhost ~]# docker exec -it centos7-nginx.yum.82qiye /bin/bash

3. Existem duas maneiras principais de construir a plataforma LNMP WEB a partir de 0;
método binário YUM Método de
compilação do código-fonte MAKE
Aqui construímos LNMP com base no método binário YUM (a forma de fonte de rede, o servidor pode ser conectado à rede externa e a fonte LAN YUM é configurada) Operação
1. Implantar o nginx:

//1、添加Epel-release扩展源
[root@localhost ~]# yum -y install epel-release 
[root@localhost ~]# ll /etc/yum.repos.d/|grep -aw epel
-rw-r--r-- 1 root root  951 Oct  3  2017 epel.repo
-rw-r--r-- 1 root root 1050 Oct  3  2017 epel-testing.repo
//2、安装nginx软件包:
[root@localhost ~]# yum -y install nginx    //显示Complete!表示安装成功;
//3、检测nginx软件包是否安装成功
[root@27ba4cba71d5 ~]# rpm -qa |grep nginx 
nginx-filesystem-1.14.1-9.module_el8.0.0+184+e34fea82.noarch
nginx-mod-http-perl-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-mod-mail-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-all-modules-1.14.1-9.module_el8.0.0+184+e34fea82.noarch
nginx-mod-http-xslt-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-mod-stream-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
nginx-mod-http-image-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
//4、查看端口和进程
[root@27ba4cba71d5 ~]# systemctl start nginx.service
[root@27ba4cba71d5 ~]# ps -ef |grep nginx 
[root@27ba4cba71d5 ~]# netstat -tunlp |grep -aw 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      258/nginx: master p 
tcp6       0      0 :::80                   :::*                    LISTEN      258/nginx: master p 

2. Implante o Mariadb:

//1、安装Mariadb:
[root@27ba4cba71d5 ~]# yum -y install mariadb-server mariadb mariadb-devel 
//2、检测Mariadb安装是否成功:
rpm -qa |grep mariadb
//3、查看Mariadb进程和端口号;
[root@27ba4cba71d5 ~]# systemctl start mariadb.service
[root@27ba4cba71d5 ~]# ps -ef |grep mysql
mysql        452       1  0 08:04 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr
root         518     121  0 08:04 ?        00:00:00 grep --color=auto mysql
[root@27ba4cba71d5 ~]# netstat -tunlp |grep -aw 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      452/mysqld

3. Implante o PHP:

//1、安装php
[root@27ba4cba71d5 ~]# yum -y install php php-devel php-fpm php-mysql
//2、检测PHP是否安装成功:
[root@27ba4cba71d5 ~]# rpm -qa |grep php
//3、查看PHP进程及端口号
[root@27ba4cba71d5 ~]# systemctl start php-fpm.service
[root@27ba4cba71d5 ~]# ps -ef |grep php
[root@27ba4cba71d5 ~]# netstat -tunlp|grep -aw 9000   //此时没有查到9000端口

4. De acordo com as instruções de implantação do LNMP acima, a implantação da plataforma LNMP está concluída, verifique seu progresso

[root@27ba4cba71d5 ~]# ps -ef |grep -wE "nginx|mysqld|php"
root         258       1  0 07:52 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx        259     258  0 07:52 ?        00:00:00 nginx: worker process
nginx        260     258  0 07:52 ?        00:00:00 nginx: worker process
mysql        452       1  0 08:04 ?        00:00:03 /usr/libexec/mysqld --basedir=/usr
root         598       1  0 08:14 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
apache       599     598  0 08:14 ?        00:00:00 php-fpm: pool www
apache       600     598  0 08:14 ?        00:00:00 php-fpm: pool www
apache       601     598  0 08:14 ?        00:00:00 php-fpm: pool www
apache       602     598  0 08:14 ?        00:00:00 php-fpm: pool www
apache       603     598  0 08:14 ?        00:00:00 php-fpm: pool www
root         647     121  0 08:23 ?        00:00:00 grep --color=auto -wE nginx|mysqld|php

5. É necessário falar sobre a integração de configuração do nginx e php-fpm, de modo que quando o nginx detecta que o usuário solicita uma página da web dinâmica em PHP, o nginx envia a solicitação do usuário ao interpretador PHP-FPM back-end através do protocolo de gateway CGI e retira e configura o nginx.conf código mostrado abaixo:

//nginx配置:
[root@localhost nginx]# 
        location / {                                    //第二步
            root   html;
            index index.php index.html index.htm;       //加上nginx.php表示引导页。

        location ~ \.php$ {
            root           /usr/share/nginx/html;   //更改发布目录  //第一步
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  //添加$document_root;表示发布目录  //第三步
            include        fastcgi_params;
        }
//查看nginx.conf文件并去掉#号空行。
[root@localhost nginx]# grep -vE "#|^$" nginx.conf
worker_processes  1;                    
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;              //以上为全局配置
    server {                            //以下为server主机的配置
        listen       80;
        server_name  localhost;
        location / {                    //location /是正常匹配,处于正则匹配后执行。
            root   html;
            index index.php index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location ~ \.php$ {                         //location ~是正则匹配,是优先匹配,   
            root           /usr/share/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;   //指定发布目录的变量,绝对路径也可以:/usr/share/nginx/html;
            include        fastcgi_params;
        }
    }
}

Depois que a mudança for concluída:

[root@27ba4cba71d5 nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@27ba4cba71d5 nginx]# nginx -s reload

6, nginx, diretório de lançamento php-fpm; / usr / share / nginx / html, crie index.php neste diretório, o conteúdo do código é o seguinte.

[root@27ba4cba71d5 nginx]# vim /usr/share/nginx/html/index.php
<?php
phpinfo();
?>

Insira a descrição da imagem aqui

7. Publique o site através do LNMP:

//我们只需要把我们打开发包解压到发布目录就可以了:
[root@localhost ~]# ls
anaconda-ks.cfg  web.html.tar
[root@localhost ~]# tar -zxvf web.html.tar /usr/share/nginx/html

Insira a descrição da imagem aqui

3. AWK, Sed e Grep analisam registros Nginx;
1 Como uma equipe de operação e manutenção, o conteúdo do registro na empresa é usado principalmente para disparar erros e corrigir problemas. De acordo com as solicitações de erro do conteúdo do registro, o problema pode ser localizado na primeira vez e os problemas de disparo incorretos podem ser identificados. Resolva problemas rapidamente e reduza as perdas de negócios.
Na verdade, o conteúdo do log é usado para o pessoal de operação e manutenção, desenvolvedores e solução de problemas de DBA. Além disso, o conteúdo do log pode ser analisado, contado e avaliado, de modo a compreender o portal IP, PV, UV, acesso, alocação de recursos e uso. Esperar.

[root@localhost nginx]# cd /var/log/nginx/    //cd到nginx的日志目录
[root@localhost nginx]# ll
total 1764
-rw-rw-r-- 1 nginx root 1527988 Nov  3 22:13 access.log
-rw-r--r-- 1 root  root   34543 Oct 31 11:45 access.log-20201031.gz
-rw-rw-r-- 1 nginx root   47309 Nov  1 10:12 access.log-20201101.gz
-rw-rw-r-- 1 nginx root   87592 Nov  2 13:24 access.log-20201102.gz
-rw-rw-r-- 1 nginx root   46903 Nov  3 12:41 access.log-20201103.gz
-rw-rw-r-- 1 nginx root       0 Nov  2 13:25 error.log
-rw-r--r-- 1 root  root    1488 Oct 30 13:20 error.log-20201031.gz
-rw-rw-r-- 1 nginx root     299 Nov  1 18:11 error.log-20201102.gz
[root@localhost nginx]# more access.log     //每一条都是一个用户的访问请求;
192.168.1.101 - - [03/Nov/2020:12:41:22 +0800] "POST /zabbix.php?action=notifications.get&sid=a2c13a51c1e3ec42&output=ajax HTTP/1.1" 200 436 "http://192.168.1.59/zabbix.php?action=da
shboard.view&ddreset=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"

1. Com base na programação do SHELL, três espadachins Awk, Sed, Grep analisam os logs online do Nginx, analisam e contam o número total de solicitações (visitas) do Nginx ao longo do dia. As instruções e métodos de operação são os seguintes:

//1、统计当天,总的用户访问量:
[root@localhost nginx]# awk '{print $0}' access.log |wc -l   //统计我们当天用户访问量;  单引号表示命令段,大括号把命令括起来,表示一个动作,print打印动作,$0表示文本所有内容,wc 统计,-l打印行号
3884
[root@localhost nginx]# sed = access.log|tail -2   // sed = 是显示行号的,tail -2表示显示最后两行
3884
192.168.1.101 - - [03/Nov/2020:22:22:45 +0800] "POST /zabbix.php?action=notifications.get&sid=a2c13a51c1e3ec42&output=ajax HTTP/1.1" 200 436 "http://192.168.1.59/hosts.php?ddreset=1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"
[root@localhost nginx]# sed = access.log|tail -2 |head -1      head -1 表示第一行
3884
[root@localhost nginx]# sed = access.log|tail -2 |head -1
3884
[root@localhost nginx]# wc -l access.log|cut -d "" -f1      //-f1便是fire字段
3884 access.log
[root@localhost nginx]# awk 'END{print NR}' access.log
3884

2. Com base na programação SHELL, três espadachins Awk, Sed, Grep analisam os logs online do Nginx, analisam e contam o número total de solicitações (visitas) do Nginx das 09:00 às 11:00 ao longo do dia. As instruções e métodos de operação são os seguintes:

[root@localhost nginx]# awk '/2020:09:00/' access.log|more
[root@localhost nginx]# sed -n '/2020:09:00/'p  access.log|more
[root@localhost nginx]# grep -aiw  '2020:12:41'  access.log|more
[root@localhost nginx]# sed -n '/2020:12:41/,/2020:12:00/'p  access.log|head -5   //范围 head表示前5条,tail表示末尾5条
[root@localhost nginx]# awk '/2020:12:41/,/2020:12:00/'  access.log|wc -l
3927

3. Com base na programação do SHELL, três espadachins Awk, Sed, Grep, analise o log do Nginx online, analise e conte o número total de solicitações (volume de visitas) do Nginx das 09:00 às 11:00 ao longo do dia, imprima o endereço IP e ao mesmo tempo Imprima os 20 principais endereços IP e adicione IPs com mais de 500 visitas à lista negra do Linux; as instruções e métodos de operação são os seguintes:

//都属于正则表达式:
//将09:00~11:00的IP地址打印出来;
[root@localhost nginx]#  sed -n '/2020:12:41/,/2020:12:00/'p  access.log|awk '{print$1}'|more
192.168.1.101
192.168.1.59
[root@localhost nginx]# sed -n '/2020:12:41/,/2020:12:00/'p  access.log|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|more
192.168.1.101
192.168.1.59
//将访问次数超过500次的IP加入linux的黑名单:
root@localhost nginx]# sed -n '/2020:12:41/,/2020:12:00/'p  access.log|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -n|uniq -c|sort -nr|head -20    //打印访问量排前20名的IP地址;
   3964 192.168.1.101
   3961 192.168.1.59
注:sort -n正向排序;uniq -c去重并统计,sort -nr 逆向排序,head -20 打印20名;
//打印访问次数超过500次的用户地址;
[root@localhost nginx]# sed -n '/2020:12:41/,/2020:12:00/'p  access.log|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -nr|uniq -c|sort -nr|awk '{if(($1>500)) print$2}'
192.168.1.101
192.168.1.59
//访问量超过500次的加入IPtables防火墙黑名单:(IPtable)
[root@localhost nginx]# for ip in $(sed -n '/2020:12:41/,/2020:12:00/'p  access.log|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|sort -nr|uniq -c|sort -nr|awk '{if(($1>500)) print$2}');do iptable -t filter -A INPUT -s $ip/32 -m tcp -p tcp --dport 80 -j DROP ;done   //$ip/32表示IP地址,IPtable规则

Acho que você gosta

Origin blog.51cto.com/15005403/2552259
Recomendado
Clasificación