我在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机器上使用Apache/PHP进行不频繁的开发,因此我选择将apache作为控制台进程而不是服务运行.如果错误可以记录到控制台窗口而不是日志文件,那将是很好的,所以我可以立即看到它们.这可以以某种方式完成吗?似乎apache没有内置这样的功能,我也找不到可以做到这一点的mod.
我想在不使用.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文件中的一些指令,但我不确定.救命.:)
我编写了一个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) 我在端口8080上的单个apache tomcat上托管了2个应用程序
http://mydomain.com:8080/application1http://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技能协助?
我的问题是.htaccess我的本地服务器上的文件没有被读取.VirtualHost文件中的设置似乎始终优先.
我尝试过以下方法:
mod_rewriteAllowOverride为All但这会导致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文件中,但我希望我的 …
我有一个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日志中没有跟踪.
我昨天刚升级到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) 我在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,现在灯工作正常.
我刚刚使用过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)
我该如何解决这个问题