我的服务器(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 …
我已经安装了支持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连接.对此的任何输入都会有所帮助.
注意:这也适合超级用户.
我在一个共享主机上用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或类似的设置.
从Rails 3.0升级到3.1后,我在远程计算机上提供rails应用程序时遇到问题.所以我想看看Apache尝试启动我的应用程序时出现了什么问题,但它失败了.如何找到Apache(或者Passenger?)通过终端抛出的错误?
我想确保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是否已停止?
我尝试在设置mod_python时使用几个谷歌搜索教程,但每次都失败了.你有一个好的,一步一步,坚如磐石的howto?
我的开发盒是OS X,制作 - Centos.
基本上我的情况是我有一个内部网站,需要一个单一的硬编码用户名和密码才能访问(这不能关闭,只能更改).我出于各种原因通过反向代理公开这个网站(隐藏端口,简化网址,简化NAT等).
但是,我想要做的是能够使用Apache来处理身份验证,以便:
编辑:关于更丰富的身份验证的第二部分已移至新问题
这或多或少是我现在所拥有的:
<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) 默认情况下,Apache2似乎每个IP地址只允许1个连接.
如何配置Apache2以允许来自同一IP地址的多个同时连接?
这是我的情况:
如何覆盖此默认行为并允许并行处理第二个请求?
提前谢谢大卫琼斯
如何模拟和检查的URL重写规则中的Apache 2,当sharehosting RewriteLog被禁用,或不容许在.htaccess进行设置?换句话说,是否有任何工具/模拟器来测试一个url重写独立托管,检查看看possibel重写循环等?
谢谢!
我正在尝试使用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已经加载所以我猜这个乘客正在运行,但我无法弄清楚为什么它不启动我的应用程序!
提前致谢!
apache2 ×10
apache ×4
php ×2
ubuntu ×2
cgi ×1
config ×1
macos ×1
mod-proxy ×1
mod-rails ×1
mod-rewrite ×1
passenger ×1
postgresql ×1
process ×1
python ×1
redirect ×1
ubuntu-10.10 ×1
ubuntu-11.04 ×1