我有一个Java和一个PHP应用程序,我都希望在同一台机器上运行(使用Tomcat)。 据我所知,我有两个select: 选项1:使用mod_jk执行经典的apache-tomcat设置,并让apache处理php请求,并将所有请求转发到Java应用程序到tomcat。 选项2:只使用tomcat安装php就可以了。 所以,没有额外的Apache服务器来处理PHP。 我对这方面的经验并不多,所以我想知道哪一种select是明智的select,因为我无法预见可能会出现哪些问题。 我个人更喜欢选项2,因为我只能pipe理一台服务器而不是两台。 不过,我对此感觉不好,因为大多数人似乎更喜欢选项1。 我应该select哪个选项? 重要提示:我需要为 (php和java)应用程序提供SSL支持 。 据我所知,创build用于购买SSL证书的CSR文件在apache和tomcat(openssl和keytool)之间是不同的。 由于我不想购买两张证书,所以必须记住这一点。
我有一个像这样的pipe道日志程序: #!/usr/bin/php <?php $fd = fopen("php://stdin", "r"); while(true) { $l = fread($fd,8192); $l = trim($l); if($l =="") continue; file_put_contents('/home/proxy/testfile',$l."\n", FILE_APPEND); } fclose($fd); 并在我的networking服务器configuration我有: LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" proxylog CustomLog "|/home/proxy/logger.php" proxylog 奇怪的是,我收到一些写入日志input,但只是很less。 远远低于默认的日志文件。 我也不能识别一个模式。 我也等了很长时间,并成功地检查了我的自定义pipe道日志中最后一个日志条目之前的时间范围内缺less的日志行 – 以消除缓冲区造成这种情况的可能性。 有任何想法吗?
我有一些旧的HTML页面,其中包括SSI包括在所有页面中的某些HTML。 所以,SSI看起来像这样: <!–#include virtual="/includes/noNav/footercode.html"–> 但是我想将包含的文件从/includes/noNav/footercode.html移动到/includes/footercode.html,所以我在.htaccess文件中实现了这样的redirect: # Redirect permanent /includes/noNav/footercode.html http://intranet.myorg.org/includes/footercode.html 但是现在我得到错误说“无法包含”/includes/noNav/footercode.html“在parsing文件”所以,redirect不能在包含的文件上工作? 另外,如果我直接浏览到旧path,它将正确地redirect我。 但是,如果包含path,则会失败。
服务器运行Ubuntu 10.10,Apache 2.2.16,PHP 5.3.3-1ubuntu9.3,phpMyAdmin 3.3.7deb5build0.10.10.1。 由于这个服务器也在端口443上运行Zimbra,所以我configuration了apache来在端口81上提供SSL。到目前为止,我已经成功地在这个虚拟主机上运行了一个CMS脚本。 但是,当我访问/ phpmyadmin(使用默认别名设置)在我的自定义ssl端口并提交login表单时,我被redirect到http://vhost.domain.com:81/index.php?TOKEN=foo (注意http://而不是loginurl使用的https://)。 这会生成一个错误400错误请求,抱怨说“纯HTTP到启用SSL的服务器端口”。 然后我可以在URL中手动更改http://到https://并按预期方式使用phpmyadmin。 我很烦,花了一个小时,试图解决它,现在更恼火,我无法弄清楚。 我尝试了各种各样的东西,包括: 添加$ cfg ['PmaAbsoluteUri'] =' https: //vhost.domain.com:81/phpmyadmin / '; 到/usr/share/phpmyadmin/config.inc.php文件,但是这并没有解决问题(即使/usr/share/phpmyadmin/libraries/auth/cookie.auth.lib.php看起来应该遵守它,用它作为redirect)。 添加$ cfg ['ForceSSL'] = 1; 到相同的config.inc.php,但然后阿帕奇螺旋无限redirect。 将重写规则添加到apache的vhost-ssl conf文件中,但是当http://与正确的ssl端口81一起出现时,我无法弄清楚要使用的条件。 大量的谷歌search 。 以下是相关的Apacheconfiguration部分: /etc/apache2/ports.conf <IfModule mod_ssl.c> NameVirtualHost *:81 Listen 81 </IfModule> 在/ etc / apache2的/启用的站点- /虚拟主机,nonssl <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName vhost.domain.com DocumentRoot /home/xxx/sites/vhost/html RewriteEngine […]
我有一个看起来很容易的任务,但不知何故,我不能得到它的工作: 我的httpd.conf中有一些有趣的行: … DocumentRoot "D:/opt/apache/htdocs" … ScriptAlias /cgi-bin/ "D:/opt/apache/cgi-bin/" … <Directory "D:/opt/apache/htdocs"> Options Indexes FollowSymLinks ExecCGI AllowOverride None Order allow,deny Allow from all </Directory> <Directory "D:/opt/apache/cgi-bin/"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> (我知道这是愚蠢的,但它只是一个testing机器:D。) 现在,我有d:\opt\apache\cgi-bin\expired.pl ,我期望GET /licensecheck.php?code=123456 。 我希望让客户认为它使用/licensecheck.php ,但实际上通过\expired.pl返回数据。 我所尝试的是在http.conf的末尾设置以下http.conf : RewriteEngine on RewriteRule ^/licensecheck.php$ /cgi-bin/expired.pl [T=application/x-httpd-cgi,L] …但它保持404我,在我的DocumentRoot中寻找cgi-bin 目录 (不是cgi-bin \ […]
我为我的网站运行3个独立的虚拟主机(Django w / wsgi主站点,另一个Django w / wsgi站点的移动版本,以及第三个Wordpress站点的博客)。 几个星期后,交换内存上升到我的负载和ping时间变得非常慢的时候。 当我看到top ,我看到有几个Apache进程占用大量的内存,并且已经运行了至less一个小时。 这是在Rackspace云(中型实例)上运行的Ubuntu 10.04服务器上。 我正在使用守护进程模式下的wsgi运行这两个django站点(threads = 1,processes = 2)。 我的apache2.conf主要设置看起来像这样(为了减less这篇文章的大小,删除了几个“无关”的东西 – 如果你期待另一个设置,让我知道,我可以检查是否在那里) : Timeout 120 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> <IfModule mpm_worker_module> StartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxClients […]
我在Ubuntu 10.04上有一个默认的Apache安装。 我使用下面的Nmap扫描来确定可用的Apache方法: nmap -p80 –script=http-methods 192.168.1.66 结果是: http-methods: GET HEAD POST OPTIONS 我试图消除HEAD方法。 所以在/etc/apache2/apache.conf添加了以下内容: <Directory "/var/www/*"> <LimitExcept GET POST OPTIONS> Deny from all </LimitExcept> … </Directory> 然后我重新启动了Web服务器。 然而,nmap扫描仍然打印相同的结果。 有谁知道我在这里错过了什么?
我面临着与Apache的问题。 以下日志显示在error_log文件中。 –15:01:26– http://bandits.ucoz.hu/autorun.sh Resolving bandits.ucoz.hu… 193.109.247.50 Connecting to bandits.ucoz.hu|193.109.247.50|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 396 [application/octet-stream] Saving to: `autorun.sh' 0K 100% 51.6M=0s 15:01:26 (51.6 MB/s) – `autorun.sh' saved [396/396] sh: fetch: command not found % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent […]
我已经看到很多讨论关于使用Apache作为代理(mod_proxy或mod_jk)和Glassfish(以及其他Java应用服务器)的最佳方式的讨论,但是我还没有看到有人真正解释过为什么。 我现在的安装是一个运行Ubuntu Server的VPS,Glassfish在端口8080上接受HTTP请求(iptables将端口80请求转发到端口8080,因此我不必以root身份运行Glassfish)。 我运行了几个小网站。 我的网站分为两个主要部分:静态和dynamic。 他们每个都在一个单独的子域。 使用Apache(或其他Web服务器)处理静态内容会很容易,然后使用Apache作为dynamic内容的代理,但有没有这样做的理由? 如果我使用Apache,理想的情况是运行内存less于100MB,以节省其他运行的空间。 使用最新的应用程序服务器(Glassfish 3),通过使用Apache作为代理,我可以获得任何性能优势吗?
如果我尝试在/etc/apache2/sites-enabled创build一个没有sudo的链接,它将失败并拒绝一个权限。 当我尝试使用sudo来创build文件时,它不是一个链接。 有任何想法吗? 我从启用网站运行的确切命令是ln ../sites-available/newsite newsite 我连接的文件归我所有。