envvars - apache2ctl 的默认环境变量

envvars - apache2ctl 的默认环境变量

我想知道如何在 Ubuntu 16.04 alpha 版本重新启动时启动 k=10 Apache2 服务器进程。昨天,我读到了这个网址,[https://rudd-o.com/linux-and-free-software/tuning-an-apache-server-in-5-minutes],它表示将 Apache2 与 prefork.c 模块一起使用并将 StartServers 设置为 10

<IfModule prefork.c>
StartServers       4
MinSpareServers    3
MaxSpareServers   10
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  10000
</IfModule>

不幸的是,我的 apache2 只有 event.c 模块。我尝试使用 sudo apt-get install apache-mtm-prefork 将 apache2 升级到 prefork.c 模块,但安装错误表示没有此类包可用,因为它可能已过时或过时。然后我尝试 sudo apt-get update 并收到相同的错误消息。

我的下一步是尝试通过更改 /etc/httpd.conf 并使用 StartServers = 5 配置 apache2 事件模块,然后重新启动我的 systemd apache.service 文件和 ps -ef | grep -in "apache2" 仅显示 2 个 www-data apache2 进程和 ps-ef | grep -in "mod" 显示没有 mod-mono-server4 进程。

此外,在 bash shell 命令提示符下运行 apache2 时,它表示语法错误 APACHE2_LOCK_FILE 环境变量丢失。我发现 APACHE2_LOCK_FILE 在我的 /etc/apache2/envvars 文件中定义。

Ubuntu 16.04 apache2 手册页说:“一般来说,apache2 不应该直接调用,而应该通过 /etc/init.d/apache2 或 apache2ctl 调用。默认的 Debian 配置需要 /etc/ 中定义的环境变量apache2/envvars ,如果直接启动 apache2 则不可用,但是,apache2ctl 可用于向 apache2 传递任意参数。”

所以我可以使用 /etc/apache2/envars ,我编辑了我的 systemd apache.service 文件以使用 ExecStart = /etc/init.d/apache2 start 并重新启动了我的 Lenovo ThinkStation Ubuntu 16.04 桌面,但无济于事,我仍然只有 2 www-data apache2 进程和 ps-ef |当我运行 ps -ef | grep -in "mod" 显示没有 mod-mono-server4 进程grep - 在“apache2”中。

请问我做错了什么以及如何解决?请建议我可以做的测试。

我知道许多 Ubuntu 16.04 alpha 版本用户很快就会抱怨我遇到的同样问题。

答案1

apache2首先,您可以通过查看16.04 中的软件包中提供的 mpm_prefork 模块来确认您已经拥有该模块。如果您这样做,您将看到几个结果:

 dpkg -L apache2 | grep fork

 /etc/apache2/mods-available/mpm_prefork.conf
 /etc/apache2/mods-available/mpm_prefork.load

现在检查哪个 MPM 模块已启用,您将看到 Event MPM 模块已启用,而 Prefork 模块未启用:

  ls /etc/apache2/mods-enabled/mpm*

听起来您想禁用 Event MPM 模块并启用 Prefork MPM 模块,您可以使用符号链接来完成此操作,然后重新启动 Apache:

sudo rm /etc/apache2/mods-enabled/mpm*
sudo ln -s /etc/apache2/mods-available/*fork* /etc/apache2/mods-enabled/

也许您的“StartServer”指令将按预期工作。 Event MPM 服务器在单个进程中运行事件循环,因此它不需要所有额外的进程。

您还提到启动 Apache 和 systemd。我建议不要直接启动 Apache 的 http 或使用 apache2ctl。仅通过 systemd 控制它以保持一致性。

以下是一些相关的systemd控制命令,作为示例:

 sudo systemctl start   apache2
 sudo systemctl stop    apache2
 sudo systemctl restart apache2

您在评论中对设置 Mono、ASPX 和多个应用程序有更多疑问。您应该单独询问这些问题,并明确您是打算在单个域上提供多个应用程序,还是在多个域上提供多个应用程序。

要使 Apache2 服务在引导时启动,请运行:

sudo systemctl enable apache2

答案2

设置 Ubuntu 16.04 来为驻留在不同根目录中的 aspx 内容提供服务还需要 3 个步骤。

  1. 将其放在 apache2.coonf 的末尾

    别名 /test "/usr/share/doc/xsp/test" 别名 /personal "/home/user/mypages" AddMonoApplications 默认 "/test:/usr/share/doc/xsp/test,/personal:/home/user /mypages" SetHandler mono SetHandler mono

    1. source /etc/apache2/envvars 修改后如下:

      envvars - apache2ctl 的默认环境变量

      更改 uid 后这将不正确

      取消设置主页

      用于支持多个 apache2 实例

      if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ;然后 SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}" else SUFFIX= fi

      由于没有明智的方法来获取脚本中解析的 apache2 配置,因此一些

      设置通过环境变量定义,然后在 apache2ctl 中使用,

      /etc/init.d/apache2、/etc/logrotate.d/apache2 等

      导出 APACHE_RUN_USER=venkat 导出 APACHE_RUN_GROUP=venkat

      临时状态文件位置。这可能会在 Wheezy+1 中更改为 /run

      导出 APACHE_PID_FILE=/var/run/apache2/apache2.pid 导出 APACHE_RUN_DIR=/var/run/apache2 导出 APACHE_LOCK_DIR=/var/lock/apache2

      只有 /var/log/apache2 由 /etc/logrotate.d/apache2 处理。

      导出 APACHE_LOG_DIR=/var/log/apache2

      mod_dav 等模块使用的语言环境

      导出 LANG=C

      取消注释以下行以使用系统默认区域设置:

      。 /etc/默认/区域设置

      导出语言

      用于获取“apache2ctl status”状态的命令。

      一些提供“www-browser”的软件包需要“--dump”而不是“-dump”。

      导出 APACHE_LYNX='www-浏览器-dump'

      如果您需要更高的文件描述符限制,请取消注释并调整

      以下行(默认为 8192):

      APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

      如果您想将参数传递给网络服务器,请在下面添加它们

      到 APACHE_ARGUMENTS 环境。

      导出 APACHE_ARGUMENTS=''

      为维护者脚本启用调试模式。

      这将在 Web 服务器模块和 Web 应用程序的包安装上生成详细输出

      与 Apache 交互的安装

      导出 APACHE2_MAINTSCRIPT_DEBUG=1

      1. 在 apache2.conf 的顶部,放置以下行:LoadModule mono_module /usr/lib/apache2/modules/mod_mono.so。

      2. 要测试这一点,请输入http://127.0.0.1/test/Default.cs并把http://127.0.0.1/personal/Default.cs在 Firefox 网络浏览器中。

相关内容