我已经设置好了服务器,现在我想使用 Apache2 作为我的 Perl 脚本的后端(nginx 太慢了,而且也不能使用 mod_perl)
因此,我已经安装了 Apache:
服务器版本:Apache/2.4.18
/etc/apache2/ports.conf, 我有:
Listen 8181
<IfModule ssl_module>
Listen 8181
</IfModule>
<IfModule mod_gnutls.c>
Listen 8181
</IfModule>
我的虚拟主机非常简单:
<VirtualHost 127.0.0.1:8181>
LoadModule perl_module /usr/lib/apache2/modules/mod_perl.so
LogLevel debug
ServerName ultranerds.co.uk
ServerAdmin [email protected]
DocumentRoot /home/rachel/web/ultranerds.co.uk/public_html
Alias /vstats/ /home/rachel/web/ultranerds.co.uk/stats/
Alias /error/ /home/rachel/web/ultranerds.co.uk/document_errors/
CustomLog /home/rachel/web/ultranerds.co.uk/logs/ultranerds.co.uk.bytes bytes
CustomLog /home/rachel/web/ultranerds.co.uk/logs/ultranerds.co.uk.log combined
ErrorLog /home/rachel/web/ultranerds.co.uk/logs/ultranerds.co.uk.error.log
<Directory /home/rachel/web/ultranerds.co.uk/public_html>
Options MultiViews FollowSymLinks
AllowOverride all
Require all granted
AddHandler cgi-script .cgi .pl
Options +ExecCGI
Options FollowSymLinks
</Directory>
<Directory /home/rachel/web/ultranerds.co.uk/stats>
AllowOverride All
</Directory>
<IfModule mod_ruid2.c>
RMode config
RUidGid rachel rachel
RGroups www-data
</IfModule>
<IfModule itk.c>
AssignUserID rachel rachel
</IfModule>
</VirtualHost>
我已使用以下命令启用它:
a2ensite ultranerds.co.uk
netstat 显示它正在监听 8181:
netstat -nltp|grep 8181 tcp6 0 0 :::8181 :::* 监听 5747/apache2
重新启动 Apache 后,我希望能够在浏览器中访问 ultranerds.co.uk:8181(以检查其是否正常工作)
我错过了什么?我在 nginx 中收到此错误,因此我尝试调试 Apache 或我的 nginx 配置是否有问题:
读取上游响应头时上游过早关闭连接
更新:好的,我肯定做错了什么。如果我尝试:
我刚刚得到:
警报!:意外的网络读取错误;连接中止。
我不明白为什么,因为我可以在这里看到:
netstat -an | grep 8181 | grep -i listen
tcp6 0 0 :::8181 :::* LISTEN
wget 也给我失败了:
获得http://127.0.0.1:8181 --2017-04-14 14:17:10-- http://127.0.0.1:8181/ 连接到 127.0.0.1:8181...失败:连接被拒绝。
我只是不明白发生了什么。防火墙似乎打开了,所以我一定错过了什么。我甚至在 apache2 的 ports.conf 文件中尝试过这个:
Listen 8181
Listen 0.0.0.0:8181
Listen 192.0.2.1:8181
netstat 显示它正在监听:
netstat -tulpn | grep :8181
tcp6 0 0 :::8181 :::* LISTEN 16207/apache2
呃 :S
答案1
好吧,我最终找了一位服务器技术朋友来看一下。他主要说的是,我需要将 Apache 改为使用“prefork”而不是“event”运行:
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod actions
我不太确定他是否还更改了其他内容,但似乎已经解决了问题。我不太确定为什么这会导致问题,但当我进行下一次服务器构建时,我会检查它是否有效,或者我是否遇到更多问题 :)