标签: apache2

如何在Apache 2上忽略Windows上的Perl shebang?

我在Windows机器上设置了一个本地Perl Web环境.我正在处理的应用程序最初来自Linux服务器,因此源.pl文件的shebang 如下所示:

#!/usr/bin/perl
Run Code Online (Sandbox Code Playgroud)

这会导致我的Windows开发机器出现以下错误:

(OS 2)The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

是否可以更改我的Apache 2 conf以便在我的Windows机器上忽略shebang?当然我可以设置shebang #!c:\perl\bin\perl.exe,这很明显; 但问题是部署更新的文件.显然,在每次部署时更改这一点会非常不方便.我在Windows 7上使用ActivePerl.

更新:

我应该提到我需要保留shebang,以便脚本可以在我们的共享主机Linux生产服务器上运行.如果我没有这个约束而且我不必使用shebang,那么显而易见的答案就是不使用它.

windows perl apache2 shebang activeperl

11
推荐指数
1
解决办法
6333
查看次数

Apache httpd可以将错误记录到控制台而不是Windows下的日志文件吗?

我在我的Windows机器上使用Apache/PHP进行不频繁的开发,因此我选择将apache作为控制台进程而不是服务运行.如果错误可以记录到控制台窗口而不是日志文件,那将是很好的,所以我可以立即看到它们.这可以以某种方式完成吗?似乎apache没有内置这样的功能,我也找不到可以做到这一点的mod.

apache console logging apache2

11
推荐指数
2
解决办法
9058
查看次数

如果不使用.htaccess文件,我在哪里将RewriteRules放在Apache2中?

我想在不使用.htaccess文件的情况下配置mod_rewrite规则.当我在.htaccess文件中放置规则时,它们工作正常,但我更愿意将所有配置保留在/ etc/apache2/sites-available/[site name]配置文件中.

当我在VirtualHost或Directory指令中放置相同的RewriteRules时,没有任何作用.我究竟做错了什么?以下是我的VirtualHost配置文件中的示例:

<Directory />
 Options FollowSymLinks
 # AllowOverride is on for the .htaccess files to work
 AllowOverride All
 RewriteEngine On
 RewriteRule ^oldsite\.php$ newsite.php
</Directory>
Run Code Online (Sandbox Code Playgroud)

我想我可能会忽略apache2.conf文件中的一些指令,但我不确定.救命.:)

mod-rewrite apache2 virtualhost

11
推荐指数
1
解决办法
9080
查看次数

如何在使用通配符的Directory指令中使用apache2 mod_rewrite?

我编写了一个Web应用程序,我在专用服务器上运行,用于托管Web应用程序.此Web应用程序的实例可在不同的域中使用,每个域都有自己的Web应用程序文件副本,允许根据需要进行自定义.

我在Debian Squeeze下运行Apache/2.2.16.

我在VirtualHost指令下执行所有配置,不使用.htaccess文件.

为了简化apache配置,我想维护一个像这样的Directory指令:

<Directory "/srv/www/*/public/">
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteCond %{REQUEST_URI} !=/robots.txt
  RewriteRule ^(.+)$ /index.php?q=$1 [L,QSA]
</Directory>
Run Code Online (Sandbox Code Playgroud)

但是,RewriteRule会产生错误的结果,因为在使用通配符Directory值时,它无法删除每个目录的前缀.这是重写日志的输出:

[rid#b9832078/initial] (3) [perdir /srv/www/*/public/] applying pattern '^(.+)$' to uri '/srv/www/domain1/public/login'
[rid#b9832078/initial] (4) [perdir /srv/www/*/public/] RewriteCond: input='/srv/www/domain1/public/login' pattern='!-f' => matched
[rid#b9832078/initial] (4) [perdir /srv/www/*/public/] RewriteCond: input='/srv/www/domain1/public/login' pattern='!-d' => matched
[rid#b9832078/initial] (4) [perdir /srv/www/*/public/] RewriteCond: input='/login' pattern='!=/favicon.ico' => matched
[rid#b9832078/initial] (4) [perdir /srv/www/*/public/] RewriteCond: input='/login' pattern='!=/robots.txt' => matched
[rid#b9832078/initial] (2) [perdir /srv/www/*/public/] rewrite '/srv/www/domain1/public/login' -> …
Run Code Online (Sandbox Code Playgroud)

mod-rewrite apache2

11
推荐指数
1
解决办法
9776
查看次数

子域代理传递所有指向单个服务器

我在端口8080上的单个apache tomcat上托管了2个应用程序

  • http://mydomain.com:8080/application1
  • http://mydomain.com:8080/application2

我想在他们两个面前运行一个apache代理,具有以下行为>

  • http://mydomain.com/* (apache2) -> http://mydomain.com:8080/application1/* (tomcat)
  • http://subdomain.mydomain.com/* (apache2) -> http://mydomain.com:8080/application2/* (tomcat)

我现在最好的是2台具有不同IP的机器,并相应地路由域和子域.

理想情况下,我希望apache代理和2个应用程序在SAME机器上...

任何人都有踢屁股DEVOps技能协助?

tomcat reverse-proxy apache2

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

如何使用Apache VirtualHost获取.htaccess文件

我的问题是.htaccess我的本地服务器上的文件没有被读取.VirtualHost文件中的设置似乎始终优先.

我尝试过以下方法:

  • 启用 mod_rewrite
  • 更改AllowOverrideAll但这会导致a HTTP Error 500 Internal server error.我尝试了各种选项,但它总是导致500错误.

我在Ubuntu上使用VirtualHost文件,如下所示:

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /web/website
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /web/website>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在我的.htaccess文件中,/web/website我有以下规则(未被阅读):

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA]
ErrorDocument 404 /404
ErrorDocument 401 /401
Run Code Online (Sandbox Code Playgroud)

我尝试过的一件事就是将这些规则直接附加到VirtualHost文件中,但我希望我的 …

.htaccess apache2 virtualhost

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

使用websocket mod_proxy_wstunnel反向代理

我有一个Web套接字和我的反向代理Apache的问题,我已经在最新版本2.4.5升级并加载了模块mod_proxy_wstunnel.

httpd.conf:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.toto.fr
ServerAlias toto.fr


ProxyPass /my_app  http://1X.X.X.1:8080/my_app
ProxyPassReverse /web_pmr  http://1X.X.X.1:8080/my_app
ProxyPassReverseCookiePath /my_app /
ProxyPassReverseCookieDomain localhost my_app
ProxyRequests off
ProxyTimeout 15

#WEBSOCKETS


ProxyPass /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/my_app/BasicWebsocketServlet retry=0
ProxyPassReverse /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/web_pmr/BasicWebsocketServlet retry=0


ErrorLog "logs/my_app_error.log"
LogLevel debug
CustomLog "logs/my_app_access.log" combined
<Proxy *>
      Order deny,allow
      Allow from all
</Proxy>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

当我在本地URL中测试时,websockets正在运行,但是使用反向代理Apache,Tomcat日志中没有跟踪.

reverse-proxy apache2 mod-proxy websocket

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

与OS X Mavericks的Apache2 mod_jk段错误

我昨天刚升级到Mavericks,不得不为我的开发环境重新安装mod_jk.从源代码编译它有点痛苦.我在OS X 上发现了一个关于mod_jk 的先前问题的这个页面,但是还有一些额外的箍我不得不跳过.出于某种原因,apxs认为gcc生活在:

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc
Run Code Online (Sandbox Code Playgroud)

但是那个确切的文件夹不存在; 我不得不对现有XcodeDefault.xctoolchain目录进行符号链接:

sudo ln -s XcodeDefault.xctoolchain/ OSX10.9.xctoolchain
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行configure:

./configure CFLAGS='-arch x86_64' APXSLDFLAGS='-arch x86_64' --with-apxs=/usr/sbin/apxs
Run Code Online (Sandbox Code Playgroud)

但是,配置失败,因为它无法找到<stdio.h>,所以我将OS X 10.9工具链符号链接为:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/ /usr/include
Run Code Online (Sandbox Code Playgroud)

然后,我可以通过sudo make install -f Makefile.apxs在apache-2.0子目录中运行来编译和安装模块.但是,当我启动Apache时sudo apachectl start,它立即崩溃了一个段错误:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib              0x00007fff875fb866 __pthread_kill + 10
1   libsystem_pthread.dylib             0x00007fff8b8a435c pthread_kill + 92
2   libsystem_c.dylib                   0x00007fff92480bba abort + 125
3   libsystem_c.dylib                   0x00007fff92480d31 abort_report_np + 181
4   libsystem_c.dylib                   0x00007fff924a48c5 …
Run Code Online (Sandbox Code Playgroud)

apache macos apache2 mod-jk osx-mavericks

11
推荐指数
1
解决办法
2298
查看次数

PHP致命错误:require():无法解锁pthread锁

我在Debian Linux上使用LAMP.Apache 2.2.22-12,PHP 5.4.4.

有时我收到此错误,然后我无法重新加载页面或打开页面,其中包含此错误的文件.我遇到这样的错误后,我无法重启apache

重新启动Web服务器:apache2(98)已在使用的地址:make_sock:无法绑定到地址[::]:80

(98)地址已在使用中:make_sock:无法绑定到地址0.0.0.0:80没有可用的侦听套接字,关闭

无法打开日志

行动'开始'失败.

Apache错误日志可能包含更多信息.失败!

在apache日志文件中:

[Wed Nov 21 15:07:55 2012] [warn]子进程4020仍未退出,发送SIGTERM

[Wed Nov 21 15:07:55 2012] [warn]子进程4021仍未退出,发送SIGTERM

[Wed Nov 21 15:07:55 2012] [warn]子进程4022仍未退出,发送SIGTERM

[Wed 11月21日15:07:57 2012] [错误]子进程1309仍未退出,发送SIGKILL

[Wed 11月21日15:07:57] [错误]子进程1310仍未退出,发送SIGKILL

[Wed 11月21日15:07:57 2012] [错误]子进程1311仍未退出,发送SIGKILL

和主机日志:

[Wed 11月21日12:21:24] [错误] [客户端127.0.0.1] PHP致命错误:require():无法解锁〜/ www/yii/yii-1.1.11.58da45/framework/base中的pthread锁定/CApplication.php在第127行

$config=require($config);
Run Code Online (Sandbox Code Playgroud)

要么:

[Wed 11月14日21:04:26] [错误] [客户端127.0.0.1] PHP致命错误:require_once():无法解锁第14行〜/ projects/politiya/index.php中的pthread锁定

有:

require_once($game_loader);
Run Code Online (Sandbox Code Playgroud)

我删除了php-apc,现在灯工作正常.

php apache apache2

10
推荐指数
2
解决办法
3122
查看次数

如何在apache 2.4.6上安装apxs模块

我刚刚使用过apt-get update,我的apache已更新为2.4.6.

我想安装apxs来编译模块,我得到这个错误

The following packages have unmet dependencies:
 apache2-prefork-dev : Depends: apache2.2-common (= 2.2.22-1ubuntu1.4) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题

linux apache ubuntu apache2

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