web-dev-qa-db-ja.com

インストールに成功しましたが、Windows 7システムでApache 2.4を起動できませんでした

Windows 7システムにApache 2.4をインストールして実行しようとしています。Apache2.4 binディレクトリに移動して、次を実行しました。注:管理者としてcmdウィンドウを開きました。 C:\ Apache24\bin> httpd.exe -k install

出力は次のとおりです。

Installing the Apache2.4 service
The Apache2.4 service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
(OS 10013)An attempt was made to access a socket in a way forbidden by its acces
s permissions.  : AH00072: make_sock: could not bind to address [::]:80
(OS 10013)An attempt was made to access a socket in a way forbidden by its acces
s permissions.  : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open log

そのため、Apache 2.4をサービスとしてインストールしましたが、開始できませんでした。 localhostポート80が使用されているようです。これは"[::]:80"の意味ですか?

次に、実行したままにしておいたApache 2.0サービスとmysqlサービスの両方を停止しました。どちらかを停止すると、localhostポート80が解放されることを期待しています。

また、netstat -oを実行して、ポート80が使用されているかどうかを確認します。そうではありませんでした。

しかし、プロセスが上記のソケットを使用していることがわかりました。それは上記のソケットをリッスンしているプロセスです

 TCP    [::]:80                User-PC:0              LISTENING       4

次に、tasklistを実行し、Systemがpid 4を使用していることを確認しました。4はpid列の下にあります

System                           4 Services                   0        544 K

最後に、サービスの開始に失敗したため、Windowsシステムイベントに記録されたエラーが発生しました。

Log Name:      System
Source:        Service Control Manager
Date:          2/21/2013 1:58:03 PM
Event ID:      7024
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      User-PC
Description:
The Apache2.4 service terminated with service-specific error Incorrect function.

Event Xml:
<Event xmlns="http://schemas.Microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="49152">7024</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2013-02-21T18:58:03.723988900Z" />
    <EventRecordID>87756</EventRecordID>
    <Correlation />
    <Execution ProcessID="560" ThreadID="7596" />
    <Channel>System</Channel>
    <Computer>User-PC</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Apache2.4</Data>
    <Data Name="param2">%%1</Data>
  </EventData>
</Event>

起動の試みからのエラーは、アクセス不足のため、make-sockが、localhostポート80のように見えたソケットにバインドできなかったことを示しています。たとえば、

  (OS 10013)An attempt was made to access a socket in a way forbidden by its acces
    s permissions.  : AH00072: make_sock: could not bind to address [::]:80

誰かが私が間違っていることを伝えることができますか?

24
Joe

ひどい質問をしてすみません。私の問題を解決するために、httpd.confの別のポートをリッスンするようにApache 2.4に指示しました。システムはポート80でリッスンしているpid 4を使用していたので、これ以上詳しく調べたくありませんでした。

以下をhttpd.confに入れました。聞く127.0.0.1:122

19
Joe

最も可能性の高い犯人は、Microsoft Internet Information Serverです。 Windows 7/Vistaのコマンドラインからサービスを停止できます。

ネットストップは/ yでした

またはXP:

net stop iisadmin/y

これを読む http://www.sitepoint.com/unblock-port-80-on-windows-run-Apache/

16

Win7をwin10にアップグレードした後も、同じ問題があります。その後、services.mscをチェックすると、「World Wide Web Publishing Service」がデフォルトで自動的に実行されていることがわかりました。それで無効にして、Apacheサービスを再度実行しました。

7
projo
ポート80は、Microsoft HTTPAPIによって使用される可能性があります
 
次のサービスを停止してみてください。
 Web Deployment Agentサービス
 SQL Server Reporting Service 
 SQL Server VSSライター
5
Gary Liu

私は最終的にこの問題を解決しました、それはスカイプのようないくつかのシステムとシステムプロセスがそのポート80を取るためでした

次の手順を見つけてください

  1. Apache HTTPをインストールした後、cmdを使用してbinフォルダーに移動します

  2. エラーが気にならない場合でも、httpd.exe -k installを使用してサービスとしてインストールします

  3. OSに応じて、サービスがインストールされていることを確認します(開始されていなくても)

  4. システムを再起動すると、Apacheサービスが80ポートを最初に取得することになります。

問題が解決されました。おめでとうございます。

2
emad omara

だから、それが私が2つ(またはそれ以上)の投稿をする理由です。

サービスの開始時に同じ問題が発生していました(ログを開くことができません)。

VeraCryptで暗号化されたコンテナ内にhtdocsを配置しようとしていたのは、そのようなコンポーネントがマウントされていて、パスに影響を与えないためにジャンクションを使用しているので馬鹿げているからだと思いました。

原因を読んだことは、ラムが少ない可能性があります:いくつかのテストの後、私は次の結論に達します。

Windowsは、それがサービスである場合、十分なRAMを解放するために仮想RAMにページを送信していません。4GiB64ビットウィンドウで仮想RAMとして使用する準備ができている200GiB以上のページファイルがあります。

私の解決策:

  1. RAMを解放する無料のユーティリティを実行します(テストでは512MiB)
  2. サービスを開始した直後に、エラーなしで開始します

本当の原因:

  • 1/2物理空きRAM(1.5GiB)を使用する仮想マシンを使用していました

これが他の人を助けることを願っています。

1
Anonymous

windows OSを使用していて、skypeが疑わしいと思わない場合は、タスクマネージャーをチェックし、「すべてのユーザーからのプロセスを表示する」をチェックして、httpd.exeのエントリがないことを確認します。それ以外の場合は、プロセスを終了します。それは私の問題を解決します。

1
Aldee

あなたはそれを解決できます

Sudo nano /etc/Apache2/ports.conf

listenを8080に変更しました

私の場合、ApacheがリッスンしているIPアドレスが原因でした。以前は192.168.10.6に設定していましたが、最近Apacheサービスが実行されていません。私のラップトップのために、wifiが最近変更され、新しいIPが異なることに気付きました。 wifi IPをラップトップの以前のIPに修正した後、Apacheサービスはエラーなしで再び実行されます。

また、wifi IPを変更したくない場合は、httpd.confファイルでそのハードコードIPを削除/コメント化して競合を解決します。

0
Jamil Ahmed

私も同じ問題に直面していましたが、変更するたびにシステムを再起動してみました-1)cmdプロンプトでApache2.4をアンインストールします(管理者を実行する)コマンド:httpd -k uninstall 2)システムを再起動します3)コマンドhttpd -k installでcmdプロンプト(管理者を実行)を開きます。 4)次に、httpd -k install。

お役に立てば幸いです。

0
Sabbha Mondal