Ubuntu

如何在 Ubuntu 16.04 alpha 版本重新啟動時啟動 k=10 Apache2 伺服器程序?

  • June 25, 2016

我想知道如何在 Ubuntu 16.04 alpha 版本重新啟動時啟動 k=10 Apache2 伺服器程序。昨天,我閱讀了這個 URL,[ 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 然後重新啟動我的 systemd apache.service 文件和我的 ps -ef | 嘗試使用 StartServers = 5 配置 apache2 事件模組。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 版本的使用者很快就會抱怨我遇到的同樣的問題。

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

引用自:https://unix.stackexchange.com/questions/291579