首页 文章 精选 留言 我的

精选列表

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

centos6搭建elk

ELK由Elasticsearch、Logstash和Kibana三部分组件组成; Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用 kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 四大组件 Logstash: logstash server端用来搜集日志; Elasticsearch: 存储各类日志; Kibana: web化接口用作查寻和可视化日志; Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server; 实验环境 centos6.5_x64 实验软件 jdk elasticsearch-1.4.2.tar.gz master.tar.gz logstash-1.4.2.tar.gz kibana-3.1.2.tar.gz 软件安装 yum install -y java-1.7.0-openjdk* java -version java version "1.7.0_111" OpenJDK Runtime Environment (rhel-2.6.7.2.el6_8-x86_64 u111-b01) OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode) tar zxvf elasticsearch-1.4.2.tar.gz mv elasticsearch-1.4.2 /usr/local/ ln -s /usr/local/elasticsearch-1.4.2 /usr/local/elasticsearc tar zxvf master.tar.gz mv elasticsearch-servicewrapper-master/service/ /usr/local/elasticsearch/bin/ /usr/local/elasticsearch/bin/service/elasticsearch start Starting Elasticsearch... Waiting for Elasticsearch...... running: PID:2496 netstat -tuplna | grep 9300 tcp 0 0 :::9300 :::* LISTEN 2498/java tcp 0 0 ::ffff:192.168.31.103:44390 ::ffff:192.168.31.103:9300 ESTABLISHED 2498/java ps -ef | grep 9300 root 2566 2161 0 20:04 pts/0 00:00:00 grep 9300 curl -X GET http://localhost:9200 { "status" : 200, "name" : "Time Bomb", "cluster_name" : "elasticsearch", "version" : { "number" : "1.4.2", "build_hash" : "927caff6f05403e936c20bf4529f144f0c89fd8c", "build_timestamp" : "2014-12-16T14:11:12Z", "build_snapshot" : false, "lucene_version" : "4.10.2" }, "tagline" : "You Know, for Search" } tar zxvf logstash-1.4.2.tar.gz mv logstash-1.4.2 /usr/local/ ln -s /usr/local/logstash-1.4.2 /usr/local/logstash /usr/local/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }' mkdir -p /usr/local/logstash/etc vim /usr/local/logstash/etc/hello_search.conf 默认没有这个配置文件需要手动编辑 input stdin { type => "human" } } output { stdout { codec => rubydebug } elasticsearch { host => "192.168.31.243" port => 9300 } } /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/hello_search.conf & { "message" => "hello word", "@version" => "1", "@timestamp" => "2016-09-24T12:40:42.081Z", "type" => "human", "host" => "0.0.0.0" } tar zxvf kibana-3.1.2.tar.gz mv kibana-3.1.2 /var/www/html/kibana vim /var/www/html/kibana/config.js elasticsearch: "http://"+window.location.hostname+":9200" elasticsearch: "http://192.168.31.243:9200",修改为 vim /usr/local/elasticsearch/config/elasticsearch.yml http.cors.enabled: true 配置文件最后加载一行 /usr/local/elasticsearch/bin/service/elasticsearch restart 重启读取配置文件 service httpd restart vim /usr/local/logstash/etc/logstash_agent.conf input { file { type => "http.access" path => ["/var/log/httpd/access_log"] } file { type => "http.error" path => ["/var/log/httpd/error_log"] } file { type => "messages" path => ["/var/log/messages"] } } output { elasticsearch { host => "192.168.31.243" port => 9300 } nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_agent.conf & ps -ef | grep 9292 root 10834 2682 0 21:03 pts/1 00:00:00 grep 9292 ps -ef | grep 9300 root 10838 2682 0 21:04 pts/1 00:00:00 grep 9300 ps -ef | grep 9200 root 10840 2682 0 21:04 pts/1 00:00:00 grep 9200 http://服务端ip/kibana 本文转自 mailfile 51CTO博客,原文链接:http://blog.51cto.com/mailfile/1856217,如需转载请自行联系原作者

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

Android入门及环境搭建

最近上课学习Java之余,老师给我们讲了Androidde的前景,虽然我们以后会学相应的Android的课程,但是还是激起了我很大探索Android的热情,于是我在网上搜索了一个相关的Android资料,应该说将来是一个很大的热门。闲来无事做我准备探索一下Android,事先说明一下很多心得体会都来自网上和相关资料。虽然这次摸索花了我一下午的时间,但是看到我能成功我很高兴,废话少说,以下是一些相关过程,希望对大家有所帮助。 首先,了解了解一些Android方面的概念吧 1)SDK(Software Development Kit) 2)ADT(Android Development Tools) 3)AVD(Android Virtual Devices) 带着这三个概念,让我们开始Android入门之旅吧 要开发运行Android,必须得要有个能够运行我们所开发的程序的东西才行吧,Java要JDK才能运行对吧?!OK,SDK隆重登场了。这个软件开发工具包就是要编译和运行Android应用程序的依赖,现让我们来下载和安装它: 1、登陆http://androidappdocs.appspot.com/sdk/index.html,你会看到各种操作系统支持的Android SDK,在这里,我们选择Windows系统支持的SDK:android-sdk_r05-windows.zip。下载到你本地磁盘的任何你喜欢的目录下(当然了,乱放不是一个好的习惯,通常一个好的习惯,就是把一类的东西归档,在这里我下载到G:\android目录下)。下载以后,直接解压,解压以后,会看到add-ons、platforms、tools这三个目录,还有一个是仅windows版本才有的SDK Setup.exe。这些待会儿再说,现在将tools的路径编辑在Path下,比如G:\android\android-sdk-windows\tools,这样呢,下载和安装SDK算是完成了 2、开发Android最基本的运行依赖有了,现在呢,我们得要给开发配备一个不错的开发工具了,Eclipse,不错的热插拔开发工具,我们都知道,本机Eclipse里是不自带Android项目的,所以,我得装插件啊,至此,ADT is coming now!ADT是为使用Eclipse开发Android应用程序而安装的一款插件,费话不多说了,来看看具体的安装过程,Eclipse的最低版本要3.4,官方上推荐的是:Eclipse Classic 3.5.2(168M)。更详细的介绍,可参见:http://androidappdocs.appspot.com/sdk/eclipse-adt.html,我在这里,使用的是MyEclipse6.5: “help”-->“Software updates”-->“Find and Install”-->“Search for new features to install”-->“next”-->选择“New Remote Site”-->Name:Android Plugin,URL:https://dl-ssl.google.com/android/eclipse/-->“OK”,如果一切顺利的话,那么,ADT算是安装完成了! 3、开始我们的HelloWorld程序吧: 等等,AVD还没有说明,都开始HelloWorld程序了?!现在来说明一下,刚刚我们有下载 windows SDK,不知道你们有没有发现add-ons、platforms里面都是空的,而且也没有我们想像中的有说明文档或者什么例子之类的东西,实际上呢,刚刚那个SDK里面仅包含了 Android SDK and AVD Manager(它是总管的,安装更新组件,全部是由它来搞),并没有Android platform(..Android2.0、2.1)和其它的一些组件,要运行我们的应用程序呈现给用户看,我们得需要一个呈现平台,这个呈现效果平台的背后,就是这个Android platform,类似于我们的操作系统,这里我选择的是Android2.1。再来说说Android Emulator(Android手机模拟器),Android是一款手机智能系统,为了测试、运行我们开发的应用程序,总归是不能时时用搭载Android系统的手机来测试吧,这个Android Emulator就是为了模拟手机环境的东东了。与真实的手机环境完全的相似,当然不能打电话发信息了(Android Emulator介绍:http://androidappdocs.appspot.com/guide/developing/tools/emulator.html)。在启动Android Emulator之前呢,我们必须得创建AVD(哎呀,终于出现了)。AVD定义了Android Emulator需要使用的图像以及一些设定,也就是Emulator能显示的东西,基本上都是由AVD所提供定义的(http://androidappdocs.appspot.com/guide/developing/tools/avd.htm)。 真够多的,不过概念算是全部理清楚了。 在开始HelloWorld工程之前,首先先开启Android SDK and AVD Manager这个大总管,确定安装的组件都已成功安装(platform、AVD),启动Android SDK and AVD Manager有如下三种方式: 1)如果你是用Eclipse开发Android程序,并且也已经安装了ADT插件,那么“Window”-->“Android SDK and AVD Manager”,搞定; 2)Windows SDK,双击SDK Setup.exe。搞定《我自己用的还是这个,花了好几个小时,网速不好》 3)命令行方式,任何操作系统,进行<SDK>\tools目录,键入命令:android,搞定。 以上三种方式,都会弹出Android SDK and AVD Manager窗口。进入窗口,对左边的菜单进行简要的说明: “Virtual Devices”:新建AVD(安装之前,确认Available Packages里的组件已安装,新建名为:my_dav);“Installed Packages”:已安装的组件包;“Available Packages”:可下载安装的组件包(如果你不确认安装哪个,请参考:http://androidappdocs.appspot.com/sdk/installing.html#which,建议全部选中,安装需要一点时间)。 所有的一切都已准备完毕了,只欠东风了。 具体的HelloWorld的开发,我也就不在此费口舌了,可参考官方:http://androidappdocs.appspot.com/resources/tutorials/hello-world.html,相当的详细。附上我的工程压缩包HelloAndroid.rar 运行时,右击项目“Run As”-->“Android Application”。 同时本人还参考了另外一个文档,下面会有下载链接这个文档对初学者帮助也是非常的大,如果是刚入门的人,第一次接触Android最好下载看看,本人今天也是读了好几遍才慢慢把环境及第一个程序运行出来的。 附件:http://down.51cto.com/data/2357674 本文转自 646676684 51CTO博客,原文链接:http://blog.51cto.com/2402766/509865,如需转载请自行联系原作者

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

Hadoop集群(一) Zookeeper搭建

作为Hadoop初学者,自然要从安装入手。而hadoop的优势就是分布式,所以,也一定要安装分布式的系统。 整体安装步骤,包括Zookeeper+HDFS+Hbase,为了文章简洁,我会分三篇blog记录我的安装步骤。 本文记录的是集群环境准备,zookeeper的安装步骤。 ~~~~~~~~~~~环境准备部分~~~~~~~~~~~~~~~~~ IP部署规划(准备了三个虚拟机,操作系统是Centos6.7) Zookeeper主机分配 1 2 3 192.168.67.101c6701 192.168.67.102c6702 192.168.67.103c6703 HDFS主机分配 1 2 3 192.168.67.101c6701 --Namenode+datanode 192.168.67.102c6702 --datanode 192.168.67.103c6703 --datanode Hbase主机分配 1 2 3 192.168.67.101c6701 --Master+region 192.168.67.102c6702 --region 192.168.67.103c6703 --region 1. 为了分别管理各个服务,我为每个服务,都单独创建了用户. 创建的用户有: 1 2 3 zk hdfs hbase 2. 为每一个用户创建ssh免密,并分发到全部节点,这样,我就只在C6701上执行命令,通过远程的方式安装C6702和C6703 1 ssh-keygen-trsa-f~/.ssh/id_rsa 拷贝密钥到全部节点即可(只有c6701访问02和03不需要密码,反向访问是需要密码的) 1 2 3 ssh-copy-idc6701 ssh-copy-idc6702 ssh-copy-idc6703 3. 强调一下,/etc/hosts 需要设置 1 2 3 4 [root@c6701~]#more/etc/hosts 192.168.67.101c6701.orgc6701 192.168.67.102c6702.orgc6702 192.168.67.103c6703.orgc6703 4. 下面在C6701执行,中间会调用ssh远程执行一些命令,验证ssh免密是否生效 1 2 sshc6702 "cat/proc/cpuinfo" sshc6702 "hostname" 5. 下载安装软件(内网地址) 1 2 3 4 5 6 cd/tmp/software wgethttp://192.21.104.48/deploy/jdk-8u144-linux-x64.tar.gz wgethttp://192.21.104.48/deploy/zookeeper-3.4.6.tar.gz wgethttp://192.21.104.48/deploy/hbase-1.1.3.tar.gz wgethttp://192.21.104.48/deploy/hadoop-2.6.0-EDH-0u2.tar.gz wgethttp://192.21.104.48/deploy/hadoop-2.7.1.tar.gz 6. 安装JDK,全部节点都要安装 1 #tar-xzvfjdk-8u144-linux-x64.tar.gz-C/usr/ local 7. 添加下面信息到.bash_profile 1 2 3 4 5 exportJAVA_HOME=/usr/ local /jdk1.8.0_144 exportJRE_HOME=/usr/ local /jdk1.8.0_144/jre exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH exportPATH=$JAVA_HOME/bin:$PATH source/etc/profile 8. 检查版本信息 1 2 3 4 #java-version javaversion "1.8.0_144" Java(TM)SERuntimeEnvironment(build1.8.0_144-b01) JavaHotSpot(TM)64- Bit ServerVM(build25.144-b01,mixedmode) ~~~~~~~~~~~zookeeper的安装部分~~~~~~~~~~~~~~~~~ 1. 在C6701安装Zookeeper 1 2 3 4 5 useraddzk echo "zk:zk" |chpasswd su-zk mkdirzk tar-zxvf/tmp/software/zookeeper-3.4.6.tar.gz-C/home/zk/zk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ~~~~~~~~~~~~~zoo.cfg的配置~~~~~~~~~~~~~~~ $pwd /home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg $cat/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg|grep-v '^#' tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/log clientPort=2181 autopurge.snapRetainCount=3 autopurge.purgeInterval=6 server.1=c6701:2888:3888 server.2=c6702:2888:3888 server.3=c6703:2888:3888 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. 根据zoo.cfg创建data和log两个文件夹 1 2 3 4 5 #mkdir-p/data/zookeeper/data #mkdir-p/data/zookeeper/log #chown-Rzk:zk/data/zookeeper #chown-Rzk:zk/data/zookeeper/data #chown-Rzk:zk/data/zookeeper/log 3.在zookeeper的目录中,创建上述两个文件夹。进入zkdata文件夹,创建文件myid,填入1。这里写入的1,是在zoo.cfg文本中的server.1中的1。当我们把所有文件都配置完毕,我们把hadoop1中yarn目录复制到其它机器中,我们在修改每台机器中对应的myid文本,hadoop2中的myid写入2。其余节点,安照上面配置,依此写入相应的数字。Zkdatalog文件夹,是为了指定zookeeper产生日志指定相应的路径。 1 #su-zk-c "echo1>/data/zookeeper/data/myid" 4. 添加环境变量,在/etc/profile目录中,将ZOOKEEPER_HOME/bin在原有的PATH后面加入":$ZOOKEEPER_HOME/bin" 关于环境变量修改/etc目录下的profile文件,也可以在根目录下的.bashrc目录下添加环境变量。这两者有什么区别:.bashrc是对当前目录用户的环境变量,profile文件是对所有用户都开放的目录。当系统加载文件中,先从profile找相应的路劲,如果没有会在.bashrc文件中找对应的环境变量路径。这两者大家稍至了解。 然后 source /etc/profile 5. 安装c6702的zookeeper 1 2 #sshc6702 "useraddzk" #sshc6702 "echo" zk:zk "|chpasswd" 为zk用户ssh免密 1 #ssh-copy-idzk@c6702 拷贝软件 1 2 #scp-r/tmp/software/hadoop-*root@c6702:/tmp/software #sshc6702 "chmod777/tmp/software/*" 创建目录,解压软件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #sshzk@c6702 "mkdirzk" #sshzk@c6702 "tar-zxvf/tmp/software/zookeeper-3.4.6.tar.gz-C/home/zk/zk" #sshzk@c6702 "ls-alzk" #sshzk@c6702 "ls-alzk/zookeeper*" #sshzk@c6702 "rm/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg" #scp-r/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfgzk@c6702:/home/zk/zk/zookeeper-3.4.6/conf/. #sshzk@c6702 "cat/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg|grep-v'^#'" 根据zoo.cfg创建目录 #sshc6702 "mkdir-p/data/zookeeper/data" #sshc6702 "chown-Rzk:zk/data/zookeeper" #sshc6702 "chown-Rzk:zk/data/zookeeper/data" #sshc6702 "mkdir-p/data/zookeeper/log" #sshc6702 "chown-Rzk:zk/data/zookeeper/log" 创建文件myid,填入2 sshzk@c6702 "echo2>/data/zookeeper/data/myid" 6. 安装c6703的zookeeper 1 2 #sshc6703 "useraddzk" #sshc6703 "echo" zk:zk "|chpasswd" 为zk用户ssh免密 1 ssh-copy-idzk@c6703 拷贝软件 1 2 #scp-r/tmp/software/hadoop-*root@c6703:/tmp/software #sshc6703 "chmod777/tmp/software/*" 创建目录,解压软件 1 2 3 4 5 6 7 #sshzk@c6703 "mkdirzk" #sshzk@c6703 "tar-zxvf/tmp/software/zookeeper-3.4.6.tar.gz-C/home/zk/zk" #sshzk@c6703 "ls-alzk" #sshzk@c6703 "ls-alzk/zookeeper*" #sshzk@c6703 "rm/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg" #scp-r/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfgzk@c6703:/home/zk/zk/zookeeper-3.4.6/conf/. #sshzk@c6703 "cat/home/zk/zk/zookeeper-3.4.6/conf/zoo.cfg|grep-v'^#'" 根据zoo.cfg创建目录 1 2 3 4 5 6 7 #sshc6703 "mkdir-p/data/zookeeper/data" #sshc6703 "chown-Rzk:zk/data/zookeeper" #sshc6703 "chown-Rzk:zk/data/zookeeper/data" #sshc6703 "mkdir-p/data/zookeeper/log" #sshc6703 "chown-Rzk:zk/data/zookeeper/log" 创建文件myid,填入3 sshzk@c6703 "echo3>/data/zookeeper/data/myid" 7. 启动ZK 1 2 /home/zk/zk/zookeeper-3.4.6/bin/zkServer.shstart /home/zk/zk/zookeeper-3.4.6/bin/zkServer.shstatus 远程启动命令 1 2 3 4 sshzk@c6702 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\start" sshzk@c6703 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\start" sshzk@c6702 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\status" sshzk@c6703 "/home/zk/zk/zookeeper-3.4.6/bin/zkServer.sh\status" 8. 没有全部启动三个ZK前的状态 1 2 3 4 [vagrant@c7003bin]$./zkServer.shstatus ZooKeeperJMXenabled by default Usingconfig:/home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfg Errorcontactingservice.It is probably not running. 9. 需要将三个ZK全启动之后,才能选举出leader 1 2 3 4 5 6 7 8 $./zkServer.shstatus ZooKeeperJMXenabled by default Usingconfig:/home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode:follower [vagrant@c7002bin]$./zkServer.shstatus ZooKeeperJMXenabled by default Usingconfig:/home/vagrant/zookeeper-3.4.10/bin/../conf/zoo.cfg Mode:leader =======2018.1.13更新========== 客户端连接方式 客户端是随机顺序的方式连接server的,无法指定,或者优先读哪个一个zookeeper server。 ./zkCli.sh -server c6701:2181,c6702:2181,c6703:2181 输出如下: 第一次连接,连接到c6701上 1 2 3 4 5 6 7 8 9 10 11 [zookeeper@c6702bin]$/usr/ local /hadoop/zookeeper-3.4.6/bin/zkCli.sh-serverc6701:2181,c6702:2181,c6703:2181 Connecting to c6701:2181,c6702:2181,c6703:2181 ...... 2018-01-1121:07:30,797[myid:]-INFO[main:ZooKeeper@438]-Initiatingclient connection ,connectString=c6701:2181,c6702:2181,c6703:2181sessionTimeout=30000watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b4bc1e Welcome to ZooKeeper! 2018-01-1121:07:30,830[myid:]-INFO[main-SendThread(c6701.python279.org:2181):ClientCnxn$SendThread@975]-Openingsocket connection to serverc6701.python279.org/192.168.67.101:2181.Will not attempt to authenticateusingSASL(unknownerror) JLinesupport is enabled 2018-01-1121:07:30,873[myid:]-INFO[main-SendThread(c6701.python279.org:2181):ClientCnxn$SendThread@852]-Socket connection established to c6701.python279.org/192.168.67.101:2181,initiatingsession 2018-01-1121:07:30,916[myid:]-INFO[main-SendThread(c6701.python279.org:2181):ClientCnxn$SendThread@1235]-Sessionestablishmentcomplete on serverc6701.python279.org/192.168.67.101:2181,sessionid=0x160e70285f70001,negotiatedtimeout=30000 WATCHER:: WatchedEventstate:SyncConnectedtype:Nonepath: null 第二次连接,连接到c6702上 1 2 3 4 5 6 7 8 9 10 Connecting to c6701:2181,c6702:2181,c6703:2181 ...... 2018-01-1121:10:18,442[myid:]-INFO[main:ZooKeeper@438]-Initiatingclient connection ,connectString=c6701:2181,c6702:2181,c6703:2181sessionTimeout=30000watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b4bc1e Welcome to ZooKeeper! 2018-01-1121:10:18,489[myid:]-INFO[main-SendThread(c6702.python279.org:2181):ClientCnxn$SendThread@975]-Openingsocket connection to serverc6702.python279.org/192.168.67.102:2181.Will not attempt to authenticateusingSASL(unknownerror) JLinesupport is enabled 2018-01-1121:10:18,508[myid:]-INFO[main-SendThread(c6702.python279.org:2181):ClientCnxn$SendThread@852]-Socket connection established to c6702.python279.org/192.168.67.102:2181,initiatingsession 2018-01-1121:10:18,561[myid:]-INFO[main-SendThread(c6702.python279.org:2181):ClientCnxn$SendThread@1235]-Sessionestablishmentcomplete on serverc6702.python279.org/192.168.67.102:2181,sessionid=0x260e70284650002,negotiatedtimeout=30000 WATCHER:: WatchedEventstate:SyncConnectedtype:Nonepath: null 至此,基础环境部署完。并且zookeeper也安装完成。下面我们会在下一篇文章中,继续安装HDFS。 本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/1971241,如需转载请自行联系原作者

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

Docker的基础环境搭建

1.升级系统的内核 1 2 3 cd /etc/yum .repos.d/ wgethttp: //www .hop5. in /yum/el6/hop5 .repo yum install kernel-ml-aufskernel-ml-aufs-devel-y 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 default =0 set to0andcheckCentos &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& [root@oldboy~]#vim/etc/grub.conf #grub.confgeneratedbyanaconda # #Notethatyoudonothavetorerungrubaftermakingchangestothisfile #NOTICE:Youhavea/bootpartition.Thismeansthat #allkernelandinitrdpathsarerelativeto/boot/,eg. #root(hd0,0) #kernel/vmlinuz-versionroroot=/dev/sda3 #initrd/initrd-[generic-]version.img #boot=/dev/sda default =0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu titleCentOS(3.10.5-3.el6.x86_64) root(hd0,0) kernel/vmlinuz-3.10.5-3.el6.x86_64roroot=UUID=7b76340c-8d26-421c-b2bb-802770973f88rd_NO_LU KSrd_NO_LVM.UTF-8rd_NO_MDSYSFONT=latarcyrheb-sun16crashkernel=autoKEYBOARDTYPE=pcKEY TABLE=usrd_NO_DMrhgbquiet initrd/initramfs-3.10.5-3.el6.x86_64.img titleCentOS6(2.6.32-573.el6.x86_64) 1 2 3 4 5 6 7 8 然后重启 reboot 检查系统内核: [root@oldboy~] #uname-r 3.10.5-3.el6.x86_64 查看内核是否支持aufs [root@oldboy~] #grepaufs/proc/filesystems nodevaufs 2.关闭selinux 1 2 3 4 [root@oldboy~] #getenforce Disabled 没有的话关闭selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 3.安装docker 1 2 3 在FedoraEPEL源中已经提供了docker-io包,下载安装epel: rpm-ivhhttp: //mirrors .sohu.com /fedora-epel/6/x86_64/epel-release-6-8 .noarch.rpm sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum .repos.d /epel .repo 4.yum 安装docker-io 1 yum-y install docker-io 5.启动Docker 1 2 3 4 [root@oldboy~] #servicedockerstart Startingcgconfigservice:[确定] Startingdocker:[确定] [root@oldboy~] # 6.查看docker的版本 1 2 3 4 5 6 7 8 9 10 11 12 [root@oldboy~] #dockerversion Clientversion:1.7.1 ClientAPIversion:1.19 Goversion(client):go1.4.2 Gitcommit(client):786b29d /1 .7.1 OS /Arch (client):linux /amd64 Serverversion:1.7.1 ServerAPIversion:1.19 Goversion(server):go1.4.2 Gitcommit(server):786b29d /1 .7.1 OS /Arch (server):linux /amd64 [root@oldboy~] # 7.查看Docker的日志 1 2 3 4 5 6 7 8 9 10 11 12 [root@oldboy~] #cat/var/log/docker \n2016年08月02日星期二17:08:53CST\n time = "2016-08-02T17:08:53.628209179+08:00" level=infomsg= "ListeningforHTTPonunix(/var/run/docker.sock)" time = "2016-08-02T17:08:53.765733247+08:00" level=warningmsg= "Runningmodprobebridgenf_natfailedwithmessage:insmod/lib/modules/3.10.5-3.el6.x86_64/kernel/net/llc/llc.ko\ninsmod/lib/modules/3.10.5-3.el6.x86_64/kernel/net/802/stp.ko\ninstall/sbin/modprobe--ignore-installbridge&&/sbin/sysctl-q-wnet.bridge.bridge-nf-call-arptables=0net.bridge.bridge-nf-call-iptables=0net.bridge.bridge-nf-call-ip6tables=0\ninsmod/lib/modules/3.10.5-3.el6.x86_64/kernel/net/bridge/bridge.ko\ninsmod/lib/modules/3.10.5-3.el6.x86_64/kernel/net/netfilter/nf_conntrack.ko\ninsmod/lib/modules/3.10.5-3.el6.x86_64/kernel/net/netfilter/nf_nat.ko\n,error:exitstatus1" time = "2016-08-02T17:08:54.018750099+08:00" level=warningmsg= "Yourkerneldoesnotsupportswapmemorylimit." time = "2016-08-02T17:08:54.019550061+08:00" level=infomsg= "Loadingcontainers:start." time = "2016-08-02T17:08:54.019778904+08:00" level=infomsg= "Loadingcontainers:done." time = "2016-08-02T17:08:54.019801548+08:00" level=infomsg= "Daemonhascompletedinitialization" time = "2016-08-02T17:08:54.019823924+08:00" level=infomsg= "Dockerdaemon" commit= "786b29d/1.7.1" execdriver=native-0.2graphdriver=aufsversion=1.7.1 time = "2016-08-02T17:10:12.131694594+08:00" level=infomsg= "GET/v1.19/version" [root@oldboy~] # 本文转自 小小三郎1 51CTO博客,原文链接:http://blog.51cto.com/wsxxsl/1833624,如需转载请自行联系原作者

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

开源论坛之discourse搭建

快2个月没写博客,最近一个是忙着开发docker平台,另外一个是接手了公司私有云,所以比较忙。 公司最近有个新项目,想弄个技术的问答论坛,挑选了半天,选择ruby语言的discourse,这个是完全开源的,界面简洁,支持中文,有管理后台,满足需求。 discourse的地址是https://www.discourse.org 界面如下 下面是安装过程 系统环境 官方推荐使用ubuntu,并且安装的程序也是支持ubuntu系统,docker安装模式,所以我选择了云主机ubuntu 14.04系统,discourse是最新的1.5.0版本。 安装地址可以参考https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md 1、更新源 1 apt-getupdate 2、安装依赖软件 1 apt-get install rubygit 3、安装docker 1 wget-qO-https: //get .docker.com/|sh 安装完成后可以使用docker version查看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 root@i-chxjfvpy: /tmp #dockerversion Client: Version:1.9.1 APIversion:1.21 Goversion:go1.4.2 Gitcommit:a34a1d5 Built:FriNov2013:12:04UTC2015 OS /Arch :linux /amd64 Server: Version:1.9.1 APIversion:1.21 Goversion:go1.4.2 Gitcommit:a34a1d5 Built:FriNov2013:12:04UTC2015 OS /Arch :linux /amd64 当前我的是1.9.1版本 4、安装discourse 1 2 3 4 mkdir /data/discourse gitclonehttps: //github .com /discourse/discourse_docker .git /data/discourse cd /data/discourse cp samples /standalone .ymlcontainers /app .yml ps:默认官方是放入/var目录里,我这里放入/data是因为这个目录是我云主机挂载的盘 1 2 3 4 5 6 7 8 9 10 root@i-chxjfvpy:~ #df-h FilesystemSizeUsedAvailUse%Mountedon /dev/vda1 18G1.8G15G11%/ none4.0K04.0K0% /sys/fs/cgroup udev3.9G8.0K3.9G1% /dev tmpfs799M412K799M1% /run none5.0M05.0M0% /run/lock none3.9G03.9G0% /run/shm none100M0100M0% /run/user /dev/vdb1 193G60M183G1% /data 5、修改discourse配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 root@i-chxjfvpy: /data/discourse #grep-v"^#"containers/app.yml|grep-v"^#"|sed'/^$/d' templates: - "templates/postgres.template.yml" - "templates/redis.template.yml" - "templates/web.template.yml" - "templates/sshd.template.yml" - "templates/web.ratelimited.template.yml" - "templates/web.china.template.yml" expose: - "80:80" #fwdhostport80tocontainerport80(http) - "2222:22" #fwdhostport2222tocontainerport22(ssh) params: db_default_text_search_config: "pg_catalog.english" db_shared_buffers: "2GB" db_work_mem: "40MB" env : LANG:en_US.UTF-8 UNICORN_WORKERS:6 DISCOURSE_DEVELOPER_EMAILS: 'xxx@163.com' DISCOURSE_HOSTNAME: 'discuss.xxx.net' DISCOURSE_SMTP_ADDRESS:smtp.163.com #(mandatory) DISCOURSE_SMTP_PORT:25 #(optional) DISCOURSE_SMTP_USER_NAME:xxx #(optional) DISCOURSE_SMTP_PASSWORD:123123 #(optional,WARNINGthechar'#'inpwcancauseproblems!) DISCOURSE_SMTP_AUTHENTICATION:login DISCOURSE_SMTP_OPENSSL_VERIFY_MODE:none DISCOURSE_SMTP_ENABLE_START_TLS: false #(optional,defaulttrue) volumes: -volume: host: /data/discourse/shared/standalone guest: /shared -volume: host: /data/discourse/shared/standalone/log/var-log guest: /var/log hooks: after_code: - exec : cd :$home /plugins cmd: -gitclonehttps: //github .com /discourse/docker_manager .git run: - exec : echo "Beginningofcustomcommands" - exec : echo "Endofcustomcommands" - exec : awk -F\ #'{print$1;}'~/.ssh/authorized_keys|awk'BEGIN{print"AuthorizedSSHkeysforthiscontainer:";}NF>=2{print$NF;}' 下面是需要修改的 1 2 3 4 5 6 7 8 9 DISCOURSE_DEVELOPER_EMAILS是你邮件地址; DISCOURSE_HOSTNAME是你web端打开的地址,可以是公网IP,也可以是dns域名; DISCOURSE_SMTP_ADDRESS、DISCOURSE_SMTP_PORT、DISCOURSE_SMTP_USER_NAME、DISCOURSE_SMTP_PASSWORD是你邮箱信息,这个邮箱是用户注册或其他行为时,发送给用户进行验证的邮箱,其中密码DISCOURSE_SMTP_PASSWORD里不能包含 #,否则会被识别有问题; 默认authentication是plain,但我测试使用163邮箱的话,无法登陆,所以改为login; 默认enable_starttls_auto是开启tls验证,我这里也给改为 false ; 另外在template里加入一行 - "templates/web.china.template.yml" 不加入的话,默认使用ruby的库是国外的ruby.org镜像源,加上这个后是使用国内taobao的ruby镜像源 具体配置参考注释,比如db_shared_buffers、db_work_mem、UNICORN_WORKERS根据你内存来配置。 6、生成镜像 默认是先下载一个公共的discourse/discourse镜像,然后会根据你的配置生成一个本地的镜像local_discourse/app,如下 1 2 3 4 root@i-su8g5dng: /tmp #dockerimages REPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE local_discourse /app latest4272aa220d692hoursago1.877GB discourse /discourse 1.0.15cb7b58c22b112weeksago1.265GB 下面是生成的命令 1 . /launcher bootstrapapp 1 2 3 4 86c397191c205624ded7181c06b1d73ea1856abe126a717354dc308d2964282a cfbab5cb2ff9745616cb0e604c47644d2a7041445fda6b0da0aa697714bf466b Successfullybootstrapped,tostartupuse. /launcher startapp root@i-chxjfvpy: /data/discourse #./launcherstartapp 然后使用./launcher start app启动 1 2 3 root@i-chxjfvpy: /data/discourse #dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES d0b519f15db7local_discourse /app "/sbin/boot" 35secondsagoUp33seconds0.0.0.0:80->80 /tcp ,0.0.0.0:2222->22 /tcp app 之后直接在web里输入域名或者ip就可以直接访问 7、配置管理员用户 参考https://meta.discourse.org/t/create-admin-account-from-console/17274 或者直接按照下面操作 进入容器 1 . /launcher enterapp 创建管理员账户 1 rakeadmin:create 下面是官方的介绍 1 2 3 4 5 6 7 8 9 Youwillbeasked for Email,PasswordandConfirmPassword. Afterprovidingrequiredinformationanewaccountwillbecreatedwithrandomusername. Nowyouwillbeasked:DoyouwanttograntAdminprivilegestothisaccount?(Y /n ).Pressenterto continue . Youwillseesuccessmessage:YouraccountnowhasAdminprivileges!. That'sit,youhavecreatedanewaccountwithAdminprivileges. 8、登陆验证 登陆后的界面为 9、修改为中文界面 修改后刷新,然后显示为 10、FAQ 如果遇到无法发送验证邮件,检测问题为 553 Mail from must equal authorized user 需要你修改 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1721248,如需转载请自行联系原作者

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

centos6 搭建heartbeat

Heartbeat是High-Availability Linux Project (Linux下的高可用性项目)的产物,是一套提供防止业务主机因不可避免的意外性或计划性宕机问题的高可用性软件。Heartbeat可以从Linux-HA 项目Web 站点免费获得,它提供了所有HA (高可用性)系统所需要的基本功能,如启动和停止资源、监测群集中系统的可用性、在群集中的节点间转移共享IP 地址的所有者等。它通过串行线、以太网接口或同时使用两者来监测特定服务(或多个服务)的运行状况。 Heartbeat实现了HA 功能中的核心功能——心跳,将Heartbeat软件同时安装在两台服务器上,用于监视系统的状态,协调主从服务器的工作,维护系统的可用性。它能侦测服务器应用级系统软件、硬件发生的故障,及时地进行错误隔绝、恢复;通过系统监控、服务监控、IP自动迁移等技术实现在整个应用中无单点故障,简单、经济地确保重要的服务持续高可用性。 Heartbeat采用虚拟IP地址映射技术实现主从服务器的切换对客户端透明的功能。 实验环境 centos6.5_x64 master eth0 192.168.1.128 eth1 192.168.1.129 slave eth0 192.168.1.130 eth1 192.168.1.131 vip 192.168.1.200 实验软件 epel-release-6-8.noarch.rpm nginx.x86_64 heartbeat.x86_64 软件安装 rpm -ivh epel-release-6-8.noarch.rpm yum install -y libnet heartbeat* nginx* glib* vim /etc/hosts centos6 192.168.1.128 添加两行配置 master/slave相同操作 uname -n名字 centos6-1 192.168.1.130 less /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 centos6 192.168.1.128 centos6-1 192.168.1.130 ssh-keygen -t rsa master/slave相同操作 Generating public/private rsa key pair. Enter file in which to save the key(/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. scp /root/.ssh/id_rsa.pub root@192.168.1.128:/root/.ssh/authorized_keys scp /root/.ssh/id_rsa.pub root@192.168.1.130:/root/.ssh/authorized_keysssh信任 scp /root/aa.txt root@192.168.1.128:/root/ aa.txt 100% 0 0.0KB/s 00:00 scp /root/bb.txt root@192.168.1.130:/root/ bb.txt 100% 0 0.0KB/s 00:00 如果使用scp命令没有提示输入密码表示ssh信任成功 service nginx start chkconfig --level 35 nginx on cd /usr/share/doc/heartbeat-3.0.4/ master/slave相同操作 cp authkeys ha.cf haresources /etc/ha.d/ vim /etc/ha.d/authkeys #auth 1 #1 crc #2 sha1 HI! #3 md5 Hello! 找到 #auth 1 auth 3 #1 crc #2 sha1 HI! 3 md5 Hello!改为 第一种是CRC循环冗余校验,第二种是SHA1哈希算法,第三种是MD3哈希算法 chmod 600 /etc/ha.d/authkeys vim /etc/ha.d/haresources centos6 192.168.1.200/24/eth0:0 nginx master端配置 centos6-1 192.168.1.200/24/eth0:0 nginx slave端配置 设定虚拟IP和对应的接口,并且指定启动虚拟IP时启动NGINX服务 vim /etc/ha.d/ha.cf #debugfile /var/log/ha-debug 找到 debugfile /var/log/ha-debug 改为 touch /var/log/ha-debug #logfile /var/log/ha-log 找到 logfile /var/log/ha-log改为 日志文件位置 touch /var/log/ha-log logfacility local0 #keepalive 2 找到 检查时间间隔 keepalive 2改为 #deadtime 30 找到 设定死亡时间 deadtime 30 改为 #warntime 10 找到 设定告警时间 warntime 10 改为 #initdead 120 找到 设定初始化时间 initdead 20 改为 #udpport 694 找到 udpport 694 改为 udp端口号 #ucast eth0 192.168.1.2 找到 ucast eth1 192.168.1.131 改为 master端配置eth1为心跳线ip 192.168.1.131为slave端ip ucast eth1 192.168.1.129 改为 slave端配置 eth1为心跳线ip 192.168.1.129为master端ip auto_failback on 找到启动抢占模式(主在挂了以后重新起来后备会自动切换成备)auto_failback auto_failback on改为 node centos6 指定负载节点 node centos6-1 #ping 10.10.10.254 找到 ping 192.168.1.101 改为 #respawn hacluster /usr/lib/heartbeat/ipfail 找到 respawn hacluster /usr/lib64/heartbeat/ipfail 改为 chmod 600 /etc/ha.d/ha.cf service heartbeat start master/slave端相同操作 netstat -tuplna | grep heartbeat udp 0 0 0.0.0.0:56611 0.0.0.0:* 6831/heartbeat: wri udp 0 0 0.0.0.0:694 0.0.0.0:* 6831/heartbeat: wri ps -ef | grep heartbest root 8034 8015 0 00:27 pts/0 00:00:00 grep heartbest tail -f /var/log/ha-log ip-request-resp(default)[12892]: 2017/10/25_01:25:59 received ip-request-resp 192.168.1.200/24/eth0:0 OK yes ResourceManager(default)[12915]: 2017/10/25_01:26:00 info: Acquiring resource group: centos6 192.168.1.200/24/eth0:0 nginx /usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.1.200)[12943]: 2017/10/25_01:26:00 INFO: Resource is stopped ResourceManager(default)[12915]: 2017/10/25_01:26:00 info: Running /etc/ha.d/resource.d/IPaddr 192.168.1.200/24/eth0:0 start IPaddr(IPaddr_192.168.1.200)[13076]: 2017/10/25_01:26:00 INFO: Adding inet address 192.168.1.200/24 with broadcast address 192.168.1.255 to device eth0 (with label eth0:0) IPaddr(IPaddr_192.168.1.200)[13076]: 2017/10/25_01:26:00 INFO: Bringing device eth0 up IPaddr(IPaddr_192.168.1.200)[13076]: 2017/10/25_01:26:00 INFO: /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-192.168.1.200 eth0 192.168.1.200 auto not_used not_used ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:45:17:73 brd ff:ff:ff:ff:ff:ff inet 192.168.1.129/24 brd 192.168.1.255 scope global eth1 inet6 fe80::20c:29ff:fe45:1773/64 scope link valid_lft forever preferred_lft forever 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:45:17:69 brd ff:ff:ff:ff:ff:ff inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0:0 inet6 fe80::20c:29ff:fe45:1769/64 scope link valid_lft forever preferred_lft forever master端 ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:3d:5b:1b brd ff:ff:ff:ff:ff:ff inet 192.168.1.130/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0:0 inet6 fe80::20c:29ff:fe3d:5b1b/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:3d:5b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.1.131/24 brd 192.168.1.255 scope global eth1 inet6 fe80::20c:29ff:fe3d:5b25/64 scope link valid_lft forever preferred_lft forever slave端 看到eth0:0 说明配置成功 echo nginx_master > /usr/share/nginx/html/index.htmlmaster端 echo nginx_slave > /usr/share/nginx/html/index.html slave端 nginx -s reload

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

centos7搭建FTP

1. 安装vsftpd #安装vsftpd yum install -y vsftpd #设置开机启动 systemctl enable vsftpd.service # 重启 service vsftpd restart # 查看vsftpd服务的状态 systemctl status vsftpd.service 2. 配置vsftpd.conf #备份配置文件 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #执行以下命令 sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf' #添加下列内容到vsftpd.conf末尾 vi /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf use_localtime=YES listen_port=21 chroot_local_user=YES idle_session_timeout=300 guest_enable=YES guest_username=vsftpd user_config_dir=/etc/vsftpd/vconf data_connection_timeout=1 virtual_use_local_privs=YES pasv_enable=YES pasv_min_port=10060 pasv_max_port=10070 accept_timeout=5 connect_timeout=1 allow_writeable_chroot=YES 3. 建立用户文件 #第一行用户名,第二行密码,不能使用root为用户名(奇数行用户名,偶数行密码,这里用户名是test,密码为123456) vi /etc/vsftpd/virtusers test 123456 4. 生成用户数据文件 db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取 chmod 600 /etc/vsftpd/virtusers.db 5. 修改/etc/pam.d/vsftpd文件 # 修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak # 将auth及account的所有配置行均注释掉(每行前面加 # ) vi /etc/pam.d/vsftpd auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers # 如果系统为32位,上面改为lib 6. 新建系统用户vsftpd,用户目录为/home/vsftpd #用户登录终端设为/bin/false(即:使之不能登录系统) useradd vsftpd -d /home/vsftpd -s /bin/false chown -R vsftpd:vsftpd /home/vsftpd 7.建立虚拟用户个人配置文件 mkdir /etc/vsftpd/vconf cd /etc/vsftpd/vconf #这里建立test虚拟用户配合文件 touch test #建立用户根目录 mkdir -p /home/vsftpd/test/ #更改用户目录权限 sudo chmod -R 777 /home/vsftpd/test #编辑chris用户配置文件,内容如下,其他用户类似 vi test local_root=/home/vsftpd/test/ write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES 8. 防火墙设置 vi /etc/sysconfig/iptables #编辑iptables文件,添加如下内容,开放21,10060-10070端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -p tcp --dport 10060:10070 -j ACCEPT 9. 重启vsftpd服务器 service vsftpd restart 10.使用ftp软件连接测试 只需填写服务器ip,ftp帐号密码,不用填端口 注意:阿里服务器需要在安全组规则中将10060/10070端口,21/22端口加入白名单,不开放端口shell都连不上。 参考地址:http://blog.csdn.net/the_victory/article/details/52192085 原文有写小问题,我做了修改

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

ElasticSearch + Logstash + Kibana 搭建笔记

ElasticSearch 安装 1、下载 ElasticSearch,本文使用的版本为 5.5.1。 2、配置 path.data: /data/es #数据路径 path.logs: /data/logs/es #日志路径 network.host: 本机地址 #服务器地址 http.port: 9200 #端口 如果不修改配置的话,默认的数据和日志都位于elasticsearch文件夹下。 默认地址会使用 192.168.0.1 的地址,此时ElasticSearch运行于开发模式,只能从本机访问。如果修改为生产地址,就会进入生产模式,并且运行 bootstrap check 。 3、启动 ./bin/elasticsearch 注意,elasticsearch 不能使用 root 用户启动,使用其他用户启动,要注意有文件夹的读写权限。 我在安装过程中还出现了下面几个警告信息 [2017-08-07T09:13:59,951][WARN ][o.e.b.JNANatives ] unable to install syscall filter: java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in at org.elasticsearch.bootstrap.SystemCallFilter.linuxImpl(SystemCallFilter.java:350) ~[elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.SystemCallFilter.init(SystemCallFilter.java:638) ~[elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.JNANatives.tryInstallSystemCallFilter(JNANatives.java:245) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Natives.tryInstallSystemCallFilter(Natives.java:113) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:111) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:194) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.cli.Command.main(Command.java:88) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.5.1.jar:5.5.1] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.5.1.jar:5.5.1] [2017-08-01T14:10:57,843][WARN ][o.e.b.BootstrapChecks ] [VAfWGGZ] max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536] [2017-08-01T14:10:57,844][WARN ][o.e.b.BootstrapChecks ] [VAfWGGZ] max number of threads [1024] for user [maserati] is too low, increase to at least [2048] [2017-08-01T14:10:57,844][WARN ][o.e.b.BootstrapChecks ] [VAfWGGZ] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] [2017-08-01T14:10:57,844][WARN ][o.e.b.BootstrapChecks ] [VAfWGGZ] system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk 针对文件描述符,调成 65536 ulimit -n 65536,如果提示没有权限,则可以在用户的 .bash_profile 中增加一行,退出用户重新登陆就可以。 针对 max number of threads 问题,修改 /etc/security/limits.d/90-nproc.conf 。 * soft nproc 2048 root soft nproc unlimited 针对 max virtual memory areas ,修改 /etc/sysctl.conf。如果没有,就新增一行。 vm.max_map_count = 262144 针对 system_call_filter 可以,通过修改配置文件(elasticsearch.yml)关掉这个参数。 bootstrap.system_call_filter: false 4、访问,出现下面的结果表示启动成功。 [root@iZ627x15h6pZ cloud]# curl http://localhost:9200 { "name" : "VAfWGGZ", "cluster_name" : "elasticsearch", "cluster_uuid" : "J9Tm5R2zRt2PkOSwtXj5Wg", "version" : { "number" : "5.5.1", "build_hash" : "19c13d0", "build_date" : "2017-07-18T20:44:24.823Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" } Logstash 安装 1、下载并解压 Logstash,本文用的 Logstash-5.5.1 版本 2、创建一个简单的配置文件 logstash_test.conf input { stdin { } } output { stdout { codec => rubydebug } } 3、启动 logstash ./bin/logstash -f logstash_test.conf 出现这些信息,表示启动成功了。 [2017-08-01T13:58:38,437][INFO ][logstash.pipeline ] Pipeline main started The stdin plugin is now waiting for input: [2017-08-01T13:58:38,532][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600} 4、与ElasticSearch配合。 Kibana 安装 1、下载 Kibana 2、修改配置 //启动端口 因为端口受限 所以变更了默认端口 server.port: 5601 //启动服务的ip server.host: "本机ip" //elasticsearch地址 elasticsearch.url: "http://localhost:9200” 3、启动程序 ./bin/kibana 4、访问查看Kibana启动是否成功,并检索查看数据 http://localhost:5601 参考资料: 1、Download Logstash 2、ElasticSearch Download 3、ElasticSearch 5.0启动出现的错误 4、Ulimit详解 5、ELK+Filebeat 安装配置入门

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat

Apache Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。