Articles of apache 2.2

部署git项目和权限问题

我有我自己的服务器上与gitolite托pipe的项目,我想部署整个项目从gitolite裸仓库到apache可访问的地方,通过post-receive钩子。 我有下一个钩的内容 echo "starting deploy…" WWW_ROOT="/var/www_virt.hosting/domain_name/htdocs/" GIT_WORK_TREE=$WWW_ROOT git checkout -f exec chmod -R 750 $WWW_ROOT exec chown -R www-data:www-data $WWW_ROOT echo "finished" 挂钩不能没有任何错误信息完成。 chmod: changing permissions of `/var/www_virt.hosting/domain_name/file_name': Operation not permitted 意味着git没有足够的权利来实现它。 git的源代码path是/var/lib/gitolite/project.git/ ,它由gitolite:gitolite拥有gitolite:gitolite 有了这个权限redmine(在www数据用户下工作)不能实现git仓库来获取所有的变化 整个项目应该放在这里: /var/www_virt.hosting/domain_name/htdocs/ ,它由www-data:www-data 。 我应该做些什么改变,在git中正常工作,然后redmine与仓库? 我做了什么,是: # id www-data uid=33(www-data) gid=33(www-data) groups=33(www-data),119(gitolite) # id gitolite uid=110(gitolite) gid=119(gitolite) groups=119(gitolite),33(www-data) 没有帮助。 我想没有任何问题工作Apache(查看项目),redmine读取项目(Git下)和GIT(部署到WWW数据可访问path)的源文件, […]

在SUEXEC和DOCROOT混淆

我一直在遇到suexec的问题,它说cgi脚本不在docroot中。 我得到这个错误: "[2012-05-21 04:53:02]: command not in docroot (/apps/dctools/www/cgi-bin/test.cgi)" 我有一个符号链接到cgi文件的位置。 符号链接是suexec的问题吗? 使用虚拟主机configuration。 apache docroot: /var/www/html suexec docroot: /var/www 虚拟主机configuration <VirtualHost 10.1.1.1:80> ServerAdmin [email protected] DocumentRoot /var/www/html/dctools ServerName dctools.nowhere.com ErrorLog logs/dctools.nowhere.com-error_log CustomLog logs/dctools.nowhere.com-access_log common SuexecUserGroup me white ScriptAlias /cgi-bin/ "/var/www/cgi-bin/dctools/" <Directory "/var/www/dctools/cgi-bin"> AllowOverride None Options None Options FollowSymlinks Order allow,deny Allow from all </Directory> </VirtualHost> 符号链接设置 -sh-3.2$ […]

.htaccess中的mod_rewrite导致头文件不被应用 – 为什么?

摘自httpd.conf <VirtualHost *:80>部分(目标:为所有 JavaScript文件设置Cache-Control ): <LocationMatch "\.js"> Header set Cache-Control "max-age=290304000, public" </LocationMatch> .htaccess (Symfony PHP框架的一部分): Options +FollowSymLinks +ExecCGI <IfModule mod_rewrite.c> RewriteEngine On # we check if the .html version is here (caching) RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f # no, so we redirect to our front web controller RewriteRule […]

关注Apache每个虚拟机日志logging设置

我是我公司的高级开发人员和系统pipe理员,所以我正在努力处理这两个活动的需求。 我已经build立了我们的apache框,它处理30-50个域atm(并希望会变大),并承载生产和开发的网站,这个目录结构: domains/ domains/domain.ext/ #FTPS chroot for user domain.ext domains/domain.ext/public #the DocumentRoot of http://domain.ext domains/domain.ext/logs domains/domain.ext/subdomains/sub.domain.ext domains/domain.ext/subdomains/sub.domain.ext/public #DocumentRoot of http://sub.domain.ext 每个domain.ext Vhost通过mpm-itk运行,他的专用用户和组,umask是027,日志通过pipe道sudo命令存储,如下所示: ErrorLog "| /usr/bin/sudo -u nobody -g domain.ext tee -a domains/domain.ext/logs/sub.domain.ext_error.log" CustomLog "| /usr/bin/sudo -u nobody -g domain.ext tee -a domains/domain.ext/logs/sub.domain.ext_access.log" combined 现在,我已经读了很多关于不让日志从一个非常有限的目录中出来,但是开发人员经常需要快速查看一个特定的子域错误日志,而且我不想让他们具有pipe理员权限看看/ var / logs。 把它们提供到ftp帐户在开发阶段是非常方便的。 你认为这个设置是否可行和安全? 对我来说显然看起来不错,但我关心的3个安全问题: – sudopipe道是否足以处理符号链接漏洞? 我失踪的任何捕获? -log dos:logs位于所有域的同一个分区中。 […]

cpanel和whm子域名redirect到cgi-sys / defaultwebpage.cgi

我有一个新的安装WHM和cPanel,我将域添加到WHM,但是当我通过cpanel或whm子域尝试访问时,我被redirect到cgi-sys / defaultwebpage.cgi。 我已经尝试了3个不同的电脑来检查是否caching,但问题仍然存在。 我已经检查了代理域,但默认启用。 什么可能是错的?

使用mod_rewrite / mod_proxy更改Set-Cookie头

我有一堆使用HTTPS的CGI脚本。 他们只能在内联网上,而不能从外部访问。 他们使用“安全”属性设置cookie,以便只能通过HTTPS发送。 对于其中一个脚本,也有一个反向代理,不幸的是使用普通的HTTP。 当我的CGI脚本有一个安全的cookie来响应时,它不会通过HTTP传递(毕竟,这是属性的用途)。 然而,我需要这个规则的例外。 是否有可能使用mod_rewrite / mod_proxy或类似的东西来改变来自我的CGI脚本的响应中的Set-Cookie头并删除Secure ,这样cookie可以通过不安全的HTTP连接传回给用户? 我明白,这首先破坏了Secure的目的,但我需要这个作为临时工作。 我search了网页,发现如何使用mod_rewrite添加一个Set-Cookie头,我也发现了如何从cookie头中获取来自客户端的cookie 。 我还没有find的是如何提取在我正在代理的脚本的响应中收到的Set-Cookie头。 那可能吗? 我该怎么做?

每秒处理数百次请求的大量写入应用程序的系统需求

注意:我是一名自学成才的PHP开发人员,他几乎没有任何pipe理Web和数据库服务器的经验。 我即将为一个非常大的用户群编写一个基于Web的考勤系统。 我希望大约有1000到1500个用户同时login,每10秒钟至less发一个请求,每天3次,每次30分钟。 因此,每秒100个请求或者最差的1000个请求(每个请求的平均时间为16个并发请求),但是由于用户发出这些请求的时间很短,所以它可能会更高。 )。 我期望两种types的交易, local (不是指localnetworking)和foreign交易。 local交易基本上在本地下载用户数据并caching1到2周。 出席equests可能只有两个数字string: userid和eventid 。 foreign交易是为了不属于当地的人出席。 这将传递以下数据:( (numeric) locality_id , (string) full_name 。 这两个请求都是在Ajax中完成的,所以没有包含HTML数据,只有JSON。 这两种请求都至less需要来自服务器的单个数字响应。 我认为local和foreign交易的频率会有50-50倍的差距,但是这些交易的规模只有几个字节的差异。 截至此刻, userid只能达到6位数, eventid位也是4至5位整数。 我期望我的users表至less有400k行, event表有多达10k行,一个locality表至less有1500行,而我的主要出勤表增加了400k行(根据用户数量在users表中)每周3天一天(每周120万行)。 对我来说,这听起来很大。 但是这真的很大吗? 或者这可以由一个单一的服务器处理(不知道服务器的规格,因为我可能会利用VPS从ServInt或其他人)? 我试图读取多个服务器上的设置Heatbeat , DRBD ,主从设置。 但是我想知道他们是否真的有必要。 users表每周将增加约500个1k行。 如果这不能由一台服务器来处理,那么如果我select一个MySQL复制拓扑,那么这种情况下最好的设置是什么? 对不起,如果我听起来含糊或问题太广泛。 我只是不知道该问什么,或者你现在想知道什么。

每个IP和URL只允许一个请求

使用htaccess文件或从PHP发送特殊的标头,有什么办法只允许通过IP 和url一个HTTP请求? 我的意思是,一个用户可以同时发出多个请求,但不能到同一个url(文件)。 这个问题伴随着下载加速器。 我需要同时允许多个dowload,并暂停和/或恢复它们(主要在客户端的连接故障,主要是),但禁用同时有多个部分下载的恼人的function,因为他们正在制作服务器由于同时请求的数量而崩溃。

无法在Debian服务器上重新启动apache2 – “无法将/usr/local/apache2/modules/libphp5.so加载到服务器”

好的…当谈到服务器时,我是一个初学者,而且我在Debian web服务器上重新启动Apache时遇到了一些问题。 我只是跑了以下几点: aptitude install apache2 openssl 之后立即尝试重新启动apache,并收到以下错误消息: IS-13902:/usr/local/apache2/modules# /etc/init.d/apache restart httpd: Syntax error on line 55 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: libidn.so.11: cannot open shared object file: No such file or directory 我运行ldd /usr/local/apache2/modules/libphp5.so并得到以下输出 linux-gate.so.1 => (0xb76f6000) libcrypt.so.1 => /lib/i686/cmov/libcrypt.so.1 (0xb6d78000) librt.so.1 => /lib/i686/cmov/librt.so.1 (0xb6d6f000) libmysqlclient.so.16 => /usr/local/mysql/lib/libmysqlclient.so.16 (0xb6a3d000) libpng12.so.0 => /usr/lib/libpng12.so.0 […]

为什么我的httpd mpm_prefork进程如此快速地被收割?

[编辑] 糟糕的问题,主要是 – 看到我的答案 [/编辑] 我们有一个运行RHEL6,x64的系统。 我们正在使用从本地安装的apache 2.2.22来源。 我们主要服务于: mod_perl应用程序(用本地安装的perl 5.16.0) 用mod_jk代理的tomcat应用程序 这里是一些背景; 主要问题在下面。 所有这些都与Oracle后端对话。 我们遇到了Oracle无法响应的问题。 我们认为这是因为我们正在达到oracle的最大进程限制。 我们已经提高了stream程限制,但是现在我们正面临oracle服务器的内存压力。 我们有大量的甲骨文会议闲置。 我可以跟踪一堆他们回到httpd进程。 我们有mod_perl的Apache :: DBI启动一个新的连接到数据库与每个生成的httpd子。 我们担心,当httpd的退出和httpd正在退出的时候,这些并不总是被正确地closures。 我知道修改mod_perl应用程序以使用一些更好的db连接池forms是很好的; 我们打算追求这个,但是想尽快解决我们眼前的问题。 所以这是主要的问题。 我们正在使用prefork MPM。 Apachesubprocess最多持续几分钟 。 日志分析显示,每个人在退出之前所服务的客户less于50个; 每个孩子的最后一个请求是在某种内部连接上的OPTIONS * HTTP/1.0 ; 我的印象是这是一个从主进程“平”。 我已经调整了MPMconfiguration如下。 我不想提高MinSpareServers太高,因为毕竟,我试图最大限度地减less对oracle的会话数量。 MinSpareServers 5 MaxSpareServers 30 MaxClients 150 MaxRequestsPerChild 10000 现在我们每分钟服务250-300个请求。 我们有21个httpd正在运行,其中最年长的(除了拥有root权限的主人)还有3分钟的时间。 这个apache儿童的收获率似乎过高。 什么可能导致它? Apachebuild立于: $ ./configure –prefix=/opt/apache […]