[工具] Shell 统计 LNMP 本月与上月的网站点击量和 IP 访问数

介绍

基本信息

作者:朱明宇
名称:统计 LNMP 本月与上月的网站点击量和 IP 访问数
作用:统计 LNMP 本月与上月的网站点击量和 IP 访问数

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. user=”root” #登录 Web 服务器的用户,请确保这个用户有创建缓存备份目录的权限
2. ip=”8.8.8.8″ #Web 服务器的 IP 地址

注意

此脚本执行前必须要先保证执行脚本的主机能无秘钥远程这台 Web 服务器

脚本

#!/bin/bash

####################### Separator ########################

user="root"
ip="8.8.8.8"

####################### Separator ########################

monthcache1=$(date +%m)
case $monthcache1 in
01)
month=Jan
lmonth=Dec;;
02)
month=Feb
lmonth=Jan;;
03)
month=Mar
lmonth=Feb;;
04)
month=Apr
lmonth=Mar;;
05)
month=May
lmonth=Apr;;
06)
month=June
lmonth=May;;
07)
month=July
lmonth=June;;
08)
month=Aug
lmonth=July;;
09)
month=Sept
lmonth=Aug;;
10)
month=Oct
lmonth=Sept;;
11)
month=Nov
lmonth=Oct;;
12)
month=Dec
lmonth=Nov
esac

cmonth=`ssh $user@$ip "grep $month /usr/local/nginx/logs/access.log | wc -l"`
clmonth=`ssh $user@$ip "grep $lmonth  /usr/local/nginx/logs/access.log | wc -l"`
cipmonth=`ssh $user@$ip "grep $month /usr/local/nginx/logs/access.log" | awk '{a[$1]++}END{for(i in a){print i}}' | wc -l `
ciplmonth=`ssh $user@$ip "grep $lmonth /usr/local/nginx/logs/access.log" | awk '{a[$1]++}END{for(i in a){print i}}' | wc -l`

echo "The count of month's hits:$cmonth 次"
echo "The count of month's IP address:$cipmonth 个"
echo "The count of last month's hits:$clmonth 次"
echo "The count of last month's IP address:$ciplmonth 个"

[工具] Shell 统计 LNMP 今天与昨天的网站点击量和 IP 访问数

介绍

基本信息

作者:朱明宇
名称:统计 LNMP 今天与昨天的网站点击量和 IP 访问数
作用:统计 LNMP 今天与昨天的网站点击量和 IP 访问数

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. user=”root” #登录 Web 服务器的用户,请确保这个用户有创建缓存备份目录的权限
2. ip=”8.8.8.8″ #Web 服务器的 IP

注意

此脚本执行前必须要先保证执行脚本的主机能无秘钥远程这台 Web 服务器

脚本

#!/bin/bash

####################### Separator ########################

user="root"
ip="8.8.8.8"

####################### Separator ########################

tday=`date +%d`

sys=`uname -a | awk '{print $1}'`

if [ $sys == 'Linux' ];then
        yday=`date +%d -d "-1 day"`
else
        yday=`date -v-1d +%d`
fi

cday=`ssh $user@$ip "grep $tday/$month  /usr/local/nginx/logs/access.log | wc -l"`
cyday=`ssh $user@$ip "grep $yday/$month  /usr/local/nginx/logs/access.log | wc -l"`
cipday=`ssh $user@$ip "grep $tday/$month  /usr/local/nginx/logs/access.log" |awk '{a[$1]++}END{for(i in a){print i}}' | wc -l`
cipyday=`ssh $user@$ip "grep $yday/$month  /usr/local/nginx/logs/access.log" |awk '{a[$1]++}END{for(i in a){print i}}' | wc -l`

echo "The count of today's hits:$cday 次"
echo "The count of today's IP address:$cipday 个"
echo "The count of yesterday's hits:$cyday 次"
echo "The count of yesterday's IP address:$cipyday 个"

[模板] Nginx 配置模板 (nginx.conf) (LNMP+SSL 版)

worker_processes  1;

events {
    worker_connections  65536;
}

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        limit_req zone=one burst=5;
        server_name www.eternalcenter.com eternalcenter.com;

        rewrite ^/(.*)$ https://eternalcenter.com/$1 permanent;
      
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        }

    server {
        listen       443 ssl;
        server_name www.eternalcenter.com eternalcenter.com;

        if ($request_method !~ ^(GET|POST)$){
        return 444;
        }

        ssl_certificate      /root/ssl/eternalcenter.com.crt;
        ssl_certificate_key  /root/ssl/eternalcenter.com.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi.conf;
        }

        location / {
        root html;
        index index.php index.html index.htm;
        }

        location ~ ^/\.user\.ini {
        deny all;
        }
    
        location ~* \.(jpd|jpeg|gif|png|css|js|ico|xml)$ {
        expires 30d;
        }

        error_page  404              /404.html;

        }

        gzip on;
	gzip_min_length 1000;
	gzip_comp_level 4;
	gzip_types text/plain test/css application/json application/x-javascript text/xml application/xml
	application/xml+rss text/javascripts;

	client_header_buffer_size 1k;
	large_client_header_buffers 4 4k;

	open_file_cache max=2000 inactive=20s;
	open_file_cache_valid  60s;
	open_file_cache_min_uses 5;
	open_file_cache_errors off;

}

[步骤] Nginx 的升级

软件准备:

在 Nginx 官网上下载搭建集群所需软件 Nginx:

http://nginx.org/en/download.html

正文:

步骤一:确认升级目标

1) 在不停掉老进程的情况下,启动新进程
2) 老进程负责处理仍然没有处理完的请求,但不再接受处理请求
3) 新进程接受新请求
4) 老进程处理完所有请求,关闭所有连接后,停止

(注意:建议升级的版本不要太大,否则服务可能会无法启动)

步骤二:安装一个旧版本的 Nginx

# yum -y install pcre-devel zlib-devel
# useradd -M -s /sbin/nologin nginx
# tar -zxvf nginx-1.6.0.tar.gz -C /usr/src/
# cd /usr/src/nginx-1.6.0/
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
# /usr/local/nginx/sbin/nginx


补充:
1) 这里以编译安装 nginx-1.6 为例
2) 如果已经安装了旧版本的 Nginx 这一步可以忽略

步骤三:安装一个较新版本的 Nginx

# tar -zxvf nginx-1.8.1.tar.gz -C /usr/src/
# cd /usr/src/nginx-1.8.1/
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make

(补充:这里以编译 nginx-1.8 为例)

(注意:这里只编译不安装)

步骤四:升级 Nginx

4.1 显示升级之前的版本

# /usr/local/nginx/sbin/nginx -v
# nginx version: nginx/1.6.0

4.2 备份旧版本的 Nginx 执行程序

# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

4.3 替换旧的 Nginx 执行程序

# cp /usr/src/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/

4.4 使 Nginx 的旧版本停止进程

# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

4.5 显示 Nginx 日志目录会生成一个 nginx.pid.oldbin 文件,存放旧版本 nginx 的 pid 号

# ls /usr/local/nginx/logs/
access.log  error.log  nginx.pid  nginx.pid.oldbin

4.6 显示 Nginx 升级后的版本信息

# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.1

4.7 运行 Nginx ,之后显示它的运行状态

/usr/local/nginx/sbin/nginx
# netstat -aupt | grep nginx
getnameinfo failed
tcp        0      0 *:http                      *:*                         LISTEN      6963/nginx 

[命令] Nginx 的使用 (管理命令)

注意:

在使用 Nginx 命令之前要先安装 Nginx

正文:

内容一:启动 Nginx 服务

# /usr/local/nginx/sbin/nginx

内容二:停止 Nginx 服务

# /usr/local/nginx/sbin/nginx -s stop

内容三:重启 Nginx 服务

# /usr/local/nginx/sbin/ngixn -s reload

内容四:显示被安装 Nginx 的版本和模块

# /usr/local/nginx/sbin/nginx -V

内容五:创建 Nginx 快捷方式

# ln -s /usr/local/nginx/sbin/nginx /sbin/nginx