Articles of apache 2.2

如何在Mac OS X上使用Passenger(mod_rails)设置Apache?

我是一名iOS开发人员,所以我对Apache和RoR的经验很less,而且这是我第一次尝试使用Mac OS X作为服务器。 http://rubyonrails.org/deploybuild议使用Apache的Phusion Passenger(mod_rails) 。 所以这就是我想要完成的,但是我已经走到了尽头。 这就是我所做的: 我启用了Apache(设置中的checkbox),并将浏览器指向本地主机给我的文本“它的工作!”。 我也可以通过我的dyndns来访问它。 我运行以下命令来安装乘客: sudo gem install passenger passenger-install-apache2-module 我在/etc/apache2/httpd.conf添加了以下几行: LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /Library/Ruby/Gems/1.8/gems/passenger-3.0.7 PassengerRuby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby 然后我将以下内容添加到/etc/apache2/extra/httpd-vhosts.conf : <VirtualHost *:80> ServerName my.dyndns.org DocumentRoot /Users/Shared/rails/project/public # <– be sure to point to 'public'! <Directory /Users/Shared/rails/project/public> AllowOverride all # <– relax Apache security settings Options -MultiViews # <– MultiViews […]

在Linux上使用Apache / Varnish / MySQL优化服务器体系结构

我是小型初创公司的服务器pipe理员(这意味着我绝不是一个经验丰富的专家),最近我帮助将站点从一台Windows机器迁移到Rackspace上的一组机器上云。 目前该网站的基准testing约为600个请求/秒,但考虑到我们分配给它的资源量,我觉得它可能要高得多。 现在我们在8台Web服务器前使用Rackspace云负载均衡器(Apache Zeus)。 每个Web服务器都在一个512MB云实例上运行Linux,内容由具有Apache 2后端的Varnish服务。 Web应用程序本身就是PHP。 Apache运行在mpm-worker中,php运行在fcgi中。 PHP APC也被启用。 至于数据库后端,我有两个4GB的服务器实例在Master-Master复制设置中为MySQL服务,其中一半的Web服务器指向每个服务器。 该应用程序是相当密集的数据库,因此有这么多的资源专用于数据库。 性能通常很好,但是我们有一些负载尖峰,现有的基础设施无法处理,所以我dynamic地增加了节点的大小。 这个结果很好,但是我觉得在特定的负载条件下,我不得不在基础设施上投入更多的资源,比我预期的要快得多。 在我的研究中,似乎我们正在使用非常罕见的设置,因为有很多单独的清漆实例,我可能需要探索caching层的选项。 这里画出了当前体系结构的概述(谷歌文档链接) rackspace云的定价模式非常线性,这意味着一个1024mb的服务器实例是一个512mb实例成本的两倍。 因此,我期待在相同数量的资源(成本)下工作时最大化我的performance。 我最初的想法是删除rackspace负载平衡器,而不是在apache后端前面使用一个单独的varnish实例,也许使得apache后端是4x 1gb的实例,而不是8x 512mb的实例。 负载平衡器的成本非常低廉,所以为了用另一台专用服务器来替代它,性能增益将会很大。 我也玩弄了HAProxy和Nginx的想法,但是我不想盲目地在一个生产网站上做实验。 我的目标是能够在大致相同的硬件configuration下接近2000 req / s。 编辑:我有mod_pagespeed工作了一阵子,使我了约100 req / s,但我似乎有很多关于如何与清漆交互的问题。 编辑: Varnish VCL ,Disk是Rackspace Cloud的默认(非SAN,猜测SATA),数据库目前大约是1.5GB。 在正常情况下不能交换到磁盘。 每个Apache的进程大约是20MB。 php-cgi进程倾向于咀嚼更多的资源。

httpd.confvariables:$ {var}和%{var}之间有什么区别?

httpd.conf中的${var}和%{var}什么区别? 如何以及何时使用${}和%{} ? http://httpd.apache.org/docs/2.4/configuring.html提及: 可以使用$ {VAR}语法在configuration文件行中使用Define of或shell环境variables定义的variables值。 http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html提及: 服务器variables:这些variables的forms为%{NAME_OF_VARIABLE} 和 RewriteMap扩展:这是$ {mapname:key | default}的扩展。 除了在mod_rewrite指令(像RewriteCond,RewriteRule, RewriteRule ^ / ex /(.*)$ {examplemap:$ 1} )中使用${} RewriteMap扩展外, $ {VAR} 使用SetEnvIf指令在httpd.conf中设置的variables是否将用作${var}除非variables与mod_rewrite指令一起使用,variables将用作%{var} ?

具有特殊字符的Apacheurl/文件名

我有这个url: http://domain.com/wp-content/uploads/2012/10/Hvilke-vilkår-følger-med-når-du-bestiller-nyt-bredbånd.png 如果我ftp / ssh或只是浏览到该文件夹​​(Apache索引function),我看到的文件 Hvilke-vilkår – 福尔杰-MED-NAR-DU-bestiller-NYT-bredbånd.png 如果我点击从apache索引的链接,我可以看到该文件,但是,如果我复制的URL,并尝试直接浏览它,我得到的错误: 在此服务器上找不到所请求的URL/wp-content/uploads/2012/10/Hvilke-vilk?r-følger-med-nÃ¥r-du-bestiller-nyt-bredbÃ?nd.png。 另外我的错误日志说: 文件不存在:/ wp-content / uploads / 2012/10 / Hvilke-vilk \ xc3 \ xa5r-f \ xc3 \ xb8lger-med-n \ xc3 \ xa5r-du-bestiller-nyt-bredb \ xc3 \ xa5nd。 PNG

如何判断SSL会话caching实际上是否与Apache 2.2正常工作?

我们在Ubuntu 12.04上运行Apache 2.2.22。 在/etc/apache2/mods-enabled/ssl.confconfiguration和启用SSL: SSLSessionCache shm:/var/www/apache-ssl-cache/ssl_scache(512000) SSLSessionCacheTimeout 300 SSLMutex file:/var/www/apache-ssl-cache/ssl_mutex SSL似乎工作。 我们可以通过HTTPS访问站点,即使在Windows XP上的IE8也是如此。 但是,我们不确定SSL会话caching实际上是否正常工作。 我们在虚拟主机的日志中看到了很多这些INFO级别的消息: [info] [client <censored>] (70007)The timeout specified has expired: SSL input filter read failed. 要么 [info] [client <censored>] (70014)End of file found: SSL input filter read failed. 要么 [info] [client <censored>] (70014)End of file found: SSL handshake interrupted by system [Hint: […]

采用混合身份validation/匿名访问的Apache 2.4 + SVN authz身份validation

我使用的是Apache 2.4,我希望在不使用mod_access_compat的情况下使用它。 我试图服务于SVN仓库,访问控制由mod_authz_svn处理。 我想要在回购站内的一些回购或位置具有只读的匿名访问。 我想要其他回购或地点要求基本authentication。 Apache 2.4不再支持Satisfy all语法,但是,mod_authz_svn似乎期望它。 这应该如何在Apache 2.4上configuration? Apacheconfiguration: <Location /svn> DAV svn SVNParentPath /usr/projects/svn AuthType Basic AuthName "SVN repository" AuthUserFile /usr/project-config/etc/svn-auth-file AuthzSVNAccessFile /usr/project-config/etc/svn-access-control Require valid-user </Location> SVN的访问控制: # cat etc/svn-access-control [/] antiduh = rw [openprojects:/] * = r antiduh = rw 我有5个回购,openprojects是唯一一个我想匿名只读访问。 我似乎无法得到这个工作。 即使是我可以find的最新的文档 mod_authz_svn继续使用Satisfy all 。

Apache mod_proxy:多个虚拟主机相互禁用

我有一个Ubuntu 12.04服务器, Redmine已经安装在一个独立的apache(所有在/ opt / redmine下)。 我想在同一个系统上安装一个Jenkins实例,而不用修改现有的设置。 我想分别在sub.domain.com/redmine和sub.domain.com/jenkins下访问这两个服务。 我改变Redmines Apache监听端口8081而不是80,通过apt安装了一个额外的Apache,并设置代理'/ redmine'到localhost:8081 / redmine的虚拟主机。 到目前为止一切正常。 Redmine像以前一样可以访问。 但是,当我以同样的方式设置Jenkins时,Tomcat在端口8080上侦听,URL前缀“jenkins”和一个新的虚拟主机,Redmine停止工作,即得到了404。当我删除Jenkins虚拟主机时,再次。 这里是/ etc / apache2 / sites-available下的两个文件,我通过a2ensite / a2dissite启用/禁用。 pipe理平台: <VirtualHost *:80> ServerAdmin [email protected] ServerName sub.domain.com ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPreserveHost off ProxyPass /redmine http://localhost:8081/redmine ProxyPassReverse /redmine http://localhost:8081/redmine </VirtualHost> jenkins: <VirtualHost *:80> ServerAdmin [email protected] […]

LInux OOM自定义响应

我正在运行Apache Web服务器,并希望稍微改善OOM情况的处理方式。 我对OOM评分很满意,并且已经在这方面做了一些定制,所以当一些不好的事情发生时,Linux正在消灭正确的stream程。 但是这还不够。 问题是,有时当OOM发生服务器变得超载,然后崩溃,必须重新启动。 我想处理,而不需要完全重新启动服务器。 所以我需要以某种方式在OOM杀手调用上“挂钩”一个脚本,这将杀死所有的apache(及其CGI)进程,从而释放内存并再次启动它(Apache)。 我知道这是可行的,因为如果OOM发生,而且我足够快地login到服务器并杀死Apache手册,那么一切都可以。 仅供参考,我现在运行了近百个这样的networking服务器,这就是为什么我正在寻找全自动解决scheme。 一个可能的解决scheme当然是使用一些能够parsing系统日志并以这种方式检测OOM的监视器 – 我已经有了类似的东西,通过电子邮件通知OOM杀人事件。 这个问题可以解决一些情况,但是如果OOM真的很糟糕,那么服务器太重了,我的脚本甚至不能启动(它由cron运行)。 可以通过使用inotify来观察系统日志,或者通过直接(例如通过fifo)将syslogpipe道传送给脚本来改进。 但是我仍然想知道 – 如何将脚本直接“钩”到OOM杀手? 所以我会把这样的东西放在一些/ etc / ..文件中: oom_action="sh /path/to/my/script.sh kill" 或者根本不可能这样做? 我使用CentOS 6,Apache 2.2和PHP作为FastCGI。

Ruby on Rails应用程序的虚拟主机设置(mod passenger)

我正在尝试在apache下安装Redmine。 Apache服务器在本地networking上工作。 我的apache设置包含在一个虚拟主机上。 我可以使用相应的path获得不同的目录: HTTP:// ip_address /来folder_of_the_project_1 在这种情况下,我如何设置虚拟主机来使redmine有效? 这是我目前的虚拟主机设置: NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/ RailsBaseURI /redmine <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> <Directory /var/www/redmine/public> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory […]

Apache Web服务器的虚拟URLpipe理器

我正在寻找一个工具来pipe理运行在Apache(或IHS – IBM HTTP Server)上的单个域的虚荣url。 我的意思是虚荣url: www.mycompany.com/ProjectA将redirect到servera.mycompany.com/whatever www.mycompany.com/ProjectB将redirect到serverb.mycompany.com/another/directory www.mycompany.com/FallCampaign将redirect到servera.mycompany.com/whatever/offer.html 等等 当前实现的解决scheme包含数千个手动更新的目录,并使用redirect用户的php脚本。 这已经成为维护的噩梦。 使用手动更新的 .htaccess文件将此解决scheme转换为解决scheme不是选项*。 理想情况下,这个工具将: 为apache / IHS Web服务器工作 为用户和pipe理员提供一个Web界面 允许用户创build,删除和更新虚荣url 允许用户指定区分大小写,或不区分大小写的每个虚空url 允许用户将redirect指定为每个虚空url的HTTP 301(永久)或HTTP 302(临时) 允许用户指定每个虚荣URL作为永久(产品)或临时与“取下”date(用于市场营销活动)。 提供一个工作stream程用户提交虚荣URL请求,并为他人批准 (作为一种可能的解决scheme)写出一个单一的,pipe理的.htaccess文件,只要该文件在被推送到服务器之前由该工具validation,以便它不会对服务器产生负面影响。 (作为一种可能的解决scheme)用redirect/ .htaccess文件写出目录,但也可以pipe理创build,更新和删除这些目录。 可能使用数据库后端或xml后端。 提供一个解决scheme,以我没有想到的方式满足这些标准。 (可选)提供非常简单的报告(永久url的数量,临时url的数量,即将到期的临时URLs即将到期等) *如果在文件中input错误,使用单个手动编辑的.htaccess文件会带来太多的风险,可能影响所有的URL。 位于目录中的多个.htaccess文件与使用phpredirect一样是一个维护噩梦。