アプリ版:「スタンプのみでお礼する」機能のリリースについて

【困ってる事】
lsof がインストールできない


【経緯】
freebsd 8.4 を利用しています。
サーバの再起動をしようと shutdown -r now で再起動しましたが、
再起動後、どうやらapache22が起動していないらしくwebの閲覧ができなくなってしまいました。

エラーメッセージから 80 と 443 のポートが既に使われてるとのことで
グーグル先生に聞いたところ、「lsof」というコマンドで、
ポート番号を使っているプロセス番号を知ることができて、
そのプロセスをkillして apache22 の再起動をするとイイ!

ってみたんでさっそく実行しようとしたところ、lsof がなかったので
インストールしようと試みました。


【試したこと】
pkg_add -r lsof

を実行しましたが、
ダウンロードできず、

whereis lsof

でportsの場所を知り、 cd でその場所に移動して

make install clean

しましたが、No adress record
とでて、ダウンロードできず、、、

ftp -a ftp2.FreeBSD.org

で直接ダウンロードも試みましたが、 hostname nor servname provided, or nor known
とメッセージがでてしまい、
このアドレスを今質問書いてるパソコンのブラウザで接続したところ、
接続できたことから、私のサーバの問題かなとか思ってて

でもよくわかんないです><


【質問】
apache22が起動してくれなくて、困っています。

再起動のときにプロセスがなぜか残ってることが原因かもしれませんが
80番と443番ポートを使っているプロセスをkillしたいんですけどlsofが入れようとしたら
困ってしまった感じです。

本当に困っています、お願いしますー;;

A 回答 (4件)

>今後また同じようなことが起きたときに


>「こうなってるからダメで、こうすると動く」みたいな(いつも遠回りしています^^;)
>エレガントに解決したくて、教えていただいたコマンド「sockstat」を実行してみました。

表面的症状とその対処方法をパターン学習するのはおすすめしませんけど。
表面的症状は同じで原因が異なることだってありますし。

>表示名に「?」がはいってたり、たくさん行数がでてきたので混乱してしまいました。

パニクったところで解決はしませんし、その状態で何かしたところで状況が悪化する事はあっても好転することはほとんどないです。
なのでそういう時にはお茶を飲むなどでもして落ち着いてください。

>apacheが起動してないときにstopしたときのメッセージは
>「apache22 not running? (check /var/run/httpd.pid).
>でした。不正確な質問ですみませんでした。

それ自体はapache22が動作してないからですが、起動時に出てたというwaningは?

>それで、「ダウンロードできない件」なんですけど、
>pkg_add -r lsof
>で、「Erorr: unable to get ftp://ftp.freebsd.org.pub/FreeBSD/ports/amd64/pa … No address record
> pkg_add: unable to fetch 'ftp://ftp.freebsd.org.pub/FreeBSD/ports/amd64/pa … by URL」
>となりまして、このURLを、今みてるパソコンでみたところ 見つかりません となりました。

「ftp.freebsd.org.pub」は「ftp.freebsd.org/pub」の間違いでは?

ftp> open ftp.freebsd.org
Trying 204.152.184.73:21 ...
Connected to freebsd.isc.org.
220 Welcome to freebsd.isc.org.
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls pub/FreeBSD/ports/amd64/packages-8.4-release/Latest/lsof.tbz
229 Entering Extended Passive Mode (|||26604|).
150 Here comes the directory listing.
lrwxr-xr-x 1 100 982 24 Apr 17 2013 lsof.tbz -> ../All/lsof-4.88.d,8.tbz
226 Directory send OK.
ftp> ls pub/FreeBSD/ports/amd64/packages-8.4-release/All/lsof-4.88.d,8.tbz
229 Entering Extended Passive Mode (|||57407|).
150 Here comes the directory listing.
-rw-r--r-- 1 100 982 129985 Apr 17 2013 lsof-4.88.d,8.tbz
226 Directory send OK.
ftp>


> 「名前解決」はどこを参照すればわかりますか?

nslookupやdigを使って使用されているDNSサーバで名前解決できているか確認してください。

>/etc/resolv.conf
>で、DNSサーバを2件 (カゴヤで管理しているのでカゴヤのDNS)
>設定しています。

nameserver DNSサーバのIPアドレス

で書かれていますか?

この回答への補足

何度もお付き合いくださいましてありがとうございました。

この度、無事解決しましたのでご報告させていただくとともに、
ベストアンサーを決定して閉めさせて頂きます。
親切に教えてくださってありがとうございます。

【困ってた事】
lsofのインストールをしようとしていたが、
pkg_add しても ダウンロードできない、
make install しても ダウンロードできないのでインストールできず困っていた。

【原因】
名前解決ができていなかった。

< 試したこと >
dig -x IPアドレス
nslookup ドメイン
としてもサーバの情報が出ませんでした。

【解決策】
/etc/resolv.conf の設定内容を見直した。


サーバは業者さんからのレンタルで、
サーバ引き渡し時に「初期設定完了報告書」を業者さんからもらって
そこに プライマリDNS、セカンダリDNS のIPアドレスが書いてあり、
/etc/resolv.conf
にも同様のIPアドレスが書いてありました。

しかし、この業者さんのDNSをWeb検索してでてきた「ネームサーバ1」「ネームサーバ2」
のIPアドレスが、報告書と違うものでした。

/etc/resolv.conf にあった報告書のDNSふたつをコメントアウトして
「ネームサーバ1(IP)」、「ネームサーバ2(IP)」としたところ、

nslookup ドメイン名
dig -x IPアドレス

でサーバ情報が取得できましたが、問題がありました。

やはりpkg_addできませんでした。
ダウンロードできなかったのです。

同時にメール送信ができていない問題も抱えていたのですが、
postfix/smtp のログに 「connection unknown[IPアドレス]」とでていて、
ローカルネットワーク以外への送信ができませんでした。

dig yahoo.co.jp mx

としてもMXレコードが取得できませんでした。


なにか「欠けている」気がして

/etc/resolv.conf を開いて
報告書にあった プライマリDNS、セカンダリDNS、
ネットにあった「ネームサーバ1」「ネームサーバ2」
の計4つを記載しましたところ、

名前解決が解決できました。

なぜ、業者さんからいただいた報告書にあるDNS、ネットに公開してあった業者さんのDNSの2種類があるのかわからなかったので、こちらは業者さんに質問メールを送信致しました。


【lsof】
portsでmake installし、
lsof -i :80
と入力しましたところ、無事動作を確認することができました。


この度は、本当にありがとうございました。

補足日時:2014/01/14 16:24
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

apacheのErrorLogですが、残念なことにとってなかったんです…。


pkg_add -r lsof

でアクセスしてたのはご指摘の通り「ftp.freebsd.org/pub/...」でした。
端末はWindows7で tera term というソフトを使ってSSH接続でサーバへアクセスしています。
pkg_add -r lsof ででてきたURLをクリックすると、端末のブラウザ(clome)で見れるんですが
ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/pa …
となっていまして、こちら 見つかりません となりました。

念のためサーバからでなくて端末のWindowsのcmdからftpを起動して
open ftp.freebsd.org
を実行しましたが 「不明なホスト ftp.freebsd.org」と出てしまいました…。

・この端末で他のFTPサーバ(自社(だけどローカルネットワークではありません))に接続したところ接続できました。

・サーバで他のFTPサーバ(こちらもサーバのローカルネットワークでないもの)に接続したところ
「hostname nor servname provided, or not known」とでて接続できませんでした。


名前解決についてですが、

nslookup ドメイン

で実行したところ
「;; connection timed out; no servers could be reached」 という結果になりました。

dig -x xxx.xxx.xxx.xxx ←IPアドレス

で実行したところ
「global options: +cmd」
「connection timed out; no servers could be reached」
という結果になりました。

/etc/resolv.confの内容は

1行目に「nameserver xxx.xxx.xxx.xxx」 ←業者からもらった資料にあるプライマリDNS(IPアドレス)
2行目に「nameserver xxx.xxx.zzz.zzz」 ←業者からもらった資料にあるセカンダリDNS(IPアドレス)

サーバ引き渡し時に既に設定されておりました。
また、値を確認したところ資料と相違ありません。

nslookup の結果が接続できなかったとのことで、こちらが原因なのでしょうか。
名前解決ができなかった場合、どこの設定を見直せばよいのか
大変お手数なのですが、教えていただけないでしょうか。

お手数おかけします、宜しくお願いします。

お礼日時:2014/01/14 11:09

>www  httpd 34319 3 tcp6 *:80 *:*


>root   httpd 4011  4 tcp4 *:80 *:*

apacheは起動してます(apache22かどうかはわかりませんがportsなどを利用してインストールしてる限り別のバージョンのものがインストールされてることはないでしょうが)。

>こんな感じのがズラズラ出てきました。
> 「sockstat 使い方」とか「見方」で調べましたけど今イチ使い方がよくわかっていません><
>このでてきたリストは何を意味するのか、大変お手数かと思いますが教えていただけないでしょうか。

#1の方は、ちゃんと#1で説明してくれてますよ。
その説明でわからないところがあるのなら、どこがどうわからないのか書きましょう。

>apacheをstartするとwarning がでて、
>apacheをstopすると起動してるの?とメッセージ(エラーメッセージ失念)が出てきまして^^;

失念されたメッセージを回答者側で把握などできませんから、再度同じ事をしてみて取得してください。
その際には、変に意訳などせずにそっくりそのまま書かれることをお勧めします。

>気になってるところがもう一つあって
>メールなんですけど
>内部のメールは送受信できるようですが、
>外のネットワークにあるメールソフトで送受信しようとすると
>unknown になったり not found てでるんです。。。

そういう説明のされ方をされてもわかりませんけど・・・
「内部」ってどこのことですか。
「外のネットワーク」ってどこのことですか。
あなたのネットワーク環境がどのようになされてるのか説明がないんですから、あなた以外にはわかりませんよ。
    • good
    • 0
この回答へのお礼

お付き合いくださってありがとうございます。

実は質問の後、頂いた回答を見るまでに
実行中のプロセスで見覚えのないのとか怪しそうなのをカンで止めてしまい(<defunct>とか書いてありましたが、止めたプロセスをちゃんと把握してませんでした)、
その後に apache22 start で起動したので「やったー」と思っていました。


その後、ご回答いただいた内容を読ませていただいてました。
今後また同じようなことが起きたときに
「こうなってるからダメで、こうすると動く」みたいな(いつも遠回りしています^^;)
エレガントに解決したくて、教えていただいたコマンド「sockstat」を実行してみました。

表示名に「?」がはいってたり、たくさん行数がでてきたので混乱してしまいました。
すみませんでした^^;


apacheが起動してないときにstopしたときのメッセージは
「apache22 not running? (check /var/run/httpd.pid).
でした。不正確な質問ですみませんでした。


メールの件は、その後調べたところ別件でしたので関係ありませんでした。


それで、「ダウンロードできない件」なんですけど、
pkg_add -r lsof
で、「Erorr: unable to get ftp://ftp.freebsd.org.pub/FreeBSD/ports/amd64/pa … No address record
pkg_add: unable to fetch 'ftp://ftp.freebsd.org.pub/FreeBSD/ports/amd64/pa … by URL」
となりまして、このURLを、今みてるパソコンでみたところ 見つかりません となりました。

/usr/ports/sysutils/lsof
に移動して make install clean と入力し、
いくつかダウンロードを試みているようですが、
このうちいくつか、この質問をしているパソコンからもダウンロードできませんでしたが、(not found)
あるひとつのサイトからはダウンロードできました。
しかしサーバではダウンロードできなかった(no adress record)ようで
インストールできませんでした。


「名前解決」はどこを参照すればわかりますか?

/etc/hosts で
::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain
xxx.xxx.xxx.xxx www.ドメイン ドメイン

という設定をしています。
参照しているDNSサーバでAレコードで
ドメイン名 と ホスト名(www) と サーバのIPアドレス
ドメイン名 と ホスト名() と サーバのIPアドレス
を登録しています。

/etc/resolv.conf
で、DNSサーバを2件 (カゴヤで管理しているのでカゴヤのDNS)
設定しています。


もう少しお付き合いいただけると助かります。
宜しくお願いいたします。

お礼日時:2014/01/13 16:51

apache22が起動できない理由はわかりませんが(なんとなく実は起動してそうな気がしなくもないけど)、portsを利用してのインストールでソースをダウンロードできないのは名前解決ができてないからではないでしょうか。


ちゃんと名前解決できるように設定はされてありますか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
apacheをstartするとwarning がでて、
apacheをstopすると起動してるの?とメッセージ(エラーメッセージ失念)が出てきまして^^;

気になってるところがもう一つあって
メールなんですけど
内部のメールは送受信できるようですが、
外のネットワークにあるメールソフトで送受信しようとすると
unknown になったり not found てでるんです。。。


名前解決という点で共通しているのかな。。。
どこかだめなのか…うーん…

お礼日時:2014/01/13 11:01

FreeBSDには標準で、sockstat というプログラムが入っており、稼働しているデーモンの待ち受けているポート番号を調べることができます。



下記の例は、apache を動かしているサーバで実際に動かしたものですが、
---
% sockstat | grep :80
www httpd 43763 3 tcp4 *:80 *:*
…以下略
% sockstat | grep :443
www httpd 43763 4 tcp4 *:443 *:*
…以下略
---
といった感じで、あるポート番号を仕様しているプロセスを確認できます。
「ユーザーwww」で「httpd」(apacheのデーモンプロセス名)が、3列目プロセス番号43763 で動いていて、6列目の「*:80」や「*:443」が、待ち受けしているポート番号
る、ということです。

ただし、そうやってプロセスを調べたとしても、そのプロセスを殺しただけでは根本的対処にはならないでしょう。
再起動時にまたapacheが動かないということになってると思います。

> 再起動のときにプロセスがなぜか残ってることが原因かもしれませんが

「プロセスがなぜか残っている」のではなく、「OS起動時のデーモンプロセスの自動起動が設定されている」のでしょう。

FreeBSDに ports や packages からサーバーアプリケーションをインストールしても、それだけではサーバープロセスは起動しません。
「/etc/rc.conf に起動設定を記述」した上で、「OSが再起動」するか、「明示的なサーバ起動指示(apache なら、「/usr/local/etc/rc.d/apache start」)」をした時にサーバプロセスが立ち上がります。

おそらく質問者さんは「何らかのポート80を使用するサーバアプリをインストールし、/etc/rc.confに自動起動設定をした」ものの、「サーバアプリそのものは起動していなかった」のでしょう。
それが、OS再起動によって自動起動してしまって、それでポート80を取られてしまったのではないかと思います。

sockstat でプロセスの当たりが付いたら、そのソフトを自動起動しないように、/etc/rc.conf の記述を削除するのを忘れないようにしてください。

この回答への補足

あ、ちなみにこの↑ のズラズラでてきました
というのは、実は webmin で見覚えのない?(< undefind > だったかなんか要らなそうな感じのをカンで止めてしまいました^^;;;) プロセスをkillして
apache22 start としたところ、うまく動作してくれたので
その動作後に sockstat を実行したところの結果です。

sockstat | grep :80

ででてきたリストの項目名?がなくてよくわかりませんでしたので、
もしお付き合いできればこちらの見方も教えていただけないでしょうか…。
お願いばかりですみません><
宜しくお願いします。

補足日時:2014/01/13 13:33
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。

sockstat | grep :ポート番号

試してみましたところ、何やらリストがでてきました。

www  httpd 34319 3 tcp6 *:80 *:*
root   httpd 4011  4 tcp4 *:80 *:*
?    ?     ?    ? tcp4 (自分のグローバルIPアドレス):80 (プロバイダ?のIPアドレス):(ポート番号?)

こんな感じのがズラズラ出てきました。
「sockstat 使い方」とか「見方」で調べましたけど今イチ使い方がよくわかっていません><
このでてきたリストは何を意味するのか、大変お手数かと思いますが教えていただけないでしょうか。


また、ご指摘のあったプログラムの自動起動設定を読み返してみました。
vsftpd,
ntpd,
webmin,
apache,
mysql,
saslauthd,
postfix,
dovecot

自動起動の設定は上記しかなくて使用しているポートを調べたところ80番や443番を使ってるのはなさそうです、、、(謎)

きっとなにか見落としがあるかもしれません。
今後注意してみます。
ありがとうございます。

お礼日時:2014/01/13 10:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!