我们有一个在默认端口上运行 Apache 的 Red Hat Enterprise Linux 4 实例。我们想添加第二个 Apache 实例,我们可以与第一个实例完全分开重新启动。我们可以这样做吗?
也许还有另一个易于维护的 Web 服务器可以在非标准端口上运行非常简单的 PHP 脚本?我们希望能够在不使用 RHEL 服务器上运行的默认 Apache 实例的情况下远程触发 php 脚本。有任何想法吗?
Apache 可以在一台机器上处理的 VirtualHosts 的最大数量是多少(我的意思不是与负载相关的任何事情,假设它与问题无关)。我们只使用 Apache,没有任何像 nginx 这样的代理。
我问是因为在一个论坛上,一个人报告说他的 Apache 工作不稳定,一台机器上的站点数量超过 400。
如果您有一个可以处理 400 多个的配置,请在此处告诉我。
谢谢。
我每天都会在我的 apache 错误日志中收到许多这样的错误:
[错误] [客户端 127.0.0.1] 脚本 '/var/www/html/wp-cron.php' 未找到或无法统计
我想知道它是否与我的 httpd.conf 有关系,因为我的 DocumentRoot 设置为“/var/www/html”,但我的 WordPress 站点位于名为 httpdocs 的顶级目录中,而不是 html。wp-cron.php 存在,但它在 httpdocs 中,而不是 html,并且没有 html 目录。VPS 和 IP 上有多个 WordPress 站点和域。
日志中没有其他类似的错误,WordPress 似乎运行良好。但我想修复这些错误,因为它对服务器造成了一些额外的负担。
有没有办法在 httpd.conf 中添加重定向或别名,以便可以找到 wp-cron.php?或者这是一个不同的解决方案?
编辑: 找到答案;问题是主机文件条目:VPS 上多个域的主机文件条目?
我在 Apache HTTPd 上运行一个 Web 服务站点,每次我收到一个错误,指示传入的 URL 太长(HTTPError: HTTP Error 414: Request-URI Too Large)。
我的网站服务的是程序而不是浏览器,所以我不担心 2K 浏览器的限制。
有没有办法增加可接受的URI长度?
无论如何(也许使用inetd)是否有可能使443端口同时用作sshd和httpd SSL?或许通过分析请求,如果请求是“CONNECT”,则让httpd处理连接;如果请求是 ssh 初始化,则让 sshd 处理它。
我正在尝试使用 ProxyPass 和 ProxyPassReverse 将请求通过 Apache 代理到另一个服务器实例,该实例在 Vhost 存在的不同 TCP 端口上绑定到本地主机(当目标绑定到:5000 时,VHost 绑定到:80)。
但是,我在访问位置时反复收到 HTTP 503。
根据ProxyPass 文档...
<VirtualHost *:80>
ServerName apacheserver.domain.local
DocumentRoot /var/www/redmine/public
ErrorLog logs/redmine_error
<Directory /var/www/redmine/public>
Allow from all
Options -MultiViews
Order allow,deny
AllowOverride all
</Directory>
</VirtualHost>
PassengerTempDir /tmp/passenger
<Location /rhodecode>
ProxyPass http://127.0.0.1:5000/rhodecode
ProxyPassReverse http://127.0.0.1:5000/rhodecode
SetEnvIf X-Url-Scheme https HTTPS=1
</Location>
Run Code Online (Sandbox Code Playgroud)
我已经测试了将备用服务器绑定到接口 IP 地址,并且出现了同样的问题。
服务器服务请求是 python paste:httpserver 的一个实例,它已被配置为使用 /rhodecode 后缀(正如我在其他关于 ProxyPass 的帖子中看到的那样)。项目本身的文档Rhodecode 报告使用了上述内容。
如果我的目标是在不同端口上提供服务的另一台服务器,则问题仍然存在。
ProxyPass 是否允许代理到不同的 TCP 端口?
[更新]
我不会删除它,以防有人遇到同样的问题。
我设置了一个 ErrorLog,在那个 ErrorLog …
我正在检查 /usr/local/apache/logs/error_log
这已经发生了好几次。有时服务器重启很快,有时很慢。什么因素可能导致这种混乱。
[Mon Dec 31 21:40:49 2012] [notice] Graceful restart requested, doing restart
[Mon Dec 31 21:40:53 2012] [error] [client 66.249.74.237] File does not exist: /home2/wallpape/public_html/tag
[Mon Dec 31 21:40:53 2012] [error] [client 66.249.74.237] File does not exist: /home2/wallpape/public_html/404.shtml
[Mon Dec 31 21:50:02 2012] [notice] SSL FIPS mode disabled
[Mon Dec 31 21:50:03 2012] [notice] Apache/2.2.23 (Unix) mod_ssl/2.2.23 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 configured -- resuming normal operations
Run Code Online (Sandbox Code Playgroud)
另一方面,不正常的重启似乎更快:
[Mon Dec 31 21:52:58 2012] [notice] SIGHUP received. Attempting to restart …Run Code Online (Sandbox Code Playgroud) 我有一个签名的 CA,由我的大学颁发。我使用他们的公钥文件生成了我的 CSR,如下所示:
openssl genrsa -out myservername.key 2048 (new key)
openssl req -new -key myservername.key -out myservername.csr
Run Code Online (Sandbox Code Playgroud)
我给他们发了 CSR,他们给我发回了签名的 .crt 文件。
我为我的 CA 密钥和证书创建了一个目录并将它们放在那里。
我的 httpd.conf 的相关部分如下所示:
<VirtualHost _default_:443>
SSLEngine on
SSLCACertificateFile /var/cosign/certs/CA/publickey.pem
SSLCertificateFile /var/cosign/certs/myserver.crt
SSLCertificateKeyFile /var/cosign/certs/myserver.key
DocumentRoot /var/www/html/
<Directory /var/www/html>
Options -Indexes
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)
但它没有将此证书用于 SSL。如果我执行此命令:
openssl s_client -connect localhost:443 -showcerts
Run Code Online (Sandbox Code Playgroud)
我明白了:
CONNECTED(00000003)
depth=0 C = --, ST = SomeState, L = SomeCity, O = SomeOrganization, OU = SomeOrganizationalUnit, CN = portcharlotte, emailAddress = root@portcharlotte
verify error:num=18:self signed …Run Code Online (Sandbox Code Playgroud) 希望这是一个好问题,对处于类似情况的任何人都有用。我最近接替了我公司一位非常资深的 Linux 管理员,这是我第一次不得不设置一个新服务器来为我们的客户提供我们的内容。我的前任在这件事上留下了有限的文件,因为在他离开时其他事情更重要。我已经广泛地参考了我拥有的文档,以及来自以前服务器的配置和大量在线阅读来设置所有内容。
我正在构建的服务器的“堆栈”如下:CentOS 7、Apache 2.4.6、MariaDB 5.X、服务于 JSP/Servlets 的 Tomcat 7。以前的生产安装使用 CentOS 5、旧版本的 Apache 和 MySQL 以及 Tomcat 5.X。
Apache 是前端,它使用 AJP 连接到 Tomcat 后端。大多数流量将是 HTTPS。
该服务器是,我认为是 Gen 9 HP 服务器,它在 RAID 1 阵列中具有 32GB RAM 和 SSD。在让它工作后,我现在关心的是最大化它同时为用户提供服务的能力,我预计数百个用户的爆发并不少见。为此,我希望防止堆栈中的任何一点出现瓶颈:从 Tomcat 和 MariaDB 开始,并针对这些采取特定的措施,我对这些措施感到满意。继续使用 Apache,但是我发现更难理解我应该做什么。
有 3 种不同类型的“工人”,我在优化这些方面有 3 个主要问题:
1. 有三个选项,prefork、mpm_worker 和 mpm_event。我不太明白如何配置它们,尽管我对它们的用途有一个大致的了解。
2. 与之前服务器中的 Apache 不同,StartServers、ServerLimit、MaxRequestsPerChild 等选项未在 /etc/httpd/conf/httpd.conf 中列出。是否有我必须手动覆盖的默认设置?除了“它们是上次手动添加的”之外,还有其他原因可以在旧的 httpd.conf 中找到设置而不是新的设置吗?
我指的是这个,在旧的 httpd.conf 中,我在新配置文件的任何地方都看不到任何类似的东西,只有一个规范:
// prefork MPM
// StartServers:要启动的服务器进程数
// MinSpareServers:保持空闲的最小服务器进程数
// MaxSpareServers:保持空闲的最大服务器进程数
// ServerLimit:MaxClients 的最大值服务器的生命周期
// MaxClients:允许启动的最大服务器进程数
// MaxRequestsPerChild:服务器进程服务的最大请求数 …
我的服务器有时会被 apache 中的连接填满,卡在“发送回复”状态,需要我重新启动 apache。大多数情况下这是有效的,但有时我会在尝试重新启动 apache 时收到此错误:
Job for httpd.service failed because the control process exited with
error code. See "systemctl status httpd.service" and "journalctl -xe"
for details.
Run Code Online (Sandbox Code Playgroud)
运行systemctl status httpd.service或journalctl -xe按照建议然后带回以下相关信息:
Nov 15 06:24:06 hostname.biologyreporter.com systemd-logind[874]:
Failed to remove runtime directory /run/user/1067: Device or resource busy
Nov 15 06:24:27 hostname.biologyreporter.com restartsrv_httpd[29484]:
[Fri Nov 15 06:24:27.255594 2019] [core:emerg] [pid 29509:tid 47498001208384]
(28) No space left on device: AH00023: Couldn't create the mpm-accept mutex
Nov 15 06:24:27 hostname.biologyreporter.com …Run Code Online (Sandbox Code Playgroud)