- ベストアンサー
他の開発環境をインストしたらapacheが起動しなくなった・・・
PHP+MySQLでの作業を行うためにローカルに開発環境を作りました。 最初は、apacheも起動しており、まったく問題なく作業ができておりました。 その後、他の開発環境をつくるために、ボーランドC++、VisualStudio6.0、VisualStudio.NETを入れました。 しかし・・・それからapacheが起動しなくなりました。 原因がまったくわかりません。 何が原因なのか、わかる方いらっしゃいましたら、ご教授下さいませ。 Please wait [Bitte warten] Can't start server: Bind on TCP/IP port: No error とかいうメッセージが出ます。
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
たびたびすみません。 手元の環境で試したところ、どうもIISは、 A.既定のWebサイトで使うIPアドレスを特定しても 全てのIPアドレスでListenしてしまう。 (ソケット プーリング機能のため) →無効にするには、別途手順が必要 http://support.microsoft.com/kb/238131/JA/ B.SSLを使っていない(証明書をインストールしていない)場合、 全てのIPアドレスでPort443をListenしてしまう。 (IPアドレスを固定し、A.の対策を行ったとしても) ということで、Apacheと共存させるもっとも簡単な方法は、 「Apache側のListenポート(httpd.confとssl.conf両方)を80,443から変えてしまう」 ということになるようです。 その際、IPアドレスは同じものにしても大丈夫だと思われます。 だいぶ遠回りというか、無駄足を踏ませてしまったかもしれません。 すみませんが、試してみていただけますか?
その他の回答 (10)
- suzui
- ベストアンサー率67% (199/297)
IISはsvchost.exeを介して起動しているので、 inetinfo.exeではないです・・・ それからNo.7の補足で、 make_sock: could not bind to address 0.0.0.0:443 となっているので、port443の競合も調べたほうがいいですね。 netstatのポート80と443をlistenしているPIDに対して、tasklistの結果と照らし合わせてください。
補足
svchost.exe部分を、探ってみました。 tasklist /svcの結果(svchost.exeのみ抜粋) イメージ名 PID サービス SVCHOST.EXE 924 Dnscache SVCHOST.EXE 992 LmHosts, RemoteRegistry, SSDPSRV, WebClient で、、PID:924,992の該当部分のみを抜粋すると、 netstat -oanの結果 Proto Local Address Foreign Address State PID UDP 0.0.0.0:1026 *:* 924 UDP 0.0.0.0:1038 *:* 924 UDP 127.0.0.1:1900 *:* 992 UDP 192.168.0.1:1900 *:* 992 UDP 192.168.104.29:1900 *:* 992 となっていました。 ちなみに、netstatのポート80と443をlistenしているPIDに対して、 tasklistの結果と照らし合わせると、 イメージ名 PID サービス netinfo.exe 2012 IISADMIN, SMTPSVC, W3SVC が該当することになります。 ssl.conf内に、Listen 443と記述されているところがあったので、 Listen 444(適当)にして、Apacheを起動してみるとやはり起動はしませんでしたが、 出力メッセージが以下のように、IPアドレス部分が [DHCPで振られるアドレス]:80に変わりました。 ---------------------------------- Please wait [Bitte warten] (OS 10048)通常、各ソケット アドレスに対してプロトコル 、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 : make_s ock: could not bind to address 192.168.104.29:80 no listening sockets available, shutting down Unable to open logs
- suzui
- ベストアンサー率67% (199/297)
設定では、 ApacheはDHCPで取ったアドレスのPort80、 IISはループバックアドレスのPort80 なんですよね。 現在、どのプロセスがどのポートをListenしているか、調べてみましょうか。 netstat -oan でLocal IP:PortとPID(プロセス番号)の対応を調べて、 tasklist /svc でプログラムのイメージ名とPIDの対応が分かります。 TCP Port 80でListenしているプロセスを列挙してみてください。
補足
ありがとうございます。 では、お言葉に甘えて、お願いできればと思います。 次の情報があれば、おわかりになりますでしょうか? ------------------------------------------------ inetinfo.exe が、IIS(IISサービスのプロセス)だと思うので以下に書き出した。 PIDが“2012”ということで、2012に対応している部分だけを列挙します。 (Apacheは起動できないので、リストアップされてないようです) イメージ名 PID サービス inetinfo.exe 2012 IISADMIN, SMTPSVC, W3SVC Proto Local Address Foreign Address State PID TCP 0.0.0.0:25 0.0.0.0:0 LISTENING 2012 TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2012 TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 2012 TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING 2012 UDP 0.0.0.0:3456 *:* 2012 設定としては、現在のところ、 ApacheはDHCPで振られるアドレスのPort80、 IISはループバックアドレスのPort80 にしており、 IISとApacheは、以下のように設定してあります。 <IIS> IP192.168.0.1のポート80(ループバックアドレス)で設定。 <Apache> httpd.conf内に、Listen [DHCPで振られるアドレス]:80 と記述。 (ちなみに、ssl.conf内に、Listen 443と記述されているところあり)
- suzui
- ベストアンサー率67% (199/297)
Apacheの設定変更がうまくいかないのであれば、IISのIPアドレスを変更してください。 No.3で回答したとおり、 IISに特定のIPアドレスを関連付けるには、管理ツール→インターネット サービス マネージャ→既定のWebサイトのIPアドレスで設定します。 で試してください。
補足
インターネットインフォメーションサービスを起動し、既存WebサイトのプロパティのWebサイトで、IPアドレスが“(未使用のIPアドレスすべて)”になっていたのを、作成したIPアドレス“192.168.0.1”に選択しました。 念のため、PC再起動し、Apacheを起動してみましたが、やはりだめでした。 もうしばらく、格闘してみたいとは思いますが・・
- suzui
- ベストアンサー率67% (199/297)
ループバックアダプターは本物のNICを必要としません。 あくまでバーチャルな、そのPCの中だけに見えるアダプターです。 追加してもスロットやポートは消費しません。
補足
ループバックアダプターを追加し、IPアドレスを、192.168.0.1に設定しましたが、同じようなエラーとなります。 <エラー内容> (OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、ま たはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to addr ess 0.0.0.0:443 no listening sockets available, shutting down Unable to open logs ... ちなみに、httpd.conf の Listen の箇所を以下のように記述しました。 Listen 192.168.0.1:8000 どこがおかしいのでしょうか? もし、おわかりになるようでしたら、ご教授下さいませ。
- suzui
- ベストアンサー率67% (199/297)
ダミーのネットワークインタフェースカードを追加して、そこにダミーのIPアドレスを追加する方法も、試してもいいかもしれません。 そうすると、NICが2枚あって、片方はDHCP、もう片方はダミーのネットワークになります。 ダミーのNICをループバックアダプターと呼びます。追加方法は参考URLのとおりです。 ループバックアダプターはそのコンピュータからしかアクセスできないので、ほかのコンピュータからアクセスされないWebサーバ(IIS or Apache)をループバックアドレスで設定すればよいでしょう。
お礼
そうですね、現在使用中のLANポートはオンボードなので、NICが追加できれば設定できそうですが、スリム型PCのためカード追加は不可能かもしれません・・ それと、NICが社内にあるかどうかは、ちょっと不明です。 ただ、自宅PCで同じ環境を作る際の参考になります。 ありがとうございました。
- rentahero
- ベストアンサー率53% (182/342)
IISを変更するとあとあと面倒そうなので、apacheを変更するほうがいいです。 apache.confの Listen 80 の行を Listen 8000 に変更します。 これで、apacheが起動できます。 次に、ブラウザでこれまで http://localhost/ でアクセスしていたところを http://localhost:8000/ でアクセスしてみてください。apacheに接続できるはずです。 IISが必要なくなれば、IISをアンインストールしても、 8000は別に問題ないですので、そのまま動かしてもいいでしょう。ただし、href要素や、src要素で http:// から書いてあるところは正しく修正してください。(localhostでやってる開発環境でそんなことはないと思いますけど、念のため)
補足
ご回答、ありがとうございます。 apache.confは探してみましたがありませんでした。 httpd.confファイルでいいんですよね? Listen 80 の行を Listen 8000 に変更してみましたが、やはり同じく、apacheは起動できませんでした。 ポート8000番は、特にWindows環境で何か設定しておく必要とかはないものなのでしょうか?
- suzui
- ベストアンサー率67% (199/297)
もしPCを業務用のネットワークに接続していて、IPアドレスを追加したい場合、ネットワーク管理者に依頼して、静的なIPアドレスを2つ取得し、DHCPを無効にした後、2つとも設定してください。 ダミーのIPを使う場合も、管理者に必ず許可を得てください。 管理者が静的なアドレスをくれない場合は、業務用のネットワークから切り離した開発用ネットワークを作れば、その中であなたの好きなようにアドレスを割り当て可能です。 または、先のコメントでも少し触れましたが、IPアドレスは1つでも、TCPポートを変えることでも対応可能です。アドレスの取得も無理、開発用ネットワーク構築も無理、ということであればこちらを試してみてください。
補足
NW管理者に聞いてみたところ、静的に割り当てるのは管理上避けたいので、ポートでやって欲しいとのことでした。 ポート追加する場合、具体的に、どのようにすればよろしいでしょうか? ご面倒なことですいませんが、ご教授いただければ助かります。
- suzui
- ベストアンサー率67% (199/297)
apacheとIISがTCP port 80で競合していませんか? もしそうなら、簡単な解決策としては、PCにIPアドレスを2つ設定し、片方をapacheに、残りをIISに割り当てる方法があるそうです。 参考:http://www.experts-exchange.com/Web/Web_Servers/Q_21218472.html PCにIPアドレスを2つ設定する方法は、ネットワーク接続(ローカルエリア接続など)のプロパティで、 インターネットプロトコル(TCP/IP)のプロパティ→詳細構成→IPアドレス 追加 でできます。 IISに特定のIPアドレスを関連付けるには、管理ツール→インターネット サービス マネージャ→既定のWebサイトのIPアドレスで設定します。 さらにIIS6の場合はこちらが参考になるでしょう。 http://support.microsoft.com/kb/813368/ja Apacheの場合は、こちらが参考になるでしょう。 http://httpd.apache.org/docs-2.0/bind.html http://httpd.apache.org/docs-2.0/mod/mpm_common.html#listen それか、1つのIPアドレスで、別々のポートを使うようにIISとApacheを設定する方法もあります。やりかたは上記とほとんど同じで、IPアドレスを設定するところの近くにTCPポートを設定する項目があるので、そちらを変更します。
補足
ご回答、ありがとうございました。 IISをアンインストしようかとも思いましたが、開発環境としてIISが必要となるかどうかちょっとまだわからないので、お教えいただいた方法で試してみたいと思っています。 すいません、ご教授いただけると助かります。 ちなみに、TCP/IPプロパティ→詳細設定では、IPアドレスは“DHCP有効”となっていて会社内のLANにつながっています。 追加する場合、IPアドレスは適当(ダミー?)を用いればいいのでしょうか? その場合、IPアドレスはいくつにすれば良いでしょうか?
- rentahero
- ベストアンサー率53% (182/342)
あ、エンター押しすぎ… #1の回答をやり直しです。 IISがインストールされていないか確認して下さい。 VisualStudio6に付属しているVisual InterDevをインストールしたら、IISがインストールされたと思います。 Visual InterDevが必要ないならアンインストールして、IISもアンインストールしてください。その場合、必要ないMSDEも一緒にアンインストールしてくださいね。
お礼
ご回答、ありがとうございました。 原因がわかっただけでも安心しました。 わからなければOSからセットアップするところでした。 OSはWindowsXPですが、VS.NETを入れる際に見事にIISをインストールしてしまいました。 VS6はその後から入れましたが、Visual InterDevとMSDEは入れてないと思います。 開発環境としてIISが必要となるかどうかちょっとまだわからないので、ANo.3の方の方法をちょっと試してみようと思います。
- rentahero
- ベストアンサー率53% (182/342)
IISがインストールされていないか確認して。
お礼
ありがとうございます。 Apacheの方の、httpd.conf内のListenに8080ポートを指定。 ssl.conf内のListen443が競合していたようなので、444に変更しました。 そうしたら、Apache起動しました。 http://localhost:8080/ で、無事アクセス確認できました。 どうも、この度は、ご親切にお付き合い下さり、またいろいろお調べ下さって助かりました! 私の方も、今回のことで、かなり勉強ができました。 どうも、ありがとうございました。