首页 文章 精选 留言 我的

精选列表

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

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,如需转载请自行联系原作者

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

开源论坛之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

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

腾讯云软件源

腾讯云软件源

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

Rocky Linux

Rocky Linux

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

用户登录
用户注册