簡體   English   中英

啟用S​​SL后,Apache不會重啟

[英]Apache wont restart after I enable SSL

一旦我a2enmod ssl模塊並重啟apache我得到以下錯誤:

Restarting web server apache2
AH00548: NameVirtualHost has no effect and will be removed in the next 
release     /etc/apache2/ports.conf:14
(98)Address already in use: AH00072: make_sock: could not bind to address
[::]:443
(98)Address already in use: AH00072: make_sock: could not bind to address
0.0.0.0:443
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

要停止它,我可以在ports.conf文件中取消注釋或注釋掉以下模塊行:

Listen 80
#<IfModule mod_ssl.c>
#    Listen 443
#</IfModule>
<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

任何幫助將非常感激

輸出的以下行表明另一個程序已在端口443上偵聽,並且由於Apache不支持端口共享,因此無法綁定到該端口,因此它將關閉。

(98)Address already in use: AH00072: make_sock: could not bind to address
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:443

因此,我建議您關閉監聽該端口的程序。 您可以使用以下命令確定哪些程序正在偵聽TCP端口443(必須以超級用戶身份執行):

netstat -tlpn | grep 443

然后關閉已經正在偵聽的程序(例如使用service <programme> stop或使用kill <processID> (進程ID也由netstat提供)。之后,您可以使用service apache2 start或執行/etc/init.d/apache2 start來啟動Apache。 /etc/init.d/apache2 start 。當你使用Ubuntu / Debian時,這兩個命令都有效。如果你使用的是CentOS / RedHat,Apache就命名為httpd

錯誤“ AH00015:無法打開日志 ”表示您的某個日志定義中缺少文件或目錄。 如果您的Web服務器上運行了許多虛擬命名站點,則很容易刪除舊目錄並忘記更新httpd-vhosts.confhttpd-ssl.conf文件以刪除該配置。

我用Apache 2.4運行FreeBSD 10.3,所以我的文件可能在你的另一個位置。 但是一旦找到虛擬主機文件所在的位置,解決方案就是一樣的。 這是您需要做的事情來解決這個問題:

  1. 切換到定義虛擬命名主機的目錄:

    cd /usr/local/www/conf/extra

  2. 使用grep從命名的虛擬主機定義中提取所有日志文件引用:

    grep -i log * > x.tmp

這將創建一個文件,其中包含顯示文件名稱的條目,apache日志指令(ErrorLog,CustomeLog,TransferLog)以及日志文件的名稱。

  1. 使用bash shell設置while讀取循環以拉開文件,並在另一個文件中捕獲日志文件的名稱:

    cat x.tmp | while read abcd; do echo $c >> y.tmp; done

  2. 使用您喜歡的編輯器編輯y.tmp文件,以刪除任何看起來不像日志文件(垃圾)名稱的內容。 使用grep在大文件中搜索文本時,這種垃圾是不可避免的。 獲得文件列表(沒有其他內容)后,在文件名前插入“ls -la”。 使用vi編輯器,您可以使用以下命令執行此操作:

    :%s/^/ls -la /

  3. 使用sh或bash將文件作為腳本運行,如下所示:

    sh y.tmp

    它將顯示單個文件(如果它存在),如果它不存在,它將顯示類似於以下內容的錯誤:

    ls: /usr/local/www/virtual/nsr/logs/access.log: No such file or directory

  4. 這可能是由拼寫錯誤,缺少目錄或其他原因(指向不存在的對象的符號鏈接)引起的。 編輯虛擬命名主機定義以將其從配置中刪除,或者定義具有Web服務器訪問權限的正確權限的目錄。

  5. 重新啟動Web服務器( apachectl start )並使用ps awx | grep http驗證httpd守護程序是否正在運行 ps awx | grep http

直接根據這個答案,你應該殺掉httpd (它的lighttpd.confserver.port = 80 ),然后嘗試啟動apache

= Show processes hung =
ps wax | grep httpd

= Kill Process ID 1234 =
kill 1234

= Start Apache24 =
apachectl start

= Verify it is running =
service apache24 status

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM