tomcat优化
我修改了tomcat的配置:现在的速度快了非常多
1:修改server.xml,目的提高并发性,后面你可以根据系统用户的上线数量调整,这个你可以查一下文档
<Connector port="8080"maxThreads="1000" minSpareThreads="100" maxSpareThreads="500" enableLookups="false"acceptCount="2000" disableUploadTimeout="true" maxPostSize="0"maxSavePostSize="-1" URIEncoding="UTF-8"
redirectPort="8443"connectionTimeout="30000" disableUploadTimeout="true"URIEncoding="UTF-8"/>
2:修改jvm,也就是内存配置
在linux中是修改bin下的catalina.sh
在第一行cygwin=false的前面加上
JAVA_OPTS="-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=256m-XX:MaxPermSize=1024m"
3.虚拟主机配置:
<Context path=""docBase="/opt/tomcat7/webapps/jiaXingMechanicElectronic"debug="0"
reloadable="true"crossContext="true" />
<Context path=""docBase="/opt/tomcat7/webapps/jiaXingMechanicElectronic"debug="0"
reloadable="true"crossContext="true" />
还有一种办法
/etc/init.d/rc.local加
export JAVA_OPTS='-Xms1024m -Xmx2048m'
Tomcat优化:部分优化:
1.默认是1024,修改为65535。
$ sudo vim /etc/security/limits.conf
加入下面四行:
* hard nofile 63335
root soft nofile 63335
root hard nofile 63335
ulimit -n 65533
ulimit -u unlimited
重启服务器后,
$ ulimit -n
65535
2、tomcat的JAVA_OPTS设置,如果是32位操作系统,最大值也就能设到1G,在64位操作系统下,可以设置到很大。
在tomcat/bin/catalina.sh中加入一行:
JAVA_OPTS="-Xms2g-Xmx4g-XX:PermSize=1g -XX:MaxPermSize=2g"
3. 配置应用 (web.xml)
对系统应用做些控制。
配置 session 过期时间,大多数网站用户都只是做些浏览性的操作,为了减轻服务器负载压力,我们将 session超时时间从默认的 30 分钟变为 5分钟。
在 web 应用程序的 web.xml中 servlet-mapping 之后增加如下一段:
<session-config>
<session-timeout>5</session-timeout>
</session-config>
4、调增tomcat6响应池:
查找tomcat6安装目录下conf目录中的server.xml文件,进行编辑
屏蔽tomcat默认Connector:
<!–
<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″ />
–>
创建高线程的Connector:
<Connector port="8080″redirectPort="8443″ maxHttpHeaderSize="8192″useBodyEncodingForURI="true"minProcessors="100″maxProcessors="5000″maxThreads="5000″minSpareThreads="1000″ maxSpareThreads="4000″enableLookups="false” acceptCount="3500″ compression="on"compressionMinSize="2048″compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"connectionTimeout="60000″ disableUploadTimeout="true” debug=”0″URIEncoding="UTF-8″/>
(注:加入响应线程数控制,加入压缩传递模式,调整超时设置,屏蔽调试模式)
apache优化
优化perfork设置完之后大致是这样的: /etc/apache2/apache.conf
ServerLimit 1000
StartServers 30
MinSpareServers 30
MaxSpareServers 45
MaxClients 1000
MaxRequestsPerChild 4000
关闭ubuntu的631端口
631是火狐的网络打印机端口,关闭代码如下
root@BRO:~# service cups stop
* Stopping Common Unix Printing System: cupsd[ OK ]
root@BRO:~# sudo update-rc.d -f cups remove
Removing any system startup links for /etc/init.d/cups ...
/etc/rc1.d/K80cups
/etc/rc2.d/S50cups
/etc/rc3.d/S50cups
/etc/rc4.d/S50cups
/etc/rc5.d/S50cups
:~#
实在不行的话直接apt-get remove cups,不过删除后更新里有三个cups相关的就别更新了啊,
ubuntu 关闭111端口
/etc/init.d/portmap stop
或者干脆apt-get remove portmap
3.安装配置mysql
#sudo apt-getinstall mysql-server-5.5
3.1更改端口3306权限更改
#vim/etc/mysqld/my.cnf
#注释掉#bind_address =127.0.0.1 确保PHPmyadmin通过外网连接到数据库
修改my.cnf配置文件 # gedit /etc/mysql/my.cnf
#更改数据库编码utf8
找到客户端配置[client]在下面添加
default-character-set=utf8默认字符集为utf8
再找到[mysqld] 添加
character-set-server=utf8
collation-server=utf8_general_ci
interactive_timeout=31536000
wait_timeout=31536000
max_connections =76800
max_connect_errors =10000000
#根据需求可选择在[mysqld]节下加入
lower_case_table_names=1不区分大小写
#修改好后,重新启动mysql即可,查询一下showvariables like 'character%';
#远程链接MySQL数据库速度很慢,在找到[mysqld]添加
skip-name-resolve
#如果mysql服务器没有开远程帐户,就在my.ini里面加上skip-grant-tables
3.2进入mysql
mysql-u root -pgrant all on *.* to root@"%" identifiedby "gengshang";
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql>create database sakai default character set utf8;
Query OK, 1 rowaffected (0.00 sec)
mysql> grant all on sakai.* to sakaiuser@'localhost' identified by'sakaipassword';
Query OK, 0 rowsaffected (0.00 sec
mysql>grant all on sakai.* to sakaiuser@'127.0.0.1' identified by'sakaipassword';
Query OK, 0 rowsaffected (0.00 sec)
mysql>flush privileges;
Query OK, 0 rowsaffected (0.00 sec)
mysql>quit
2.安装Tomcat开机自动启动
执行命令sudo gedit /etc/init.d/tomcat7 (注意这里,我这样执行是因为tomcat5这个shell文件是不存在的,如果先前安装过tomcat6的话,这里会有一个tomcat6的shell文件的,所以如果你要自启动的是tomcat6的话,最好不要sudo gedit /etc/init.d/tomcat7,避免将那个文件覆盖掉,换一个你易记的名字就行。)
然后把以下英文部分复制过去。(这里那个外国人也犯了个错误,第一句#!/bin/sh没有写,不是一个shell文件。
#!/bin/sh
# Tomcat auto-start
#
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid
export LC_ALL=zh_CN.utf8
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386/
case $1 in
start)
sh /opt/tomcat7/bin/startup.sh
;;
stop)
sh /opt/tomcat7/bin/shutdown.sh
;;
restart)
sh /opt/tomcat7/bin/shutdown.sh
sh /opt/tomcat7/bin/startup.sh
;;
esac
exit 0
上面的步骤做好之后,执行sudo chmod 755 /etc/init.d/tomcat7,让这个文件是可执行的。
然后要做一个链接,即让刚刚那个shell文件能开机自启动。
sudo ln -s /etc/init.d/tomcat7 /etc/rc1.d/K99tomcat7
sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat7
大事告成。在终端中执行sudo /etc/init.d/tomcat7 start/stop/restart(三个选一个就能实现启动,停止,重启功能了)
4.环境变量vim /etc/profile
JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386
export JAVA_HOME
JRE_HOME=/usr/lib/jvm/java-6-openjdk-i386/jre
export JRE_HOME
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export PATH
CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export CLASSPATH
CATALINA_HOME=/opt/tomcat7
CATALINA_BASE=/opt/tomcat7
export CATALINA_HOMECATALINA_BASE
MAVEN_HOME=/opt/maven
export MAVEN_HOME
PATH=$PATH:$MAVEN_HOME/bin
export PATH
MAVEN_OPTS='-Xms512m -Xmx1024m-XX:PermSize=64m -XX:MaxPermSize=512m'
export MAVEN_OPTS
注:
环境变量必须重启系统方可生效。
5.安装Tomcat7
将其解压到/opt下,并命名tomcat7
1.在tomcat7/bin下建立setenv.sh文件,内容为:
JAVA_OPTS="-server-Xms512m -Xmx1524m -XX:PermSize=128m -XX:MaxPermSize=1024m -XX:NewSize=192m-XX:MaxNewSize=1024m -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true-Dhttp.agent=Sakai-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false-Dsun.lang.ClassLoader.allowArraySyntax=true -Duser.language=zh-Duser.region=CN"
export JAVA_OPTS
2.删除Tomcat自带的一些示例,即%TOMCAT_HOME%/webapps目录下所有目录
rm -rf /opt/tomcat7/webapps/*
3.新建index.html在/webapps/ROOT下,内容如下:
<html>
<head>
<title>Redirectingto /portal</title>
<metahttp-equiv="Refresh" content="0:URL=/portal">
</head>
<bodybgcolor="#ffffff" onLoad="javascript:window.location='/portal';">
<divstyle="margin:18px;width:288px;background-color:#cccc99;padding:18px;border:thinsolid #666600;text-align:justify">
<pstyle="margin-top:0px">
You arebeing redirected to the Sakai portal. If you are not automatically redirected,use the link below to continue:<br/>
<ahref="/portal">Take me to the Sakai portal</a>
</p>
</body>
</html>
ubuntu下安装和优化lamp
1.进行系统的更新与升级 (首先确保网络的通畅)
主要是更新apt源,首先要确保网络的通畅
更新源sudo apt-get update
更新已安装的包sudo apt-get upgrade
升级系统sudo apt-get dist-upgrade
2.安装lamp套件
sudo tasksel install lamp-server
安装过程中会出现设置mysql数据库的root密码,
3.安装更新php组件
sudoapt-get install php5 php5-mysql php5-curl php5-gdphp5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhashphp5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidyphp5-xmlrpc php5-xsl php5-json
4.配置和优化apache2
4.1.修改php配置文件sudo vim /etc/php5/apache/php.ini
post_max_size = 8M改为post_max_size = 800M
max_file_uploads = 2M更改单文件最大上传限制max_file_uploads= 200M
4.2优化apache的性能
在Ubuntu中,Apache主要配置文件是/etc/apache2/apache.conf
4.2.1关闭DNS查询
HostnameLookups在默认情况是已经被设置为off,务必保持该设置。如果需要统计客户端DNS,那么可以使用第三方软件来实现。
4.2.2优化MaxClients
Apache2启动的时候会创建一些进程(配置文件中的StartServer设定的数目),并保持一个最大的MaxClients数;每一个超过该数目的连接请求,都会排队等待。
这个MaxClients设置,是和MPM相关的。在apache.conf中,既有针对prefork的MaxClients设置,也有针对worker 的。前者在<IfModulempm_prefork_module>段,后者在<IfModulempm_worker_module>段。这里以woker为例,原配置为:
<IfModulempm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
MaxClients如果要设置超过256的话,就需要同步修改ServerLimit的数值,因为ServerLimit的默认值是256.比如这里需要配置为1024:
<IfModulempm_worker_module>
StartServers 10
ServerLimit 1024
MaxClients 1024
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
那么,要怎么才能知道是不是需要增大MaxClients呢?可以查看Apache2的错误日志文件/var/log/apache2/error.log,如果发现如下内容,就应该增大MaxClients了:
[error] server reachedMaxClients setting,consider raising the MaxClients setting
4.2.3优化perfork
首先,对于一个负载相对较高的网站来说,256的进程限制是不够的,如果服务器已经达到256的极限,那么接下去的访问就需要排队,这也就是为什么某些服务器负载不高,但是访问却很慢的原因之一。所以首先应该了解服务器在繁忙时的进程数量。
通过命令ps -ef|grephttpd|wc可以了解到当前系统中Apache进程数,通过设置ServerLimit和MaxClients来达到为服务器软扩容的目的。
然后,在访问量高峰期,经常会出现的情况是突然之间发生非常多的并发连接,然后突然之间减少了很多访问。如果Apache没有准备足够数量的预备进程,那访问只能等待Apache每秒1个的新增进程,随后又要将多余的进程删除,那Apache只能一直忙于新建和销毁进程,大大地降低了访问速度。可以适当增加StartServers、MinSpareServers、MaxSpareServers来使得Apache不需要一直忙于作无用功。
最后,强烈推荐MaxRequestsPerChild不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏的影响,因为你不知道运行在Apache上的应用程式在什么时候会出错导致内存泄漏。
设置完之后大致是这样的:
ServerLimit 1000
StartServers 30
MinSpareServers 30
MaxSpareServers45
MaxClients 1000
MaxRequestsPerChild 4000
4.2.4优化KeepAlive
Apache 的KeepAlive这个指令指定一段时间,在这段时间内,可以让服务器和客户端之间持同一个连接。这个特性,有其好处,也有其坏处。好处是,如果客户端发出多个请求,服务端不必每次都花时间去创建连接。坏处就是,这段时间内,即使客户端不再发出新的请求、访问新的页面,这个连接也会被占用,这对服务器资源来说是一种浪费。
在默认情况下,KeepAlive是设置为On的,KeepAliveTimeout设置为15秒。也就是说,在15秒之内,服务器平均每秒连接到150个不同的连接,那么从理论上讲,服务器将同时有15×150=2250个连接,内存消耗比较严重。
那么我们要如何来优化KeepAlive呢?
a、可以禁用KeepAlive(设置为 Off);
b、将KeepAliveTimeout改小,比3或者5秒。
4.2.5启用压缩优化Apache
在 Apache1.3中,有个gzip模块。在Apache2中,没有了gzip,有一个新的模块叫做deflate。这个模块可以在用户访问网站时实时将内容进行压缩,然后再传给客户端。因为压缩比较高(测试结果显示,其压缩比最高可达97%,最少也有40%),所以deflate能够极大地加速网站,节约带宽。当然,压缩是要花费CPU时间的。
要启用该模块,运行以下命令:
sudo a2enmod deflate
sudo /etc/init.d/apache2force-reload
该模块有一个配置文件:/etc/apache2/mods-enabled/deflate.conf,可以配置要压缩的文件类型。默认配置为:
<IfModulemod_deflate.c>
AddOutputFilterByType DEFLATEtext/html text/plain text/xml
</IfModule>
上面配置较为合理,因为一般情况下,不需要对图片、PDF和mp3等文件进行压缩,那是很费资源的事情。
4.2.6使用缓存(mod_cache)提高apache性能
apache2 有两种缓存模块:一种是基于硬盘的,另外一种是基于内存的。前者由mod_disk_cache实现,后者由mod_mem_cache实现,不过它们都需要mod_cache的支持。在基于内存的缓存方式中,还有一个mod_file_cache模块,它是用于搭配mod_mem_cache模块使用的。
5.配置和优化mysql数据库
注:更改配置文件之前最好做下备份cp /etc/mysqld/my.cnf/etc/mysqld/my.cnf.bak
vim/etc/mysqld/my.cnf修改mysql的配置文件:
5.1更改数据库编码utf8
找到客户端配置[client]在下面添加
default-character-set=utf8 默认字符集为utf8
再找到[mysqld] 添加
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
5.2更改数据库的默认休眠时间
找到[mysqld] 添加
interactive_timeout=31536000
wait_timeout=31536000
5.3根据需求可选择在[mysqld]节下加入
lower_case_table_names=1不区分大小写
远程链接MySQL数据库速度很慢,找到[mysqld]添加skip-name-resolve
5.4远程连接数据库
#注释掉#bind_address =127.0.0.1开启数据库的远程连接功能;
如果mysql服务器没有开远程帐户,找到[mysqld]添加skip-grant-tables
skip-networking开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项,否则将无法正常连接!
5.5优化3个重要配置参数
查看当前参数mysqladmin variables extended-status -uroot -p |grep key_buffer_size
有3个配置参数是最重要key_buffer_size,query_cache_size,table_cache
5.5.1key_buffer_size只对MyISAM表起作用,
key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点 这个数字是远远不够的,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例 key_reads /key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE'key_read%';获得)。
这个服务器已经运行了20天
得到如下状态值:mysqladmin variables extended-status -uroot -p|grepkey
key_buffer_size –128M
key_read_requests –650759289
key_reads – 79112
比例接近1:8000 健康状况非常好
另外一个估计key_buffer_size的办法 把你网站数据库的每个表的索引所占空间大小加起来看看以此服务器为例:比较大的几个表索引加起来大概125M 这个数字会随着表变大而变大。从4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。
5.5.2query_cache_size设置
通过调节以下几个参数可以知道query_cache_size设置得是否合理
Qcache_inserts
Qcache_hits
Qcache_lowmem_prunes
Qcache_free_blocks
Qcache_total_blocks
Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,同时Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。
Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多query_cache_type指定是否使用查询缓冲
我设置:
query_cache_size=32M
query_cache_type=1
得到如下状态值:mysqladmin variables extended-status -uroot -p|grepQcache_*
Qcache_queries in cache 12737表明目前缓存的条数
Qcache_inserts 20649006
Qcache_hits 79060095 看来重复查询率还挺高的
Qcache_lowmem_prunes 617913 有这么多次出现缓存过低的情况
Qcache_not_cached 189896
Qcache_free_memory 18573912 目前剩余缓存空间
Qcache_free_blocks 5328 这个数字似乎有点大 碎片不少
Qcache_total_blocks 30953
如果内存允许32M应该要往上加点
5.5.3table_cache设置
table_cache指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现 open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE 'Open%tables';获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
对于有1G内存的机器,推荐值是128-256。
笔者设置
table_cache=256
mysqladmin variables extended-status -uroot-pgengshang |grep Open*得到以下状态:
Open_tables 256
Opened_tables 9046
5.6优化mysql常用参数
key_buffer_size =256M
max_allowed_packet =4M
thread_stack =256K
query_cache_size=64M
table_cache =128K
sort_buffer_size =6M
#查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100× 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
read_buffer_size =4M
#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享!
join_buffer_size =8M
#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享!
myisam_sort_buffer_size=64M
table_cache=512
thread_cache_size=64
tmp_table_size =256M
max_connections =5000
max_connect_errors =10000000
wait_timeout =10
#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。
thread_concurrency =8该参数取值为服务器逻辑CPU数量×2,如果服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8
更改完配置文件之后需重启mysql服务方能生效。
/etc/init.d/mysqlrestart
数据库服务器192.168.1.41配置
1 mysqlbak数据库文件备份脚本文件
sudo /etc/init.d/mysql stop
sleep 20
rq=`date +%Y%m%d`
tar zcvf /var/webappsbak/mysql_$rq.tar.gz/var/lib/mysql
sudo /etc/init.d/mysql start
修改权限 chmod +x /usr/sbin/mysqlbak
运行/usr/sbin/mysqlbak 将数据库文件/var/lib/mysql中的文件压缩到/var/webappsbak/下,
2 mysqlbak.sh自动异地备份脚本文件
#!/bin/bash
rq=`date+%Y%m%d`
HOST=192.168.1.34
USER=root
PASSWORD=密码
PORT=22
TARGET=/var/webappsbak/mysql_$rq.tar.gz
DEST_DIR=/var/webappsbak/
echo"Starting to sftp ${TARGET} to ${HOST}"
lftp -u${USER},${PASSWORD} -p $PORT sftp://${HOST} <<EOF
cd${DEST_DIR}
put${TARGET}
bye
EOF
运行sh /usr/sbin/mysqlbak.sh 进行异地备份
3 dbbak_del定期删除数据库备份的脚本文件
DATE=$(date +%Y%m%d)
aa_DATE=$(date "-d 42 day ago"+%Y%m%d)
bb_DATE=$(date "-d 56 day ago"+%Y%m%d)
cc_DATE=$(date "-d 70 day ago"+%Y%m%d)
sudo rm /var/webappsbak/mysql_$aa_DATE.tar.gz
sudo rm /var/webappsbak/mysql_$bb_DATE.tar.gz
sudo rm /var/webappsbak/mysql_$cc_DATE.tar.gz
修改权限chmod +x /usr/sbin/dbbak_del
4 下面修改为自动备份:修改/etc/crontab文件
gedit/etc/crontab 增加如下内容:
如:每天的凌晨3点1分复制mysql所有数据库
01 03 * * * root /usr/sbin/mysqlbak
如:每天的凌晨5点30分sh执行脚本将mysql异地备份
30 05 * * * root sh /usr/sbin/mysqlbak.sh
如:每天的凌晨5点1分删除规定时间前备份的文件
01 05 * * * root /usr/sbin/dbbak_del
应用服务器192.168.1.33配置
5 首先保证lftp和sftp服务开启,端口22。
6 在/usr/sbin/下新建webappsbak脚本文件
rq=`date+%Y%m%d`
tar zcvf/var/webappsbak/webappsbak$rq.tar.gz /var/lib/tomcat6/webapps
DATE=$(date+%Y%m%d)
aa_DATE=$(date"-d 35 day ago" +%Y%m%d)
bb_DATE=$(date"-d 42 day ago" +%Y%m%d)
cc_DATE=$(date"-d 70 day ago" +%Y%m%d)
sudo rm/var/webappsbak/webappsbak$aa_DATE.tar.gz
sudo rm/var/webappsbak/webappsbak$bb_DATE.sql
sudo rm/var/webappsbak/webappsbak$cc_DATE.tar.gz
修改文件权限 chmod +x /usr/sbin/webappsbak
执行/usr/sbin/webappsbak 进行对/var/lib/tomcat6/webapps文件压缩并备份到/var/webappsbak下;请确保目录/var/webappsbak存在,如果不存在请运行如下命名如:mkdir -p /var/webappsbak (下同)
7 新建文件/usr/sbin/webappsbak.sh 内容如下:
#!/bin/bash
rq=`date+%Y%m%d`
HOST=192.168.1.34
USER=root
PASSWORD=密码gs
PORT=22
TARGET=/var/webappsbak/webappsbak$rq.tar.gz
DEST_DIR=/var/webappsbak
echo"Starting to sftp ${TARGET} to ${HOST}"
lftp -u ${USER},${PASSWORD}-p $PORT sftp://${HOST} <<EOF
cd${DEST_DIR}
put${TARGET}
bye
EOF
运行:sh /usr/sbin/webappsbak.sh 进行将备份文件传到192.168.1.34上,
8 下面修改为自动备份:修改/etc/crontab文件
gedit/etc/crontab 增加如下内容:
如:每周6的凌晨2点1分应用程序备份
01 02 * * 6 root/usr/sbin/webappsbak
如:每周6的凌晨6点1分sh执行脚本将应用程序异地备份
01 06 * * 6 root sh /usr/sbin/webappsbak.sh