[英]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.conf
或httpd-ssl.conf
文件以刪除該配置。
我用Apache 2.4運行FreeBSD 10.3,所以我的文件可能在你的另一個位置。 但是一旦找到虛擬主機文件所在的位置,解決方案就是一樣的。 這是您需要做的事情來解決這個問題:
切換到定義虛擬命名主機的目錄:
cd /usr/local/www/conf/extra
使用grep從命名的虛擬主機定義中提取所有日志文件引用:
grep -i log * > x.tmp
這將創建一個文件,其中包含顯示文件名稱的條目,apache日志指令(ErrorLog,CustomeLog,TransferLog)以及日志文件的名稱。
使用bash shell設置while讀取循環以拉開文件,並在另一個文件中捕獲日志文件的名稱:
cat x.tmp | while read abcd; do echo $c >> y.tmp; done
使用您喜歡的編輯器編輯y.tmp
文件,以刪除任何看起來不像日志文件(垃圾)名稱的內容。 使用grep在大文件中搜索文本時,這種垃圾是不可避免的。 獲得文件列表(沒有其他內容)后,在文件名前插入“ls -la”。 使用vi編輯器,您可以使用以下命令執行此操作:
:%s/^/ls -la /
使用sh或bash將文件作為腳本運行,如下所示:
sh y.tmp
它將顯示單個文件(如果它存在),如果它不存在,它將顯示類似於以下內容的錯誤:
ls: /usr/local/www/virtual/nsr/logs/access.log: No such file or directory
這可能是由拼寫錯誤,缺少目錄或其他原因(指向不存在的對象的符號鏈接)引起的。 編輯虛擬命名主機定義以將其從配置中刪除,或者定義具有Web服務器訪問權限的正確權限的目錄。
重新啟動Web服務器( apachectl start
)並使用ps awx | grep http
驗證httpd守護程序是否正在運行 ps awx | grep http
。
直接根據這個答案,你應該殺掉httpd
(它的lighttpd.conf
有server.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.