php 有没有 rails类似的框架
Akelos
Akelos PHP框架是一个类似于Ruby on Rails的框架,是基于MVC(Model View Controller)设计模式的web应用开发平台。由于Akelos对服务器唯一的要求就是支持PHP,与其他类似框架相比它的代码应用写得较少,因此它可以在大多数共享主机服务器上运行,它通过约定俗成代替配置来帮助开发人员减少代码的编写数量。Akelos可以支持URL的改写、数据库移植等内容,它的主要目的在于,帮助程序员开发基于数据库的多语言Web应用程序,依据MVC模式加快复杂的 web 应用程序的创建。
CakePHP Framework
CakePHP 无论对于初学者还是职业PHP开发者都是很好的选择。它基于与Ruby on Rails同样的原则而设计,它十分注重快速开发——这使得它成为一个非常好的用于RAD的开发框架。它快速增长的支持系统,简洁性和可测量性使得 CakePHP成为今天可用的最受欢迎的PHP开发框架之一。
CodeIgniter PHP Framework
CodeIgniter 是一套小巧但功能强大的PHP 框架,做为一个简单而"优雅"的工具包,它是一套专为PHP 开发者建立功能完善的Web 应用程序。如果你是一个使用虚拟主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦那些难而且效率不高的框架,你一定会喜欢CodeIgniter。
Fusebox Framework
Fusebox是构建ColdFusion和PHP Web 应用程序最流行的框架。它的目的是使应用程序更易于创建和维护,并使团队开发更加容易。
Php On Trax
Php On Trax是一个采用MVC架构,适用于PHP5与PHP4环境,基于Ruby on Rails框架思想的web开发与持久层框架。它包含了创建依赖于数据库的Web系统所需要做的所有事件,是Ruby on Rails框架的一个真正PHP克隆。
HPDevShell Framework
PHPDevShell是一款开源(GNU/LGPL)的快速应用开发框架,用于开发不含 Javascript的纯PHP。它有一个完整的GUI管理员后台界面。其主要目标在于开发插件一类的基于管理的应用,其中速度、安全、稳定性及弹性是最优先考虑的重点。其设计形成了一个简单的学习曲线,PHP开发者无需学习复杂的新术语。
OpenBiz PHP Framework
Openbiz Framework的设计目标是节省构建复杂应用系统的开发投入和缩短开发时间。借助于Openbiz的帮助,应用程序的开发将基于完善的MVC架构建立,以Metadata驱动为核心描述业务逻辑,支持多种ORM逻辑,并且有Openbiz Appbuilder作为图形化集成开发环境的快速开发平台。
PRADO Component-based Framework
PRADO是在PHP5环境下的一个基于事件驱动和基于组件的WEB应用研发框架。PRADO专注于建立一个代码重用和事件驱动的编程标准。如果你曾经用Delphi或者Visual Basic等这些RAD开发工具来开发Windows程序的话,那么你会发现使用PRADO来开发WEB应用是非常类似的,你可以很快就掌握PRADO来进行WEB应用的开发。
QPHP (Quick PHP) Framework
QuickPHP是用于测试和调试PHP脚本的独立Web服务器。QuickPHP不需要安装(只解压并运行),已包括PHP5,可以用来测试基本的PHP脚本。该QuickPHP服务器支持GET,POST和HEAD请求,并提供最低配置选项,只需选择你的PHP脚本的根目录,然后可以在浏览器中访问了。
Seagull PHP Framework
Seagull是个纯OOP(面向对象程序设计)框架,可用于创建web,command line(命令行)和GUI的应用程序。它采用了BSD授权,让PHP开发者可以更容易地整合并管理代码源,更快速地建立复杂的应用程序。
手工识别和拒绝爬虫的访问
相当多的爬虫对网站会造成非常高的负载,因此识别爬虫的来源IP是很容易的事情。最简单的办法就是用netstat检查80端口的连接:
netstat -nt | grep youhostip:80 | awk '{print $5}' | awk -F":" '{print $1}'| sort | uniq -c | sort -r -n
这行shell可以按照80端口连接数量对来源IP进行排序,这样可以直观的判断出来网页爬虫。一般来说爬虫的并发连接非常高。
如果使用lighttpd做Web
Server,那么就更简单了。lighttpd的mod_status提供了非常直观的并发连接的信息,包括每个连接的来源IP,访问的URL,连接状
态和连接时间等信息,只要检查那些处于handle-request状态的高并发IP就可以很快确定爬虫的来源IP了。
拒绝爬虫请求既可以通过内核防火墙来拒绝,也可以在web server拒绝,比方说用iptables拒绝:
iptables -A INPUT -i eth0 -j DROP -p tcp --dport 80 -s 8480460/24
直接封锁爬虫所在的C网段地址。这是因为一般爬虫都是运行在托管机房里面,可能在一个C段里面的多台服务器上面都有爬虫,而这个C段不可能是用户宽带上网,封锁C段可以很大程度上解决问题。
通过识别爬虫的User-Agent信息来拒绝爬虫
有很多爬虫并不会以很高的并发连接爬取,一般不容易暴露自己;有些爬虫的来源IP分布很广,很难简单的通过封锁IP段地址来解决问题;另外还有很多
各种各样的小爬虫,它们在尝试Google以外创新的搜索方式,每个爬虫每天爬取几万的网页,几十个爬虫加起来每天就能消耗掉上百万动态请求的资源,由于
每个小爬虫单独的爬取量都很低,所以你很难把它从每天海量的访问IP地址当中把它准确的挖出来。
这种情况下我们可以通过爬虫的User-Agent信息来识别。每个爬虫在爬取网页的时候,会声明自己的User-Agent信息,因此我们就可以
通过记录和分析User-Agent信息来挖掘和封锁爬虫。我们需要记录每个请求的User-Agent信息,对于Rails来说我们可以简单的在
app/controllers/applicationrb里面添加一个全局的before_filter,来记录每个请求的User-Agent信
息:
loggerinfo "HTTP_USER_AGENT #{requestenv["HTTP_USER_AGENT"]}"
然后统计每天的productionlog,抽取User-Agent信息,找出访问量最大的那些User-Agent。要注意的是我们只关注那
些爬虫的User-Agent信息,而不是真正浏览器User-Agent,所以还要排除掉浏览器User-Agent,要做到这一点仅仅需要一行
shell:
grep HTTP_USER_AGENT productionlog | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko' | sort | uniq -c | sort -r -n | head -n 100 > botlog
统计结果类似这样:
57335 HTTP_USER_AGENT Baiduspider+(+http://wwwbaiducom/search/spiderhtm)
56639 HTTP_USER_AGENT Mozilla/50 (compatible; Googlebot/21; +http://wwwgooglecom/bothtml)
42610 HTTP_USER_AGENT Mediapartners-Google
19131 HTTP_USER_AGENT msnbot/20b (+http://searchmsncom/msnbothtm)
从日志就可以直观的看出每个爬虫的请求次数。要根据User-Agent信息来封锁爬虫是件很容易的事情,lighttpd配置如下:
$HTTP["useragent"] =~ "qihoobot|^Java|Commons-HttpClient|Wget|^PHP|Ruby|Python" {
urlrewrite = ( "^/()" => "/crawlerhtml" )
}
使用这种方式来封锁爬虫虽然简单但是非常有效,除了封锁特定的爬虫,还可以封锁常用的编程语言和HTTP类库的User-Agent信息,这样就可以避免很多无谓的程序员用来练手的爬虫程序对网站的骚扰。
还有一种比较常见的情况,就是某个搜索引擎的爬虫对网站爬取频率过高,但是搜索引擎给网站带来了很多流量,我们并不希望简单的封锁爬虫,仅仅是希望降低爬虫的请求频率,减轻爬虫对网站造成的负载,那么我们可以这样做:
$HTTP["user-agent"] =~ "Baiduspider+" {
connectiondelay-seconds = 10
}
对百度的爬虫请求延迟10秒钟再进行处理,这样就可以有效降低爬虫对网站的负载了。
通过网站流量统计系统和日志分析来识别爬虫
有些爬虫喜欢修改User-Agent信息来伪装自己,把自己伪装成一个真实浏览器的User-Agent信息,让你无法有效的识别。这种情况下我们可以通过网站流量系统记录的真实用户访问IP来进行识别。
主流的网站流量统计系统不外乎两种实现策略:一种策略是在网页里面嵌入一段js,这段js会向特定的统计服务器发送请求的方式记录访问量;另一种策
略是直接分析服务器日志,来统计网站访问量。在理想的情况下,嵌入js的方式统计的网站流量应该高于分析服务器日志,这是因为用户浏览器会有缓存,不一定
每次真实用户访问都会触发服务器的处理。但实际情况是,分析服务器日志得到的网站访问量远远高于嵌入js方式,极端情况下,甚至要高出10倍以上。
现在很多网站喜欢采用awstats来分析服务器日志,来计算网站的访问量,但是当他们一旦采用Google
Analytics来统计网站流量的时候,却发现GA统计的流量远远低于awstats,为什么GA和awstats统计会有这么大差异呢?罪魁祸首就是
把自己伪装成浏览器的网络爬虫。这种情况下awstats无法有效的识别了,所以awstats的统计数据会虚高。
其实作为一个网站来说,如果希望了解自己的网站真实访问量,希望精确了解网站每个频道的访问量和访问用户,应该用页面里面嵌入js的方式来开发自己
的网站流量统计系统。自己做一个网站流量统计系统是件很简单的事情,写段服务器程序响应客户段js的请求,分析和识别请求然后写日志的同时做后台的异步统
计就搞定了。
通过流量统计系统得到的用户IP基本是真实的用户访问,因为一般情况下爬虫是无法执行网页里面的js代码片段的。所以我们可以拿流量统计系统记录的
IP和服务器程序日志记录的IP地址进行比较,如果服务器日志里面某个IP发起了大量的请求,在流量统计系统里面却根本找不到,或者即使找得到,可访问量
却只有寥寥几个,那么无疑就是一个网络爬虫。
分析服务器日志统计访问最多的IP地址段一行shell就可以了:
grep Processing productionlog | awk '{print $4}' | awk -F'' '{print $1""$2""$3"0"}' | sort | uniq -c | sort -r -n | head -n 200 > stat_iplog
然后把统计结果和流量统计系统记录的IP地址进行对比,排除真实用户访问IP,再排除我们希望放行的网页爬虫,比方Google,百度,微软msn爬虫等等。最后的分析结果就就得到了爬虫的IP地址了。以下代码段是个简单的实现示意:
whitelist = []
IOforeach("#{RAILS_ROOT}/lib/whitelisttxt") { |line| whitelist << linesplit[0]strip if line }
realiplist = []
IOforeach("#{RAILS_ROOT}/log/visit_iplog") { |line| realiplist << linestrip if line }
iplist = []
IOforeach("#{RAILS_ROOT}/log/stat_iplog") do |line|
ip = linesplit[1]strip
iplist << ip if linesplit[0]to_i > 3000 && !whitelistinclude(ip) && !realiplistinclude(ip)
end
Reportdeliver_crawler(iplist)
分析服务器日志里面请求次数超过3000次的IP地址段,排除白名单地址和真实访问IP地址,最后得到的就是爬虫IP了,然后可以发送邮件通知管理员进行相应的处理。
网站的实时反爬虫防火墙实现策略
通过分析日志的方式来识别网页爬虫不是一个实时的反爬虫策略。如果一个爬虫非要针对你的网站进行处心积虑的爬取,那么他可能会采用分布式爬取策略,
比方说寻找几百上千个国外的代理服务器疯狂的爬取你的网站,从而导致网站无法访问,那么你再分析日志是不可能及时解决问题的。所以必须采取实时反爬虫策
略,要能够动态的实时识别和封锁爬虫的访问。
要自己编写一个这样的实时反爬虫系统其实也很简单。比方说我们可以用memcached来做访问计数器,记录每个IP的访问频度,在单位时间之内,
如果访问频率超过一个阀值,我们就认为这个IP很可能有问题,那么我们就可以返回一个验证码页面,要求用户填写验证码。如果是爬虫的话,当然不可能填写验
证码,所以就被拒掉了,这样很简单就解决了爬虫问题。
用memcache记录每个IP访问计数,单位时间内超过阀值就让用户填写验证码,用Rails编写的示例代码如下:
ip_counter = Railscacheincrement(requestremote_ip)
if !ip_counter
Railscachewrite(requestremote_ip, 1, :expires_in => 30minutes)
elsif ip_counter > 2000
render :template => 'test', :status => 401 and return false
end
这段程序只是最简单的示例,实际的代码实现我们还会添加很多判断,比方说我们可能要排除白名单IP地址段,要允许特定的User-Agent通过,要针对登录用户和非登录用户,针对有无referer地址采取不同的阀值和计数加速器等等。
此外如果分布式爬虫爬取频率过高的话,过期就允许爬虫再次访问还是会对服务器造成很大的压力,因此我们可以添加一条策略:针对要求用户填写验证码的
IP地址,如果该IP地址短时间内继续不停的请求,则判断为爬虫,加入黑名单,后续请求全部拒绝掉。为此,示例代码可以改进一下:
before_filter :ip_firewall, :except => :test
def ip_firewall
render :file => "#{RAILS_ROOT}/public/403html", :status => 403 if BlackListinclude(ip_sec)
end
我们可以定义一个全局的过滤器,对所有请求进行过滤,出现在黑名单的IP地址一律拒绝。对非黑名单的IP地址再进行计数和统计:
ip_counter = Railscacheincrement(requestremote_ip)
if !ip_counter
Railscachewrite(requestremote_ip, 1, :expires_in => 30minutes)
elsif ip_counter > 2000
crawler_counter = Railscacheincrement("crawler/#{requestremote_ip}")
if !crawler_counter
Railscachewrite("crawler/#{requestremote_ip}", 1, :expires_in => 10minutes)
elsif crawler_counter > 50
BlackListadd(ip_sec)
render :file => "#{RAILS_ROOT}/public/403html", :status => 403 and return false
end
render :template => 'test', :status => 401 and return false
end
如果某个IP地址单位时间内访问频率超过阀值,再增加一个计数器,跟踪他会不会立刻填写验证码,如果他不填写验证码,在短时间内还是高频率访问,就
把这个IP地址段加入黑名单,除非用户填写验证码激活,否则所有请求全部拒绝。这样我们就可以通过在程序里面维护黑名单的方式来动态的跟踪爬虫的情况,甚
至我们可以自己写个后台来手工管理黑名单列表,了解网站爬虫的情况。
关于这个通用反爬虫的功能,我们开发一个开源的插件:https://githubcom/csdn-dev/limiter
这个策略已经比较智能了,但是还不够好!我们还可以继续改进:
1、用网站流量统计系统来改进实时反爬虫系统
还记得吗?网站流量统计系统记录的IP地址是真实用户访问IP,所以我们在网站流量统计系统里面也去操作memcached,但是这次不是增加计数
值,而是减少计数值。在网站流量统计系统里面每接收到一个IP请求,就相应的cachedecrement(key)。所以对于真实用户的IP来说,它
的计数值总是加1然后就减1,不可能很高。这样我们就可以大大降低判断爬虫的阀值,可以更加快速准确的识别和拒绝掉爬虫。
2、用时间窗口来改进实时反爬虫系统
爬虫爬取网页的频率都是比较固定的,不像人去访问网页,中间的间隔时间比较无规则,所以我们可以给每个IP地址建立一个时间窗口,记录IP地址最近
12次访问时间,每记录一次就滑动一次窗口,比较最近访问时间和当前时间,如果间隔时间很长判断不是爬虫,清除时间窗口,如果间隔不长,就回溯计算指定时
间段的访问频率,如果访问频率超过阀值,就转向验证码页面让用户填写验证码。
最终这个实时反爬虫系统就相当完善了,它可以很快的识别并且自动封锁爬虫的访问,保护网站的正常访问。不过有些爬虫可能相当狡猾,它也许会通过大量
的爬虫测试来试探出来你的访问阀值,以低于阀值的爬取速度抓取你的网页,因此我们还需要辅助第3种办法,用日志来做后期的分析和识别,就算爬虫爬的再慢,
它累计一天的爬取量也会超过你的阀值被你日志分析程序识别出来。
Nginx是一个高性能的Web和反向代理服务器,它具有有很多非常优越的特性:
作为负载均衡服务器 :Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代
理服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是CPU使用效率都比
Perlbal要好的多。
作为邮件代理服务器 :Nginx同时也是-一个非常优秀的邮件代理服务器(最早开发这个产品的目的之-也是作为邮件代理服务器),Lastfm 描述了成功并且美妙的使用经验。
Nginx安装非常的简单,配置文件非常简洁(还能够支持per语法),Bugs非 常少的服务器:
Nginx启动特别容易,并且几乎可以做到724不间断运行,即使运行数个月也不需要重新启
动。你还能够在不间断服务的情况下进行软件版本的升级。
处理静态文件,索引文件以及自动索引;
反向代理加速(无缓存), 简单的负载均衡和容错;
FastCGI,简单的负载均衡和容错;
模块化的结构。过滤器包括gzipping, byte ranges, chunked responses,以及SSiI-ilter 。
在SSI过滤器中,到同一个proxy或者FastCGI的多个子请求并发处理;
SSL和TLSSNI支持;
使用外部HTTP认证服务器重定向用户到IMAP/POP3后端;
使用外部HTTP认证服务器认证用户后连接重定向到内部的SMTP后端;
认证方法:
POP3: POP3 USER/PASS, APOP, AUTH LOGIN PL AIN CRAM-MD5;
IMAP: IMAP LOGIN;
SMTP: AUTH LOGIN PLAIN CRAM-MD5;
SSL支持;
在IMAP和POP3模式下的STARTTLS和STLS支持;
FreeBSD 3x, 4x, 5x, 6x i386; FreeBSD 5x, 6x amd64;
Linux22, 24, 26 i386; Linux 26 amd64;
Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;
MacOS X (104) PPC;
一个主进程和多个工作进程。工作进程是单线程的,且不需要特殊授权即可运行;
kqueue (FreeBSD 41+), epoll (Linux 26+), t signals (Linux 2219+), /dev/poll (Solaris711/99+), select,以及poll支持;
kqueue支持的不同功能包括EV_ _CLEAR, EV_ DISABLE (临时禁止事件),NOTE_ _LOWAT, EV_ EOF, 有效数据的数目,错误代码;
sendfile (FreeBSD 31+), sendfile (Linux 22+), sendfile64 (Linux 2421+),和sendfilev(Solaris 8 7/01+)支持;
输入过滤(FreeBSD 41+)以及TCP_ _DEFER_ ACCEPT (Linux24+)支持;
10,000 非活动的HTTP keep-alive连接仅需要25M内存。
最小化的数据拷贝操作;
基于IP和名称的虚拟主机服务;
Memcached的GET接口;
支持keep-alive和管道连接;
灵活简单的配置;
重新配置和在线升级而无须中断客户的工作进程;
可定制的访问日志,日志写入缓存,以及快捷的日志回卷;
4xx-5xx错误代码重定向;
基于PCRE的rewrite重写模块;
基于客户端IP地址和HTTP基本认证的访问控制;
PUT, DELETE,和MKCOL方法;
支持FLV (Flash视频) ;
带宽限制;
内嵌的perl
通过aio read() 1 aio _write() 的套接字工作的实验模块,仅在FreeBSD下。
对线程的实验化支持,FreeBSD 4x的实现基于rfork()
Nginx主要的英语站点是htp://sysoevru/en/
本人有自己整理大数据学习的功课,闲置着也无用了。
获取方式:
私信方式:
第一步,点击头像。
第二部:头像旁边有一个私信按钮,发送{学习资料}即可!
1、相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。在高连接并发的情况下,Nginx是Apache服务器不错的替代品 能够支持高达 50,000 个并发连接数的响应。
2、Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务 Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
3、作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器。
4、Nginx 是一个安装非常的简单 , 配置文件非常简洁(还能够支持perl语法), Bugs 非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到724不间断运行,即使运行数个月也不需要重新启动 你还能够不间断服务的情况下进行软件版本的升级 。
为了更好的指导部署与测试艺术升系统nginx网站服务器高性能同时下安全稳定运行,需要对nginx服务进行调优与加固;
本次进行Nginx服务调优加固主要从以下几个部分:
本文档仅供内部使用,禁止外传,帮助研发人员,运维人员对系统长期稳定的运行提供技术文档参考。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx作为负载均衡服务器, Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。
Nginx版本选择:
项目结构:
Nginx文档帮助: http://nginxorg/en/docs/
Nginx首页地址目录: /usr/share/nginx/html
Nginx配置文件:
localtion 请求匹配的url实是一个正则表达式:
Nginx 匹配判断表达式:
例如,匹配末尾为如下后缀的静态并判断是否存在该文件, 如不存在则404。
查看可用模块编译参数:http://nginxorg/en/docs/configurehtml
http_gzip模块
开启gzip压缩输出(常常是大于1kb的静态文件),减少网络传输;
http_fastcgi_module模块
nginx可以用来请求路由到FastCGI服务器运行应用程序由各种框架和PHP编程语言等。可以开启FastCGI的缓存功能以及将静态资源进行剥离,从而提高性能。
keepalive模块
长连接对性能有很大的影响,通过减少CPU和网络开销需要开启或关闭连接;
http_ssl_module模块
Nginx开启支持Https协议的SSL模块
Linux内核参数部分默认值不适合高并发,Linux内核调优,主要涉及到网络和文件系统、内存等的优化,
下面是我常用的内核调优配置:
文件描述符
文件描述符是操作系统资源,用于表示连接、打开的文件,以及其他信息。NGINX 每个连接可以使用两个文件描述符。
例如如果NGINX充当代理时,通常一个文件描述符表示客户端连接,另一个连接到代理服务器,如果开启了HTTP 保持连接,这个比例会更低(译注:为什么更低呢)。
对于有大量连接服务的系统,下面的设置可能需要调整一下:
精简模块:Nginx由于不断添加新的功能,附带的模块也越来越多,建议一般常用的服务器软件使用源码编译安装管理;
(1) 减小Nginx编译后的文件大小
(2) 指定GCC编译参数
修改GCC编译参数提高编译优化级别稳妥起见采用 -O2 这也是大多数软件编译推荐的优化级别。
GCC编译参数优化 [可选项] 总共提供了5级编译优化级别:
常用编译参数:
缓存和压缩与限制可以提高性能
NGINX的一些额外功能可用于提高Web应用的性能,调优的时候web应用不需要关掉但值得一提,因为它们的影响可能很重要。
简单示例:
1) 永久重定向
例如,配置 http 向 https 跳转 (永久)
nginx配置文件指令优化一览表
描述:Nginx因为安全配置不合适导致的安全问题,Nginx的默认配置中存在一些安全问题,例如版本号信息泄露、未配置使用SSL协议等。
对Nginx进行安全配置可以有效的防范一些常见安全问题,按照基线标准做好安全配置能够减少安全事件的发生,保证采用Nginx服务器系统应用安全运行;
Nginx安全配置项:
温馨提示: 在修改相应的源代码文件后需重新编译。
设置成功后验证:
应配置非root低权限用户来运行nginx服务,设置如下建立Nginx用户组和用户,采用user指令指运行用户
加固方法:
我们应该为提供的站点配置Secure Sockets Layer Protocol (SSL协议),配置其是为了数据传输的安全,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
不应使用不安全SSLv2、SSLv3协议即以下和存在脆弱性的加密套件(ciphers), 我们应该使用较新的TLS协议也应该优于旧的,并使用安全的加密套件。
HTTP Referrer Spam是垃圾信息发送者用来提高他们正在尝试推广的网站的互联网搜索引擎排名一种技术,如果他们的垃圾信息链接显示在访问日志中,并且这些日志被搜索引擎扫描,则会对网站排名产生不利影响
加固方法:
当恶意攻击者采用扫描器进行扫描时候利用use-agent判断是否是常用的工具扫描以及特定的版本,是则返回错误或者重定向;
Nginx支持webdav,虽然默认情况下不会编译。如果使用webdav,则应该在Nginx策略中禁用此规则。
加固方法: dav_methods 应设置为off
当访问一个特制的URL时,如"/nginxstatus",stub_status模块提供一个简短的Nginx服务器状态摘要,大多数情况下不应启用此模块。
加固方法:nginxconf文件中stub_status不应设置为:on
如果在浏览器中出现Nginx自动生成的错误消息,默认情况下会包含Nginx的版本号,这些信息可以被攻击者用来帮助他们发现服务器的潜在漏洞
加固方法: 关闭"Server"响应头中输出的Nginx版本号将server_tokens应设置为:off
client_body_timeout设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后Nginx返回HTTP状态码408(Request timed out)。
加固方法:nginxconf文件中client_body_timeout应设置为:10
client_header_timeout设置等待client发送一个请求头的超时时间(例如:GET / HTTP/11)。仅当在一次read中没有收到请求头,才会设为超时。超时后Nginx返回HTTP状态码408(Request timed out)。
加固方法:nginxconf文件中client_header_timeout应设置为:10
keepalive_timeout设置与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。
加固方法:nginxconf文件中keepalive_timeout应设置为:55
send_timeout设置客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,Nginx就会关闭连接。
加固方法:nginxconf文件中send_timeout应设置为:10
GET和POST是Internet上最常用的方法。Web服务器方法在RFC 2616中定义禁用不需要实现的可用方法。
加固方法:
limit_zone 配置项限制来自客户端的同时连接数。通过此模块可以从一个地址限制分配会话的同时连接数量或特殊情况。
加固方法:nginxconf文件中limit_zone应设置为:slimits $binary_remote_addr 5m
该配置项控制一个会话同时连接的最大数量,即限制来自单个IP地址的连接数量。
加固方法:nginxconf 文件中 limit_conn 应设置为: slimits 5
加固方法:
加固方法:
解决办法:
描述后端获取Proxy后的真实Client的IP获取需要安装--with-http_realip_module,然后后端程序采用JAVA(requestgetAttribute("X-Real-IP"))进行获取;
描述: 如果要使用geoip地区选择,我们需要再nginx编译时加入 --with-http_geoip_module 编译参数。
描述: 为了防止外部站点引用我们的静态资源,我们需要设置那些域名可以访问我们的静态资源。
描述: 下面收集了Web服务中常规的安全响应头, 它可以保证不受到某些攻击,建议在指定的 server{} 代码块进行配置。
描述: 为了防止某些未备案的域名或者恶意镜像站域名绑定到我们服务器上, 导致服务器被警告关停,将会对业务或者SEO排名以及企业形象造成影响,我们可以通过如下方式进行防范。
执行结果:
描述: 有时你的网站可能只需要被某一IP或者IP段的地址请求访问,那么非白名单中的地址访问将被阻止访问, 我们可以如下配置;
常用nginx配置文件解释:
(1) 阿里巴巴提供的Concat或者Google的PageSpeed模块实现这个合并文件的功能。
(2) PHP-FPM的优化
如果您高负载网站使用PHP-FPM管理FastCGI对于PHP-FPM的优化非常重要
(3) 配置Resin on Linux或者Windows为我们可以打开 resin-319/bin/httpdsh 在不影响其他代码的地方加入:-Dhttpsprotocols=TLSv12, 例如
原文地址: https://blogweiyigeektop/2019/9-2-122html
服务器类型有哪些?
机架式 刀片式 塔式 机柜式
典型服务器应用
办公OA服务器
ERP服务器
WEB服务器
数据库服务器
财务服务器
邮件服务器
打印服务器
集群服务器
无盘办公系统
无盘网吧服务器
无盘教学系统
视频监控服务器
流媒体服务器
服务器类型有哪些?
你好,服务器的品牌有:
IBM Sun 惠普 戴尔 华硕 联想
英特尔 浪潮 方正 清华同方 NEC
微星 长城 宏碁 金品 致荣 赛天
五舟 超毅定制者 曙光 ……
服务器类型解释及选购要考虑的因素
在信息化日益普遍的今天,若能拥有一台功能齐备,价格合理的服务器,将是愈来愈多人关心的课题。昔日,许多人将选购一台好的PC,当作人生大事,但随着时间流转,科技日新月异,高性能的计算机设备不断更新,价格也相对不断合理化,现今无论企业或个人,都开始有机会接触PC服务器,企业为了节约成本,增加效率,必需使用服务器,而个人因为资料储存量变大,数字接口设备不断增加,例如数字相片,图形处理,高画质游戏,数据备份…等的需求,也可能开始接触入门级服务器,因此,如何选购一台好的PC服务器,将与许多人息息相关。
首先,我们必需了解何谓PC服务器?所谓PC服务器,即是Intel架构服务器,与一些大型服务器如Mainframe, Unix架构服务器等不同,前者大多运行Windows或Linux等操作系统,使用较为普遍,后者多为专业用途,如银行,大型制造业,物流业,证券…等行业使用,一般人较少有机会接触到。一般而言,PC服务器若以外型来分,大致可分为三类:
(一) 直立式服务器(塔式服务器):
为可独立放置于桌面或地面的服务器,大都具有较多的扩充槽及硬盘空间。无需额外设备,插上电即可使用,因此使用最为广泛。
(二) 机架式服务器:
为可装上机柜之服务器,主要作用为节省空间,机台高度以1U为单位,1U约44mm,因空间较局限,扩充性较受限制,例如1U的服务器大都只有1到2个PCI扩充槽。此外,散热性能成为十分重要的因素,此时,各家厂商的功力就在此展现了。缺点是需要有机柜等设备,多为服务器用量较大的企业使用。
(三) 刀片服务器:
可算是比机架式服务器更节省空间的产品。主要结构为一大型主体机箱,内部可插上许多卡片,一张卡片即相当于一台服务器。当然,散热性在此非常重要,往往各家厂商都装上大型强力风扇来散热。此型服务器虽然空间较节省,但光是主体机箱部份可能就所费不赀,除大型企业外较少使用。
了解了服务器的种类之后,如何能选购一台适用的PC服务器呢我们可以从下列几方面来考虑:
1 稳定性能:
这是服务器最重要的因素之一。然而,对许多人来说,“稳定”似乎是个十分抽象的名词,似乎每一家服务器厂商都在强调自己的产品十分稳定。其实,“稳定”并非完全没有脉络可寻,也并非贵的产品即是稳定者,笔者提供一些小技巧以供参考:
(1) 整体组装品质: 通常较有规模的厂家所组装的产品,有一定的品管及制造流程,因此,若可打开机箱观察,便不难发现若是布线凌乱,机箱用料单薄,组件吻合度不佳或CPU, 内存及硬盘无原厂保固贴纸等,就绝对不该将之列入考虑范围。
(2)良好的散热设计: 服务器大多需要长时间运作,因此良好的散热性能是十分重要的。散热性能可以由厂商数据,散热风力强度或实际测试得知,散热良好的服务器往往有着较佳的稳定性能。
(3) 承诺售后服务内容: 对自己所出品的产品有信心的厂家,通常会提供较好的服务内容,
(4)整体口碑: 通常服务器产品口碑十分重要,选择有人推荐的品牌或市场上较老的品牌也是一种办法。但是,有时也会有新的品牌或产品也十分优良的,这些就要靠一些专家的推荐或试用测试。
(5)权威性评比推荐: 一些权威性的杂志常常会有一些评比,也不失为一种参考依据,但最主要的还是要看一些实际运行性能测试,并多比较相关报导,才容易获
web服务器有哪些类型
使用最多的 web server 服务器软件 有两个:微软的信息服务器(iis),和Apache。
通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑(business logic)。
Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。
虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。
应用程序服务器(The Application Server)
根据我们的定义,作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样。
应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。 正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。
网络中的服务器类型有哪些,他们各有什么用途
web服务器,用来提供网站,也就是我们现在上网看的网站都是web服务器提供的。dns服务器,提供网络dns,域名转换。ftp服务器,和web类似,它提供的是文件服务。数据库服务器,主要装数据资料的,这个没什么好说的。dhcp服务器,提供动态ip转换。主要就这些了
常见的服务器操作系统有哪些,各有什么特点?
一般的,分为两大类: 1、windows类:windows nt、windows 2000、windows 2003、windows 2008等,图形界面友好,易操作 2、unix类:ibm aix、sco unix、sco unixware、各种linux等,多用户功能强大,运行稳定,字符界面的不易操作,掌握起来有一定的难度
常用的应用服务器有哪些,各有什么功能
一般的,分为两大类: 1、windows类:windows nt、windows 2000、windows 2003、windows 2008等,图形界面友好,易操作 2、unix类:ibm aix、sco unix、sco unixware、各种linux等,多用户功能强大,运行稳定,字符界面的不易操作,掌握起来有一定的难度
电脑服务器是什么 服务器有什么功能 终端是什么
服务器是一种高性能计算机,作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为网络的灵魂。做一个形象的比喻:服务器就像是邮局的交换机,而微机、笔记本、PDA、手机等固定或移动的网络终端,就如散落在家庭、各种办公场所、公共场所等处的电话机。我们与外界日常的生活、工作中的电话交流、沟通,必须经过交换机,才能到达目标电话;同样如此,网络终端设备如家庭、企业中的微机上网,获取资讯,与外界沟通、娱乐等,也必须经过服务器,因此也可以说是服务器在“组织”和“领导”这些设备。
服务器的构成与微机基本相似,有处理器、硬盘、内存、系统总线等,它们是针对具体的网络应用特别制定的,因而服务器与微机在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等耿面存在差异很大。尤其是随着信息技术的进步,网络的作用越来越明显,对自己信息系统的数据处理能力、安全性等的要求也越来越高,如果您在进行电子商务的过程中被黑客窃走密码、损失关键商业数据;如果您在自动取款机上不能正常的存取,您应该考虑在这些设备系统的幕后指挥者————服务器,而不是埋怨工作人员的素质和其他客观条件的限制。
局域网中服务器有哪些类型?
web服务器提供网页浏览的,
ftp服务器提供文件上传下载的,
dhcp服务器提供动态分配ip地址的,
dns服务器提供域名解析服务的,
proxy提供代理功能的,
email提供邮件服务的等等 这是按逻辑分的,其实这些服务可以在一台电脑上实现,当然要考虑访问量大小
常用的web服务器软件有哪些
(1)ApacheApache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自"a patchy server"的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点郸简单、速度快、性能稳定,并可做代理服务器来使用。(2)IIS是英文Internet Information Server的缩写,译成中文就是"Internet信息服务"的意思。它是微软公司主推的服务器,最新的版本是Windows2008里面包含的IIS 7,IIS与Window Server完全集成在一起,因而用户能够利用Windows Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。(3)GFEGoogle的web服务器,用户数量激增。目前紧逼iis。(4)Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。(5)Ligd是由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。Ligd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output press), URL重写, Alias等重要功能。(6)Zeus是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是效率最高的Web Server之一。(7)Sun的Java系统Web服务器也就是以前的Sun ONE Web Server。主要出现在那些运行Sun的Solaris操作系统的关键任务级Web服务器上。它最新的版本号是61,可以支持x86版本Solaris,Red Hat Linux,HP-UX 11i, IBM AIX,甚至可以支持Windows,但它的大多数用户都选择了SPARC版本的Solaris操作系统。(8)Resin提供了最快的jsp/servlets运行平台。在java和javascript的支持下,Resin可以为任务灵活选用合适的开发语言。Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。(9)Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。(10)BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理
云计算主要有3种服务类型,每种类型的功能和服务对象都是什么?
软件即服务(Software as a Service,缩写SaaS)
软件即服务是普通消费者可以感知到的云计算,它的代表有Dropbox,还有国内用户熟悉的百度云、腾讯微云等。这种云计算最大的特征就是消费者并不购买任何实体的产品,而是购买具有与实体产品同等功能的服务。
以前,我们是花钱购买的是服务器上的存储空间。现在,我们花钱购买的是Dropbox的存储服务。表面上看,两者没有实际的区别。但是换一个角度来看,两者却完全不同。以前,我们花钱购买服务器上的存储空间,假设是空间容量是10G,我们是真正的买到了服务器上的10G空间。如果我们不上传文件的话,那么服务器上的这10G空间就是空的。现在,我们购买Dropbox的存储服务,假设空间容量还是10G,我们却并没有真正的买到Dropbox服务器上10G的空间,我们买到的是10G空间的服务。也就是说,如果我们上传文件,Dropbox会将文件分开放在任何地方的任何服务器上,如果我们不上传文件,Dropbox的服务器上就根本没有属于我们的任何空间。
平台即服务(Platform as a Service,缩写PaaS)
与软件即服务不同,平台即服务是面向开发者的云计算。这种云计算最大的特征是它自带开发环境,并向开发者提供开发工具包。它的代表有Google的GAE(Google App Engine),还有国内的百度的BAE、新浪的SAE等。
平台即服务与软件即服务之间可以相互转换。如果是消费者,购买Dropbox的服务,那Dropbox就是软件即服务。如果是开发者,利用Dropbox提供的开发包借助Dropbox的服务开发自己的服务,那么Dropbox本身就是平台即服务,构筑在Dropbox之上的开发者的服务就是软件即服务。
以前,开发者如果要搭建一个网站,需要做很多准备工作,比如购买服务器,安装操作系统,搭建开发环境等等。现在,开发者如果购买平台即服务云计算,就可以省去上面费时费力的准备工作,直接进行网站的开发。不仅如此,开发者还可以使用各种现成的服务,比如GAE会向开发者提供Google内部使用的先进的开发工具和领先的大数据技术。这一切都使得网站开发变得比以前轻松很多,这也是云计算时代互联网更加繁荣的原因之一。
基础架构即服务(Infrastructure as a Service,缩写IaaS)
基础架构即服务一般面向的是企业用户,它的代表有Amazon的AWS(Amazon Web Service),还有国内的PPPCloud等。
这种云计算最大的特征在于,它并不像传统的服务器租赁商一样出租具体的服务器实体,它出租的是服务器的计算能力和存储能力。AWS将Amazon计算中心的所有的服务器的计算能力和存储能力整合成一个整体,然后将其划分为一个个虚拟的实例,每一个实例代表着一定的计算能力和存储能力。购买AWS云计算服务的公司就以这些实例就作为计量单位。
基础架构即服务与平台即服务有显著的区别,基础架构即服务提供的只有计算能力和存储能力的服务,平台即服务提供的除了计算能力和存储能力的服务,还提供给开发者的完备的开发工具包和配套的开发环境。也就是说,开发者使用平台即服务时,可以直接开始进行开发工作。而使用基础架构即服务时,则必须先进行如安装操作系统、搭建开发环境等准备工作。
基础架构即服务是云计算的基石,平台即服务和软件即服务构建在它的上面,分别为开发者和消费者提供服务,而它本身则为大数据服务。
建立Controller
相信看这篇文章的朋友,应该都知道,Controller相关的文件都放在了 %Rails_Root%/app/controllers/ 目录下,为了和普通的Controller区分,我们在 %Rails_Root%/app/controllers/ 下新建一个目录 admin ,用于专门存放后台管理页面相关的Controller。
建立基本的Controller
也行大家都看过普通的Controller类的实现,都需要继承 ApplicationController ,把Controller的基本功能都继承下来。为了让后台管理页面使用不同的布局文件,其实我们只需要在Controller类定义中,调用一下 layout 方法即可。Rails中一个重要原则就是DRY。所以,为了减少代码重复,不在每一个后台管理相关的Controller中重复调用layout方法,我们建立一个后台的基础类。代码如下:
# %Rails_Root%/app/controllers/admin/base_controllerrb
class Admin::BaseController < ApplicationController
layout 'admin/application'
end
这里需要特别说明一下的是,为了防止和其他普通的Controller重名,也为了便于识别和管理,我们将后台管理相关的Controller都放到了 Admin 命名空间里。
建立登录Controller
建立完基础的Controller后,我们再来建立一个和登录相关的Controller。代码如下:
# %Rails_Root%/app/controllers/admin/sessions_controllerrb
class Admin::SessionsController < Admin::BaseController
# 登录
def new
end
end
配置Routes
添加完上面的Controller后,启动服务器,打开 http://localhost:3000/admin/signin ,页面会报错,提示 No route matches [GET] "/admin/signin" 。很明显是没有配置routes(窃译为“路由规则”)。所以,我们需要配置一下路由规则。
# %Rails_Root%/config/routesrb
SampleApp::Applicationroutesdraw do
namespace :admin do
resources :sessions, only: [:new]
match '/signin', to: 'sessions#new', via: 'get'
end
end
我的工程命是 SampleApp ,你的工程名字也行和我的不一样。所以,代码也有稍有差异。
添加模板
建立完路由规则,再刷新页面,页面报错,错误如下:
Missing template layouts/admin/application with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}
这是提示我们确实模板文件。另外,有木有感觉 admin/application 有点眼熟?我们在 Admin::BaseController 类中调用layout事,传递的参数就是这个。
建立布局文件
根据上面的分析,我们需要在 %Rails_Root%/app/views/layouts/admin/ 目录下,新建一个名为 applicationhtmlerb 的文件。代码如下:
<!-- %Rails_Root%/app/views/layouts/admin/applicationhtmlerb -->
<h1>This is Admin pages</h1>
<hr />
<%= yield %>
这里将布局文件命名为 applicationhtmlerb ,是为了和Rails生成的默认布局文件保持一致。从这里也能看出来,在Controller中调用layout方法,其实就是指名了寻找布局文件的路径,并且默认的根目录是 %Rails_Root%/app/views/layouts/ 。
建立视图模板文件
创建完布局文件,我们再次刷新浏览器。还是报错,提示错误信息如下:
Missing template admin/sessions/new, admin/base/new, application/new with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}
根据我们对Rails的MVC的了解,可以一样看出来,我们需要创建 newhtmlerb 。代码如下:
<!-- %Rails_Root%/app/views/admin/sessions/newhtmlerb -->
This is login pagePlease login
至此,所有的工作做完,再刷新一下页面( http://localhost:3000/admin/signin ),是不是看到了我们想象的后台管理页面?
终极解决方案
解决后台管理页面创建的终极解决方案是: active_admin 。据网友评论说,有了 ActiveAdmin,创建 Rails 应用的管理界面就像儿戏。你会有一个很好的仪表盘,图形化 CRUD 界面以及更多东西。非常灵活且可客制化。
刚刚开始整的时候,出了点问题。所以,D瓜哥就在 Ruby China 上发帖 “active_admin 兼容 Rails 4 吗?” 询问了一下。感谢网友的回答,让我顺利过关。
由于Rails 4刚刚推出,不知道active_admin的有没有发布可以兼容Rails 4的官方包。所以,在 Gemfile 文件中声明gem包的时候,必须指定一下它的来源和分支。另外,还有声明一些依赖的gem。具体声明如下:
# %Rails_Root%/Gemfile
gem 'activeadmin', github: 'gregbell/active_admin', branch: 'rails4'
gem 'ransack', github: 'ernie/ransack', branch: 'rails-4'
gem 'inherited_resources', github: 'josevalim/inherited_resources'
gem 'formtastic', github: 'justinfrench/formtastic'
# 请注意:active_admin的rails 4分支,要求使用30版本以上的jquery-rails gem。
# 所以,要检查一下jquery-rails的版本。
gem 'jquery-rails', '304'
然后,使用如下命令更新、安装一下gem包:
bundle update
bundle install
相信一些朋友和我一样,对这两个命令都很好奇,也很纳闷,有啥区别呢?D瓜哥在网上找了两篇文章,希望能给这些朋友“传道授业解惑”:
bundle update 和 bundle install平时大家用哪个?
Why you should run bundle update
升级完gem包后,允许如下命令,生成后台页面:
rails generate active_admin:install
这个命令会创建一个初始化的管理页面,并且创建 %Rails_Root%/app/admin 目录,用于存放管理相关的配置信息。
下一步,进行数据库迁移。执行如下命令:
rake db:migrate
完成数据库迁移之后,执行如下命令,启动服务器:
rails server
这时,就可以访问 http://localhost:3000/admin ,跳转到登录页面,登录进入后台管理页面。默认登录名和密码如下:
User : admin@examplecom
Password : password
现在,虽然有了后台管理页面,但是我们需要管理的各种东西都没有。所以,这个必须得加进来。执行命令如下:
rails generate active_admin:resource [MyModelName]
这条命令会在 %Rails_Root%/app/admin 目录下生成 my_model_namesrb ,用于配置资源信息。这时,刷新一下浏览器,顶部菜单栏是不是多了个选项?
这样搞,实在是太爽太方便了!Rails真实太TM好玩了:怎一个爽字了得啊?!
自我吐槽
有两个地方需要特别声明一下:
代码段的第一行为文件路由;
有些地方需要建立一些文件夹,请各位看文章时候注意。
特别感谢
这篇文章,部分内容参考了active_admin的官方文档。特别感谢!
0条评论