标签: apache2

什么在Apache 2中出现"捕获SIGWINCH"错误?

我的服务器(ubuntu 8.04)LAMP运行drupal 6,当有高流量时,它停止提供页面.重启apache2将无法正常工作,因此我必须重新启动该服务.

我在apache2 error.log中找到了这条消息

[通知]抓住SIGWINCH,优雅地关闭

另外我注意到当apache停止响应时,apache2的进程ID大约为12000.

更新

正如您所指出的,捕获的SIGWINCH是apache服务重新启动的通知.我和最大客户一起玩,并保持活力.我将MaxClients设置得太低,所以我得到了"服务器达到MaxClients设置,考虑提高MaxClients设置"错误,但修复了这个问题.

关于PID,我的安装已经安装了prefork模块,因此在达到MaxRequestPerChild后,它会回收子进程.这就是PID定期上升的原因.仍然没有弄清楚为什么一段时间后apache停止响应.

同时将尝试上升MaxRequestPerChild,以便PID不会快速达到PID max.当前限制是32768(这是新debian和ubuntu安装的标准).

这里有更多来自日志:

[2009年4月24日星期五01:48:56] [通知]抓住了SIGWINCH,优雅地关闭了

[Fri Apr 24 01:50:07 2009] [通知] Apache/2.2.8(Ubuntu)PHP/5.2.4-2ubuntu5.3配置了Suhosin-Patch - 恢复正常操作

[2009年4月24日星期五17:13:35] [错误] [客户端195.70.62.131]客户端发送没有主机名的HTTP/1.1请求(参见RFC2616第14.23节):/ w00tw00t.at.ISC.SANS.DFind :)

[2009年4月24日星期五17:36:00] [错误] [客户端212.188.33.4]客户端发送没有主机名的HTTP/1.1请求(参见RFC2616第14.23节):/ w00tw00t.at.ISC.SANS.DFind :)

[Sat Apr 25 20:05:07 2009] [错误] [客户端84.243.222.12]请求中的URI无效GET HTTP/1.1 HTTP/1.1

[Sat Apr 25 20:05:12 2009] [错误] [客户端84.243.222.12]脚本未找到或无法统计:/ usr/lib/cgi-bin/twiki

[Sat Apr 25 20:05:12 2009] [错误] [客户端84.243.222.12]脚本未找到或无法统计:/ usr/lib/cgi-bin/wiki

[Sat Apr 25 20:05:12 2009] [错误] [客户端84.243.222.12]脚本未找到或无法统计:/ usr/lib/cgi-bin/wikis

[2009年4月25日星期六21:46:46] [错误] [客户端211.68.23.167]请求中的URI无效GET HTTP/1.1 HTTP/1.1

[Sun Apr 26 06:13:47 …

ubuntu apache2

21
推荐指数
4
解决办法
4万
查看次数

在Ubuntu 11.04服务器中为postgresql启用PHP支持

我已经安装了支持php5的Apache2,一切都在那里工作.我已经安装了PostgreSQL,并且能够使用终端连接到它并执行SQL语句.

问题:我的PHP脚本和PostgreSQL数据库之间无法建立连接.我已经安装了从存储库打包的php5-pgsql,但连接不起作用.

我收到以下错误消息:

PHP致命错误:在[X]行的/var/www/[myfile].php中调用未定义的函数pg_connect()

如何在ubuntu 11.04中启用PHP5中对PostgreSQL连接的支持?

编辑:检查phpinfo()并找不到PostgreSQL的条目.我不知道为什么会这样,我DID为ubuntu 11.04安装php5-pgsql包.

这是有效的:我从Ubuntu存储库安装了phppgadmin.这不仅为我提供了一个很好的工具,它还安装了php所需的软件包以连接到postgresql.

在那之后,它全部在连接参数中.在我在pg_connect()中按顺序定义连接主机,端口,数据库,用户和密码之前,它不会连接到本地服务器上的数据库.

我仍然不知道为什么我自己安装php5-pgsql没有启用php的PostgreSQL连接.对此的任何输入都会有所帮助.

php postgresql apache2 ubuntu-11.04

21
推荐指数
1
解决办法
5万
查看次数

共享主机环境中的sys_get_temp_dir

注意:这也适合超级用户.

我在一个共享主机上用apache2 mpm itk和open_basedir设置PHP 5.3.10,每个用户可能看不到或更改另一个用户的文件.在apache2 vhost设置中,我添加了相应的条目来限制用户:

    AssignUserId     userA userA
    php_admin_value  open_basedir      /home/userA/www/
    php_admin_value  upload_tmp_dir    /home/userA/www/tmp/
    php_admin_value  session.save_path /home/userA/www/tmp/
    SetEnv           TMPDIR            /home/userA/www/tmp/
Run Code Online (Sandbox Code Playgroud)

现在,第一行将linux用户设置为用于apache2,接下来的三行将basedir,upload目录和session savepath定义在用户目录中.我会在一秒钟内回到最后一行.

现在出现问题:sys_get_temp_dir()应该回放php的临时目录,这是/ tmp在linux系统上的默认目录.出于安全原因,此目录应驻留在userA的open_basedir中.根据5.3.10的php-source,sys_get_temp_dir()-function使用环境变量TMPDIR来获取这个目录:

     // php-src/main/php_open_temporary_file.c:217-219
     /* On Unix use the (usual) TMPDIR environment variable. */
     {
             char* s = getenv("TMPDIR");
Run Code Online (Sandbox Code Playgroud)

这就是上面配置中的第五行应该做的事情.但是,sys_get_temp_dir()只返回全局系统目录,忽略环境变量(在$ _SERVER中完美设置,也可以通过查看phpinfo()).

这导致一些令人讨厌的错误,依赖于各种软件sys_get_temp_dir(),因为该目录不在open_basedir设置范围内.我试图将变量直接设置为$ _ENV和$ _SERVER而不改变行为.我试过putenv('TMPDIR=/home/userA/www/tmp')没有改变.

但是,我可以通过将变量定义到/ etc/apache2/envvars来更改输出 - 这对我来说没用,因为我希望每个VHOST都有自己的临时文件夹.

到目前为止,我发现的唯一解决方案是sys_get_temp_dir()通过像runkit这样的扩展来覆盖内部,并通过auto_prepend_file强制包含它.但是这个解决方案太脏了,我简直无法相信,周围没有更好的解决方案.

所以,我的问题:有没有办法改变sys_get_temp_dir()在apache2 vhost设置中设置的结果,而不用runkit重新实现该功能?

编辑: apache版本是2.2.22,我目前使用mod_php.由于我必须手动添加所有用户,因此也可以使用fcgi或类似的设置.

php cgi shared-hosting apache2

21
推荐指数
4
解决办法
1万
查看次数

如何通过Mac OS X 10.6.8中的终端访问Apache错误日志?

从Rails 3.0升级到3.1后,我在远程计算机上提供rails应用程序时遇到问题.所以我想看看Apache尝试启动我的应用程序时出现了什么问题,但它失败了.如何找到Apache(或者Passenger?)通过终端抛出的错误?

macos apache2 ruby-on-rails-3.1

21
推荐指数
1
解决办法
4万
查看次数

如何检查是否在Ubuntu中停止了Apache2?

我想确保apache2服务已停止.

1. I need to verify if apache2 is installed or not.
Run Code Online (Sandbox Code Playgroud)

当我输入:

sudo /etc/init.d/apache2 stop
Run Code Online (Sandbox Code Playgroud)

我有:

sudo: /etc/init.d/apache2: command not found
Run Code Online (Sandbox Code Playgroud)

这是否意味着没有安装apache2?或者它安装在另一个地方?

2. check apache2 process:
Run Code Online (Sandbox Code Playgroud)

当我输入:

ps a | grep apache2
Run Code Online (Sandbox Code Playgroud)

我有:

10448 pts/4    S+     0:00 grep --color=auto apache2
Run Code Online (Sandbox Code Playgroud)

这是否意味着apache2正在运行?

3. http://localhost test
Run Code Online (Sandbox Code Playgroud)

我有:

Google Chrome could not connect to localhost
Run Code Online (Sandbox Code Playgroud)

如何验证Apache2是否已停止?

ubuntu apache2 process

21
推荐指数
1
解决办法
10万
查看次数

如何设置Python脚本在Apache 2.0中工作?

我尝试在设置mod_python时使用几个谷歌搜索教程,但每次都失败了.你有一个好的,一步一步,坚如磐石的howto?

我的开发盒是OS X,制作 - Centos.

python apache apache2

20
推荐指数
3
解决办法
3万
查看次数

Apache2反向代理到需要BasicAuth但想要从用户隐藏它的端点

基本上我的情况是我有一个内部网站,需要一个单一的硬编码用户名和密码才能访问(这不能关闭,只能更改).我出于各种原因通过反向代理公开这个网站(隐藏端口,简化网址,简化NAT等).

但是,我想要做的是能够使用Apache来处理身份验证,以便:

  1. 我没有给每个人发密码
  2. 我可以使用Apache的BasicAuth拥有多个用户名和密码
  3. 对于内部用户,我不必提示输入密码

编辑:关于更丰富的身份验证的第二部分已移至新问题

这或多或少是我现在所拥有的:

<VirtualHost *:80>
  ServerName sub.domain.com

  ProxyPass        / http://192.168.1.253:8080/endpoint
  ProxyPassReverse / http://192.168.1.253:8080/endpoint

  # The endpoint has a mandatory password that I want to avoid requiring users to type
  # I.e. something like this would be nice (but does not work)

  # ProxyPass        / http://username:password@192.168.1.253:8080/endpoint
  # ProxyPassReverse / http://username:password@192.168.1.253:8080/endpoint

  # Also need to be able to require a password to access proxy for people outside local subnet
  # However these passwords will be …
Run Code Online (Sandbox Code Playgroud)

apache reverse-proxy apache2 mod-proxy basic-authentication

20
推荐指数
2
解决办法
4万
查看次数

如何配置Apache2以允许来自同一IP地址的多个同时连接?

默认情况下,Apache2似乎每个IP地址只允许1个连接.

如何配置Apache2以允许来自同一IP地址的多个同时连接?

这是我的情况:

  1. 托管在服务器上的Web应用程序.
  2. 远程客户端发出可能需要15秒才能完成的请求.
  3. 同一个远程客户端发出另一个(独立)请求.
  4. 目前,第二个请求位于队列中,直到第一个请求完成,因为Apache2似乎强加了每个IP地址1个连接的限制.

如何覆盖此默认行为并允许并行处理第二个请求?

提前谢谢大卫琼斯

apache configuration config apache2 apache-config

20
推荐指数
1
解决办法
2万
查看次数

如何在Apache 2中模拟和测试URL重写规则,当在共享主机上时,在.Htaccess中禁用/禁止RewriteLog?

如何模拟和检查的URL重写规则中的Apache 2,当sharehosting RewriteLog被禁用,或容许在.htaccess进行设置?换句话说,是否有任何工具/模拟器来测试一个url重写独立托管,检查看看possibel重写循环等?

谢谢!

apache mod-rewrite redirect apache2 url-rewriting

20
推荐指数
1
解决办法
5万
查看次数

Rails Apache2的乘客问题

我正在尝试使用apache2和mod_rails(Phusion Passenger)在ubuntu10.10上的rails服务器上设置ruby.

我已经安装了ruby 1.9.2-p0和rails 3.0.8,并使用passenger-install-apache2-module和passenger gem(v3.0.7)安装了Passenger.

然后它告诉我在我的Apache配置文件中添加3行.所以我将这些行添加到'/etc/apache2/apache2.conf'中:

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby
Run Code Online (Sandbox Code Playgroud)

我编辑了我的'/etc/apache2/httpd.conf'并添加了:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName 192.168.0.2
DocumentRoot /var/www/webop/public

<Directory /var/www/webop/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我还发现/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/中的文件mod_passenger.so实际上不存在,其名称为mod_passenger.c.但我没有从中得到任何错误.

服务器只能通过LAN访问.当我访问服务器时,我看到我的应用程序的公共文件夹中的所有文件和目录,但应用程序本身没有开始.

当我重新启动apache它告诉我mod_rails已经加载所以我猜这个乘客正在运行,但我无法弄清楚为什么它不启动我的应用程序!

提前致谢!

ruby-on-rails apache2 passenger mod-rails ubuntu-10.10

20
推荐指数
2
解决办法
2万
查看次数