linux下Nginx+tomcat+mysql整合的安装与配置维护
安装Tomcat和JDK
上传apache-tomcat-6.0.18.tar.gz和jdk-6u12-linux-i586.bin至/usr/local
执行如下命令安装tomcat #cd /usr/local #tar zxvf apache-tomcat-6.0.18.tar.gz
解压完成后将apache-tomcat-6.0.18重命名为tomcat
执行如下命令安装JDK:
设置权限chmod 777 jdk-1_6_0_14-linux-i586-rpm.bin
#./jdk-6u12-linux-i586.bin
配置环境变量
编辑/etc下的profile文件加上如下内容
JAVA_HOME="/usr/local/jdk1.6.0_12"
CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
PATH=".:$PATH:$JAVA_HOME/bin "
CATALINA_HOME="/usr/local/tomcat"
export JAVA_HOME CATALINA_HOME
启动tomcat并输入http://localhost:8080如果看到猫的页面即tomcat和jdk安装成功
新建文件目录/home/www为网站存放目录设置server.xml文件在Host name="localhost"处将appBase=的指向路径改为/home/www/web
工程网站路径为:/home/www/web
访问控制
vi /etc/sysconfig/iptables 添加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8079 -j ACCEPT
安装Nginx
上传nginx-0.7.63.tar.gz至/usr/local
执行如下命令解压nginx
#cd /usr/local
#tar zxvf nginx-0.7.63.tar.gz
编译安装nginx
#cd nginx-0.7.63
#./configure --with-http_stub_status_module --with-http_ssl_module #启动server状态页和https模块
执行完后会提示一个错误说缺少PCRE library 这个是HTTP Rewrite 模块也即是url静态化的包可上传pcre-7.9.tar.gz输入如下命令安装
tar zxvf pcre-7.9.tar.gz
#cd pcre-7.9
#./configure
#make
#make install
安装pcre成功后继续安装nginx
#cd nginx-0.7.63
#./configure
#make
#make install
安装pcre需要安装更新gcc,命令yum install gcc
nginx安装成功后的安装目录为/usr/local/nginx
安装时会出现报错
错误提示./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library. You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.
解决办法yum -y install pcre-devel openssl openssl-devel
在conf文件夹中新建proxy.conf用于配置一些代理参数内容如下
#!nginx (-)
# proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #获取真实ip
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
编辑安装目录下conf文件夹中的nginx.conf输入如下内容
user www www;
worker_processes 8;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include mime.types;
default_type application/octet-stream;
charset utf-8;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream tomcat_server {
server 127.0.0.1:8080;
}
server
{
listen 80;
server_name www.yourdomain.com;
index index.html index.htm index.jsp default.jsp index.do default.do;
root /data0/htdocs/www;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
location ~ \.(jsp|jspx|do)?$ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://tomcat_server;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
access_log off;
}
}
修改/usr/local/nginx/conf/nginx.conf配置文件后请执行以下命令检查配置文件是否正确
#/usr/local/nginx/sbin/nginx -t
如果屏幕显示以下两行信息说明配置文件正确
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
如果提示unknown host则可在服务器上执行ping www.baidu.com如果也是同样提示unknown host则有两种可能
a、服务器没有设置DNS服务器地址查看/etc/resolv.conf下是否设置若无则加上
b、防火墙拦截
Nginx与tomcat维护命令
Nginx
启动nginx的命令
#/usr/local/nginx/sbin/nginx
这时输入以下命令查看Nginx主进程号
停止nginx的命令
#/usr/local/nginx/sbin/nginx -s stop
在不停止Nginx服务的情况下平滑变更Nginx配置
a、修改/usr/local/nginx/conf/nginx.conf配置文件后请执行以下命令检查配置文件是否正确
/usr/local/nginx/sbin/nginx –t
如果屏幕显示以下两行信息说明配置文件正确
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
b、这时输入以下命令查看Nginx主进程号
ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ‘ ‘ ‘{print $2}‘
屏幕显示的即为Nginx主进程号例如
6302
这时执行以下命令即可使修改过的Nginx配置文件生效
kill -HUP 6302
或者无需这么麻烦找到Nginx的Pid文件
kill -HUP `cat /usr/local/nginx/nginx.pid`
nginx启动好后启动tomcat此时输入http://主机ip地址即可看到“My web!”
三、其他
stub_status
语法: stub_status on
默认值: None
作用域: location
创建一个 location 区域启用 stub_status
"stub status" 模块返回的状态信息跟 mathopd‘s 的状态信息很相似. 返回的状态信息如下
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
active connections -- 对后端发起的活动连接数
server accepts handled requests -- nginx 总共处理了 16630948 个连接, 成功创建 16630948 次握手 (证明中间没有失败的), 总共处理了 31070465 个请求 (平均每次握手处理了 1.8个数据请求)
reading -- nginx 读取到客户端的Header信息数
writing -- nginx 返回给客户端的Header信息数
waiting -- 开启 keep-alive 的情况下这个值等于 active - (reading + writing)意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接
Tomcat维护命令
Tomcat假死自动定时重起脚本
脚本代码
#!/bin/sh
export JAVA_HOME=/usr/local/jdk/
pid=`ps auxww|grep tomcat|grep -v grep|awk ‘{print $2}‘`
echo $pid
if [ -n "$pid" ];
then
{
echo "==========tomcat is start============"
‘/usr/java/tomcat/bin/shutdown.sh‘
sleep 5
‘/usr/java/tomcat/bin/shutdown.sh‘
sleep 15
pid=`ps auxww|grep tomcat|grep -v grep|awk ‘{print $2}‘`
if [ -n "$pid" ];
then
{
echo "======to kill the tomcat pid $pid========"
kill $pid
sleep 3
}
fi
echo "==========start tomcat============"
‘/usr/java/tomcat/bin/startup.sh‘
}
else
{
echo "==========tomcat is stop=====start======="
‘/usr/java/tomcat/bin/startup.sh‘
}
fi
将tomcat路径指向正确利用crontab进行轮循调用
Mysql安装
安装相关库文件
yum install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel*
安装wget/ntsysv/patch/make
yum install wget
yum install ntsysv
yum install patch
yum install make
编译安装 MySQL
tar zxvf mysql-5.1.57.tar.gz && cd mysql-5.1.57
./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile
make && make install && cd ..
创建mysql用户组创建数据库、日志等存储目录并赋予权限
mkdir -p /data/mysqldata
mkdir -p /data/mysqldata/database
mkdir -p /data/mysqldata/log
mkdir -p /data/mysqldata/pid
groupadd mysql
useradd -g mysql -d /data/mysqldata/database -s /sbin/nologin mysql
chgrp -R mysql /usr/local/webserver/mysql/.
chown -R root:mysql /usr/local/webserver/mysql/*
chown -R mysql:mysql /data/mysqldata/*
修改/etc/my.cnf文件参数参数适用于大于2G内存服务器
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
datadir = /data/mysqldata/database
log-error = /data/mysqldata/log/mysql_error.log
pid-file = /data/mysqldata/pid/mysql.pid
skip-external-locking
skip-name-resolve
back_log = 500
key_buffer_size = 256M
max_allowed_packet = 32M
thread_stack = 192K
table_cache = 256
sort_buffer_size = 4M
read_buffer_size = 4M
join_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 128
thread_cache_size = 10
query_cache_size = 32M
tmp_table_size = 128M
max_connections = 5000
wait_timeout = 60
max_connect_errors = 6000
expire_logs_days = 30
server-id = 1
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
初始化MySQL服务 /usr/local/webserver/mysql/bin/mysql_install_db --basedir=/usr/local/webserver/mysql --datadir=/data/mysqldata/database --user=mysql
启动MySQL服务/usr/local/webserver/mysql/bin/mysqld_safe --user=mysql & 启动服务/usr/local/webserver/mysql/bin/mysqladmin -u root -p shutdown 停止服务
修改root密码/usr/local/webserver/mysql/bin/mysqladmin -u root password ‘yourpassword’
Mysql维护
# cp support-files/mysql.server /etc/init.d/mysql
# chmod 755 /etc/init.d/mysql // 给 mysql 这个文件赋予“执行”权限
# chkconfig --add mysql // 加入到开机自动运行
# service mysql restart // 重新启动 MySQL
授权操作
改表法。可能是你的帐号不允许从远程登陆只能在localhost。这个时候只要在localhost的那台电脑登入mysql后更改 “mysql” 数据库里的 “user” 表里的 “host” 项从“localhost”改称“%”
代码
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = ‘%’ where user = ‘root’;
mysql>select host, user from user;
mysql>FLUSH PRIVILEGES
2. 授权法。例如你想myuser使用mypassword从任何主机连接到mysql服务器的话。
代码GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@‘%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器并使用mypassword作为密码GRANT ALL PRIVILEGES ON *.* TO ‘root’ @ ‘192.168.0.141’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
MySQL(root用户)密码重置
1、首先停止正在运行的MySQL进程
Linux下,运行 killall -TERM mysqld
2、以安全模式启动MySQL
Linux下运行 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
3、完成以后就可以不用密码进入MySQL了
Linux下运行 /usr/local/mysql/bin/mysql -u root -p 进入
4、更改密码
>use mysql
>update user set password=password("新密码") where user="root";
>flush privileges;
自动数据备份
mysql_databasename_backup.sh内容
#!/bin/bash
extdir=‘/home/mysql/backup/‘;
extbase=‘auto_databasename_‘`date ‘+%F‘`;echo $extbase;
extfile=‘auto_databasename_‘`date ‘+%F‘`‘.sql‘;echo $extfile;
echo "开始备份数据..."
cd $extdir
mysqldump --opt databasename -u username -ppassword | gzip > $extdir$extfile.gz
#删除以往多少天的数据
echo "删除本地7天前的备份数据..."
old_file=‘auto_databasename_‘`date ‘+%F‘ --date=‘7 days ago‘`‘.*‘
echo $old_file
rm –rf $extdir$old_file
利用crontab进行轮循使用
数据表的碎片整理
数据量大并且经常修改每周或都每月进行
手动命令optimize table table_name
自动整理碎片脚本
Shell脚本代码
#!/bin/sh
mysql_user=root
mysql_pass=root
time_log=/opt/time
databases=/opt/databases
/usr/local/mysql/bin/mysql -u$mysql_user -p$mysql_pass -e "show databases" | grep -v "Database" > /opt/databases
sed -i "s/information_schema//" $databases
sed -i "s/mysql//" $databases
sed -i "s/test//" $databases
databases1=$(cat /opt/databases)
for i in $databases1
do
echo "database $i starting"
tables=$(/usr/local/mysql/bin/mysql $i -u$mysql_user -p$mysql_pass -e "show tables" | grep -v "Tables" > /opt/$i)
tablelist=$(cat /opt/$i)
echo "optimize database $i starting" >> $time_log
echo "$i start at $(date +[%Y/%m/%d/%H:%M:%S])" >> $time_log
for list in $tablelist
do
echo $list
/usr/local/mysql/bin/mysql $i -u$mysql_user -p$mysql_pass -e "optimize table $list"
done
echo "$i end at $(date +[%Y/%m/%d/%H:%M:%S])" >> $time_log
echo >> $time_log
done
附MYSQL命令合集
还原一个数据库:mysql -h localhost -u root -p123456 www
备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql
其中WWW为数据库名
以下是在程序中进行测试
$command = “mysqldump –opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile”;
$command=”mysqldump -h localhost -u root -p123456 guestbook > guestbook2-29.sql”;
system($command);
echo “success”;
备份MySQL数据库的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
备份MySQL数据库为带删除表的格式能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
仅仅备份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
备份服务器上所有数据库
mysqldump –all-databases > allbackupfile.sql
还原MySQL数据库的命令
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
还原压缩的MySQL数据库
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
将数据库转移到新服务器
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename
几个常用用例
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p dataname >dataname.sql
这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u root -p dataname users> dataname_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台
如mysql -u root -p
mysql>use 数据库
然后使用source命令后面参数为脚本文件如这里用到的.sql
mysql>source d:\wcnc_db.sql
mysqldump支持下列选项
–add-locks
在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
–add-drop-table
在每个create语句之前增加一个drop table。
–allow-keywords
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
-c, –complete-insert
使用完整的insert语句(用列名字)。
-C, –compress
如果客户和服务器均支持压缩压缩两者间所有的信息。
–delayed
用INSERT DELAYED命令插入行。
-e, –extended-insert
使用全新多行INSERT语法。给出更紧缩并且更快的插入语句
-#, –debug[=option_string]
跟踪程序的使用(为了调试)。
–help
显示一条帮助消息并且退出。
–fields-terminated-by=…
–fields-enclosed-by=…
–fields-optionally-enclosed-by=…
–fields-escaped-by=…
–fields-terminated-by=…
这些选择与-T选择一起使用并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE语法。
-F, –flush-logs
在开始导出前洗掉在MySQL服务器中的日志文件。
-f, –force,
即使我们在一个表导出期间得到一个SQL错误继续。
-h, –host=..
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
-l, –lock-tables.
为开始导出锁定所有表。
-t, –no-create-info
不写入表创建信息(CREATE TABLE语句
-d, –no-data
不写入表的任何行信息。如果你只想得到一个表的结构的导出这是很有用的
–opt
同–quick –add-drop-table –add-locks –extended-insert –lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass, –password[=your_pass]
与服务器连接时使用的口令。如果你不指定“=your_pass”部分mysqldump需要来自终端的口令。
-P port_num, –port=port_num
与一台主机连接时使用的TCP/IP端口号。这用于连接到localhost以外的主机因为它使用 Unix套接字。
-q, –quick
不缓冲查询直接导出至stdout使用mysql_use_result()做它。
-S /path/to/socket, –socket=/path/to/socket
与localhost连接时它是缺省主机)使用的套接字文件。
-T, –tab=path-to-some-directory
对于每个给定的表创建一个table_name.sql文件它包含SQL CREATE 命令和一个table_name.txt文件它包含数据。注意这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据–fields-xxx和 –lines–xxx选项来定。
-u user_name, –user=user_name
与服务器连接时MySQL使用的用户名。缺省值是你的Unix登录名。
-O var=option, –set-variable var=option
设置一个变量的值。可能的变量被列在下面。
-v, –verbose
冗长模式。打印出程序所做的更多的信息。
-V, –version
打印版本信息并且退出。
-w, –where=’where-condition’
只导出被选择了的记录注意引号是强制的
“–where=user=’jimf’” “-wuserid>1″ “-wuserid<1″
最常见的mysqldump使用可能制作整个数据库的一个备份
mysqldump –opt database > backup-file.sql
但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的
mysqldump –opt database | mysql –host=remote-host -C database
由于mysqldump导出的是完整的SQL语句所以用mysql客户程序很容易就能把数据导入了
shell> mysqladmin create target_db_name
shell> mysql target_db_name < backup-file.sql
就是shell> mysql 库名 < 文件名
一、mysql权限管理
mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为
grant 权限 on 数据库对象 to 用户
一、grant 普通数据用户查询、插入、更新、删除 数据库中所有表数据的权利。
grant select on testdb.* to common_user@’%’
grant insert on testdb.* to common_user@’%’
grant update on testdb.* to common_user@’%’
grant delete on testdb.* to common_user@’%’
或者用一条 mysql 命令来替代
grant select, insert, update, delete on testdb.* to common_user@’%’
二、grant 数据库开发人员创建表、索引、视图、存储过程、函数。。。等权限。
grant 创建、修改、删除 mysql 数据表结构权限。
grant create on testdb.* to developer@’192.168.0.%’;
grant alter on testdb.* to developer@’192.168.0.%’;
grant drop on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 外键权限。
grant references on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 临时表权限。
grant create temporary tables on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 索引权限。
grant index on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 视图、查看视图源代码 权限。
grant create view on testdb.* to developer@’192.168.0.%’;
grant show view on testdb.* to developer@’192.168.0.%’;
grant 操作 mysql 存储过程、函数 权限。
grant create routine on testdb.* to developer@’192.168.0.%’; - now, can show procedure status
grant alter routine on testdb.* to developer@’192.168.0.%’; - now, you can drop a procedure
grant execute on testdb.* to developer@’192.168.0.%’;
三、grant 普通 dba 管理某个 mysql 数据库的权限。
grant all privileges on testdb to dba@’localhost’
其中关键字 “privileges” 可以省略。
四、grant 高级 dba 管理 mysql 中所有数据库的权限。
grant all on *.* to dba@’localhost’
五、mysql grant 权限分别可以作用在多个层次上。
1. grant 作用在整个 mysql 服务器上
grant select on *.* to dba@localhost; - dba 可以查询 mysql 中所有数据库中的表。
grant all on *.* to dba@localhost; - dba 可以管理 mysql 中的所有数据库
2. grant 作用在单个数据库上
grant select on testdb.* to dba@localhost; - dba 可以查询 testdb 中的表。
3. grant 作用在单个数据表上
grant select, insert, update, delete on testdb.orders to dba@localhost;
4. grant 作用在表中的列上
grant select(id, se, rank) on testdb.apache_log to dba@localhost;
5. grant 作用在存储过程、函数上
grant execute on procedure testdb.pr_add to ’dba’@’localhost’
grant execute on function testdb.fn_add to ’dba’@’localhost’
六、查看 mysql 用户权限
查看当前用户自己权限
show grants;
查看其他 mysql 用户权限
show grants for dba@localhost;
七、撤销已经赋予给 mysql 用户权限的权限。
revoke 跟 grant 的语法差不多只需要把关键字 “to” 换成 “from” 即可
grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;
八、mysql grant、revoke 用户权限注意事项
1. grant, revoke 用户权限后该用户只有重新连接 mysql 数据库权限才能生效。
2. 如果想让授权的用户也可以将这些权限 grant 给其他用户需要选项 “grant option“
grant select on testdb.* to dba@localhost with grant option;
这个特性一般用不到。实际中数据库权限最好由 dba 来统一管理。
注意修改完权限以后 一定要刷新服务或者重启服务刷新服务用flush privileges。
查看用户权限
show grants for 你的用户
比如
show grants for root@‘localhost‘;
日志自动压缩移动脚本:
#!/bin/bash
logs_path="/usr/local/webserver/nginx/logs" #日志存放位置
year=`date +%Y` #年份
month=`date +%m` #月份
day=`date +%Y%m%d` #日期
time=`date +%Y%m%d-%H:%M:%S` #时间
weblog="guoxin_access" #web访问日志
CutNginxLog="/var/log/CutNginx.Log" #分割nginx日志的记录
if [ $day -eq 1 ];then #判断是不是月初1号如果条件成立则创建目录/home/wwwlog/年/月
mkdir -p ${logs_path}$year/$month/
fi
cd $logs_path #进入当前目录
tar jcf access_$day.log.tar.bz2 access.log #压缩日志文件
echo -n > access.log #清空文件重新开始记录日志
DuAccess=`du -sh access_$day.log.tar.bz2 |awk ‘{print $1}‘` #统计tar的大小以便记录日志
mv access_$day.log.tar.bz2 ${logs_path}$year/$month/ #将日志文件移动到相应的目录下
echo "access_$day.log.tar.bz2 : $DuAccess $time" >> $CutNginxLog #记录日志
tar jcf ${weblog}_$day.tar.bz2 $weblog.log
echo -n > $weblog.log
DuPcstars=`du -sh ${weblog}_$day.tar.bz2 |awk ‘{print $1}‘`
mv ${weblog}_$day.tar.bz2 ${logs_path}$year/$month/
echo "${weblog}_$day.tar.bz2 : $DuPcstars $time" >> $CutNginxLog
echo "" >> $CutNginxLog
本文出自 “技术改变世界” 博客,请务必保留此出处http://liruixin.blog.51cto.com/11583225/1792293
原文地址:http://liruixin.blog.51cto.com/11583225/1792293