首页 文章 精选 留言 我的

精选列表

搜索[centos],共5623篇文章
优秀的个人博客,低调大师

Centos7系统自动安装jdk1.7脚本

1.首先查看自己电脑上面是否安盐水鸭 南京特产 南京特产有哪些装默认的jdk。 rpm -qa |grep jdk 2.如果有的话,先卸载sun公司的openjdk。 rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 将类似的jdk卸载掉之后再安装。 3.本次安装的是jdk-7u80-linux-x64.tar.gz,解压安装包进行安装。 jdk-7u80-linux-x64.tar.gz安装包的百度云链接:https://yun.baidu.com/s/1bncwr8b 4.运行install_Jdk.sh,在运行脚本之前首先给脚本install_Jdk.sh 添加可执行权限。 chmod +x install_Jdk.sh 5.将脚本与第三步中的安装包放在同一目录下面,然后执行./install_Jdk.sh 6.安装的jdk的目录在/usr/local/jdk1.7 7.之后测试是否安装成功。java -version [plain]view plain copy #!/bin/bash #shellscripttoinstalljdk #1.removeopenjdkifexists. foriin$(rpm-qa|grepopenjdk|grep-vgrep) do echo"Deletingrpm->"$i rpm-e--nodeps$i done if[[!-z$(rpm-qa|grepjdk|grep-vgrep)]]; then echo"-->FailedtoremovethedefultJdk." else #2.tarandinstallJDK(jdk-7u80-linux-x64.tar.gz) tar-zxvfjdk-7u80-linux-x64.tar.gz mv./jdk1.7.0_80/usr/local/jdk1.7 rm-rf./jdk1.7.0_80 #3.config/etc/profile echo"exportJAVA_HOME=/usr/local/jdk1.7">>/etc/profile echo-e'exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar'>>/etc/profile echo-e'exportPATH=$PATH:$JAVA_HOME/bin'>>/etc/profile source/etc/profile fi

优秀的个人博客,低调大师

CentOS6.8使用Rsync+sersync实现数据实时同步

Sersync简介 Sersync利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步。由金山的周洋开发完成,是目前使用较多的文件同步工具之一。该工具和其他的工具相比有如下优点: sersync是使用c++编写,由于只同步发生更改的文件,因此比其他同步工具更节约时间、带宽; 安装方便、配置简单; 使用多线程进行同步,能够保证多个服务器实时保持同步状态; 自带出错处理机制,通过失败队列对出错的文件重新出错,如果仍旧失败,则每10个小时对同步失败的文件重新同步; 自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次; 自带socket与http协议扩展,你可以方便的进行二次开发; rsync+sersync与rsync+Inotify-tools区别 Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来; rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。 sersync是基于Inotify开发的,类似于Inotify-tools的工具; sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字; rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。 所以,当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync。 地址:http://code.google.com/p/sersync/,要***才能下载 http://download.csdn.net/detail/hellopengyl/9918625 安装、配置 和Inotify-tools一样,只需要在数据源端安装 1、查看服务器内核是否支持inotify [root@localhostsrc]#ll/proc/sys/fs/inotify#查看服务器内核是否支持inotify,出现下面的内容,说明服务器内核支持inotify total0 -rw-r--r--1rootroot0Jul2710:32max_queued_events -rw-r--r--1rootroot0Jul2710:32max_user_instances -rw-r--r--1rootroot0Jul2710:32max_user_watches [root@localhostsrc]#uname-r#Linux下支持inotify的内核最小为2.6.13 2.6.32-642.el6.x86_64 [root@localhostsrc]#sysctl-a|egrep-i"max_queued_events|max_user_watches|max_user_instances"#修改inotify默认参数(inotify默认内核参数值太小) fs.inotify.max_user_instances=128 fs.inotify.max_user_watches=8192 fs.inotify.max_queued_events=16384 fs.epoll.max_user_watches=201420 [root@localhostsrc]#vim/etc/sysctl.conf fs.inotify.max_user_instances=65535 fs.inotify.max_user_watches=99999999 fs.inotify.max_queued_events=99999999 [root@localhostsrc]#cat/proc/sys/fs/inotify/{max_user_instances,max_user_watches,max_queued_events} 65535 99999999 99999999 [root@localhostsrc]# max_queued_events inotify队列最大长度,如果值太小,会出现"** Event Queue Overflow **"错误,导致监控文件不准确 max_user_watches 要同步的文件包含多少目录,可以用:find /home/justin -type d | wc -l统计,必须保证max_user_watches值大于统计结果(这里/home/justin为同步文件目录) max_user_instances 每个用户创建inotify实例最大值 2、安装、配置sersync [root@localhostsrc]#tarzxvfsersync2.5.4_64bit_binary_stable_final.tar.gz [root@localhostsrc]#mvGNU-Linux-x86/app/sersync [root@localhostsrc]#cd/app/sersync/ [root@localhostsersync]#ls confxml.xmlsersync2 [root@localhostsersync]#cpconfxml.xml{,.default} [root@localhostsersync]#vimconfxml.xml <?xmlversion="1.0"encoding="ISO-8859-1"?> <headversion="2.5"> <hosthostip="localhost"port="8008"></host>#针对插件的保留字段,保留默认即可。 <debugstart="true"/>#在sersync正在运行的控制台,打印inotify,rsync同步命令 <fileSystemxfs="false"/>#对于xfs文件系统用户,需要将这个选项开启才正常工作 <filterstart="false">#过滤系统的临时文件,被过滤的文件不会被监控提高,默认过滤系统的临时文件(以“.”开头,以“~”结尾) <excludeexpression="(.*)\.svn"></exclude> <excludeexpression="(.*)\.gz"></exclude> <excludeexpression="^info/*"></exclude> <excludeexpression="^static/*"></exclude> </filter> <inotify>#inotify监控文件模块 <deletestart="true"/>#如果本地文件删除,不需要删除远程段的文件可以设置成false <createFolderstart="true"/>#如果将createFolder设为false,则不会对产生的目录进行监控,该目录下的子文件与子目录也不会被监控; <createFilestart="false"/>#把createFile(监控文件事件选项)设置为false来提高性能,减少rsync通讯;因为拷贝文件到监控目录会产生create事件与close_write事件,所以如果关闭create事件,只监控文件拷贝结束时的时间close_write,同样可以实现文件完整同步; <closeWritestart="true"/> <moveFromstart="true"/> <moveTostart="true"/> <attribstart="false"/> <modifystart="false"/> </inotify> <sersync>#进行数据同步的模块 <localpathwatch="/app/rsync_client">#定义本地要同步的目录 <remoteip="10.15.43.100"name="app_rsync_server"/>#远程接受同步的IP和rsync模块名 <!--<remoteip="192.168.8.39"name="tongbu"/>--> <!--<remoteip="192.168.8.40"name="tongbu"/>--> </localpath> <rsync> <commonParamsparams="-artuz"/>#自定义rsync参数,默认是-artuz <authstart="true"users="rsync"passwordfile="/etc/rsyncd.secret"/>#开启用户认证,定义用户名密码 <userDefinedPortstart="false"port="874"/><!--port=874--> <timeoutstart="false"time="100"/><!--timeout=100--> <sshstart="false"/>#设置rsync+ssh加密传输模式,默认关闭,开启需设置SSH加密证书 </rsync> <failLogpath="/tmp/rsync_fail_log.sh"timeToExecute="60"/><!--defaultevery60minsexecuteonce-->#对于失败的传输,会进行重新传送,再次同步失败后日志记录到/tmp/rsync_fail_log.sh,并且每60分钟对失败的log进行重新同步 <crontabstart="true"schedule="600"><!--600mins-->#每隔600s会做一次完全同步 <crontabfilterstart="false">#如果开启了filter文件过滤功能,那么crontab整体同步也需要设置过滤,否则虽然实时同步的时候文件被过滤了,但crontab整体同步的时候如果不单独设置crontabfilter,还会将需过滤的文件同步到远程, <excludeexpression="*.php"></exclude> #crontab的过滤正则与filter过滤的不同,果同时开启了filter与crontab,则要开启crontab的crontabfilter,并按示例设置使其与filter的过滤一一对应。 <excludeexpression="info/*"></exclude> </crontabfilter> </crontab> <pluginstart="false"name="command"/>#当设置为true的时候,将文件同步到远程服务器后会调用name参数指定的插件。 </sersync> <pluginname="command">#name指定的插件 #当文件同步完成后,会调用command插件,例如同步文件是file.txt,file.txt文件在改动之后,调用rsync同步到远程服务器后,调用command插件,执行/bin/shfile.txtsuffix>/dev/null2>&1 #如果suffix设置了,则会放在inotify事件file.txt之后,如果ignoreError为true,则会添加>/dev/null2>&1 <paramprefix="/bin/sh"suffix=""ignoreError="true"/> <!--prefix/opt/tongbu/mmm.shsuffix--> <filterstart="false"> <includeexpression="(.*)\.php"/>#当filter为ture,include可以只对正则匹配到的文件,调用command。 <includeexpression="(.*)\.sh"/> </filter> </plugin> #http插件,可以向指定域名的主机post,inotify监控的事件。 #socket插件,开启该模块,则向指定ip与端口发送inotify所产生的文件路径信息 <pluginname="socket"> <localpathwatch="/opt/tongbu"> <deshostip="192.168.138.20"port="8009"/> </localpath> </plugin> #在同步过程中将文件发送到目的服务器后刷新cdn接口。如果不想使用,则设置<pluginstart="false"name="refreshCDN"/> #该模块根据chinaCDN的协议,进行设计,当有文件产生的时候,就向cdn接口发送需要刷新的路径位置 <pluginname="refreshCDN"> <localpathwatch="/data0/htdocs/cms.xoyo.com/site/">#需要监控的目录 #cdnifo标签制定了cdn接口的域名,端口号,以及用户名与密码。 <cdninfodomainname="ccms.chinacache.com"port="80"username="xxxx"passwd="xxxx"/> #sendurl标签是需要刷新的url的前缀 <sendurlbase=" #regexurl标签中的,regex属性为true时候,使用match属性的正则语句匹配inotify返回的路径信息,并将正则匹配到的部分作为url一部分, <regexurlregex="false"match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/> #如果产生文件事件为:/data0/htdoc/cms.xoyo.com/site/jx3.xoyo.com/image/a/123.txt #经过上面的match正则匹配后,最后刷新的路径是:http://pic.xoyo.com/cms/jx3/a/123.txt; #如果regex属性为false,最后刷新的路径是http://pic.xoyo.com/cms/jx3.xoyo.com/images/a/123.txt; </localpath> </plugin> </head> [root@localhostsersync]#/app/sersync/sersync2-d-r-n8-o/app/sersync/confxml.xml setthesystemparam execute:echo50000000>/proc/sys/fs/inotify/max_user_watches execute:echo327679>/proc/sys/fs/inotify/max_queued_events parsethecommandparam option:-d runasadaemon option:-r rsyncallthelocalfilestotheremoteserversbeforethesersyncwork option:-n threadnumis:8 option:-o configxmlname:/app/sersync/confxml.xml parsexmlconfigfile hostip:localhost hostport:8008 Opendebug,youwillseedebuginfomation daemonstart,sersyncrunbehindtheconsole Startthecrontab Every600minutesrsyncallthefilestotheremoteserversentirely usersyncpassword-file: useris rsync passwordfileis /etc/rsyncd.secret configxmlparsesuccess pleaseset/etc/rsyncd.confmaxconnections=0Manually sersyncworkingthread10=1(primarythread)+1(failretrythread)+8(daemonsubthreads) Maxthreadsnumbersis:18=10(Threadpoolnums)+8(Subthreads) pleaseaccordingyourcpu,use-nparamtoadjustthecpurate ------------------------------------------ rsyncthedirectoryrecursivlytotheremoteserversonce workingpleasewait... executecommand:cd/app/rsync_client&&rsync-artuz-R--delete./rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret crontabcommand:cd/app/rsync_client&&rsync-artuz-R--delete./rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret runthesersync: watchpathis:/app/rsync_client addwatch:/app/rsync_clientreturnwdis:1 addwatch:/app/rsync_client/testreturnwdis:2 [root@localhostsersync]# -d 后台启动 -r同步前将已存在的文件全部同步过去,如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步; -n开启的线程总数默认10 -o指定配置文件,指定 -o 参数可以指定多个不同的配置文件,从而实现sersync多进程多实例的数据同步 -m不进行同步,只运行插件 ./sersync -m pluginName 例如:./sersync -m command,则在监控到事件后,不对远程目标服务器进行同步,而是直接运行command插件 [root@localhostsersync]#catmonitor_sersync.sh#监控Sersync运行状态的脚本,如果服务停止了就重启服务 #!/bin/bash server_file="/app/sersync/sersync2" conf_file="/app/sersync/confxml.xml" options="-d-r-n8-o" proc_num=$(ps-ef|grep-isersync2|grep-v"grep"|wc-l) if[$proc_num-lt1];then cd$(dirname$server_file) nohup$server_file$options$conf_file& else exit0; fi [root@localhostsersync]#chmod+xmonitor_sersync.sh [root@localhostsersync]#crontab-l */5****/app/sersync/monitor_sersync.sh [root@localhostsersync]#/etc/init.d/crondrestart [root@localhostsersync]#vim/etc/rc.d/rc.local#设置开机自动运行脚本 /app/sersync/sersync2-d-r-n8-o/app/sersync/confxml.xml [root@localhostsersync]# 测试 在客户端监控的目录/app/rsync_client创建文件,然后查看服务器端app_rsync_server模块对应的目录是否同步更新 [root@localhostrsync_client]#touchfile{1..9} inotifywd:1 name:file1 mask:256 inotifywd:1 name:file1 mask:8 inotifywd:1 name:file2 mask:256 inotifywd:1 name:file2 mask:8 inotifywd:1 name:file3 mask:256 inotifywd:1 name:file3 mask:8 inotifywd:1 name:file4 mask:256 inotifywd:1 name:file4 mask:8 inotifywd:1 name:file5 mask:256 [root@localhostrsync_client]#cd/app/rsync_client&&rsync-artuz-R"./file2"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret inotifywd:1 name:file5 mask:8 inotifywd:1 name:file6 mask:256 inotifywd:1 name:file6 mask:8 inotifywd:1 name:file7 mask:256 inotifywd:1 name:file7 mask:8 inotifywd:1 name:file8 mask:256 inotifywd:1 name:file8 mask:8 inotifywd:1 name:file9 mask:256 inotifywd:1 name:file9 mask:8 cd/app/rsync_client&&rsync-artuz-R"./file1"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret cd/app/rsync_client&&rsync-artuz-R"./file3"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret cd/app/rsync_client&&rsync-artuz-R"./file4"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret cd/app/rsync_client&&rsync-artuz-R"./file5"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret cd/app/rsync_client&&rsync-artuz-R"./file6"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret cd/app/rsync_client&&rsync-artuz-R"./file7"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret cd/app/rsync_client&&rsync-artuz-R"./file8"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret cd/app/rsync_client&&rsync-artuz-R"./file9"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret [root@localhostrsync_client]#touchfile1 inotifywd:1 name:file1 mask:8 [root@localhostrsync_client]#cd/app/rsync_client&&rsync-artuz-R"./file1"rsync@10.15.43.100::app_rsync_server--password-file=/etc/rsyncd.secret [root@localhostsersync]# 压测 写入10K个文件批量同步测试结果: [root@localhostrsync_client]#fornin{1..10000};doddif=/dev/zeroof=/app/rsync_client/"$n".txtbs=1Mcount=5;done 查看同步速度,当10K个文件同步完后,在/app/rsync_server里发现才同步了600多个文件 多实例情况 配置多个confxml.xml文件(比如:www、bbs、blog....等等),根据不同的需求同步对应的实例文件 [root@localhostrsync_client]#/app/sersync/sersync2-d-r-n8-o/app/sersync/www_confxml.xml [root@localhostrsync_client]#/app/sersync/sersync2-d-r-n8-o/app/sersync/bbs_confxml.xml [root@localhostrsync_client]#/app/sersync/sersync2-d-r-n8-o/app/sersync/blog_confxml.xml rsync使用时的常见问题 错误1: rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.2] 解决:很大可能是服务器端没有开启 rsync 服务。开启服务。 或者开启了防火墙指定的端口无法访问。 错误2:@ERROR: chdir failed rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 解决:服务器端同步目录没有权限,cwrsync默认用户是Svcwrsync。为同步目录添加用户Svcwrsync权限。 错误3:@ERROR: failed to open lock file rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.2] 解决:服务器端配置文件 rsyncd.conf中添加 lock file = rsyncd.lock 即可解决。 错误4:@ERROR: invalid uid nobody rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.2] 解决:在rsyncd.conf文件中添加下面两行即可解决问题 UID = 0 GID = 0 错误5:@ERROR: auth failed on module test2 rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=3.0.2] 解决:服务端没有指定正确的secrets file,请在 [test2]配置段添加如下配置行: auth users = coldstar #同步使用的帐号 secrets file = rsyncd.secrets #密码文件 错误6:password file must not be other-accessible 解决:客户端的pass文件要求权限为600, chmod 600 /etc/rsync.pass 即可。 错误7:rsync: chdir /cygdrive/c/work failed : No such file or directory (2) 解决:服务器端同步文件夹路径或名称写错了,检查path。 错误8:rsyncserver 服务启动时报错“rsyncserver服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务。” 解决方法:将安装目录下的rsyncd.pid文件删除,再重新启动RsyncServer服务。一般是异常关机导致的。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册