• ベストアンサー

apacheの起動について

Linuxに最新版のapacheを1.3.33を入れました。 うまく動作しているのですが少し疑問に思ったので質問させてください。 RedHatなのでもともとapacheが/etc/httpdにはいっていたのを今後の為通常の/usr/local/apacheにしました。 起動する際、 /usr/local/apache/bin/apachectr start としたのですが、よくある /etc/init.d/httpd start とか書いている場合もあるのですがこの二つの違いはなんなんでしょうか? 単純に/etc/httpdのapacheは/etc/init.d/httpd start で/usr/local/apacheのapacheの場合/usr/local/apache/bin/apachectr start で起動するということですか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

そもそもLinuxのソフトはいろいろな人が作っているため、起動/停止方法は元来一つ一つバラバラです。 しかし、それだとマシン起動時の自動起動や、停止のことを考えると使いにくいので、sysv方式の起動停止スクリプト(/etc/rc.d/init.d/httpdとか)を誰かが考えました。 /etc/rc.d/init.d/sendmailや/etc/rc.d/init.d/httpdは、sendmailを作った人やapacheを作った人が作ったスクリプトではなく、Red Hat を使いやすくしようと考えた人が後で作ったスクリプトです。こうした努力によっていろいろなソフトウェアが同じような書式で起動停止できるようになっているわけです。 二つの違いとは、 /usr/local/apache/bin/apachectl start ←もともとのapacheの正当な起動方法。 /etc/rc.d/init.d/httpd start ← Red Hat用に誰かが作ったapacheの起動スクリプト。rcと連動しており何かと便利。 ということになります。 (ちなみに「/etc/init.d/httpd start ← Debian用に誰かが作ったapacheの起動スクリプト」です) よって「/etc/rc.d/init.d/httpd start』は基本的にはRed Hatと一緒に配布されているRPM形式のapacheと一緒でないとうまくうごきません。単に/usr/local/apacheにapacheを入れた後で、/etc/rc.d/init.d/httpdを実行してもapacheは起動しません(たぶん)。 ですから、volvo850loveさんが今の環境でもし/etc/rc.d/init.d/httpd startでapacheを起動したいのであれば、/etc/rc.d/init.d/httpdをつくらなければいけません。別にその書式で起動したくないのであれば、つくらなくても結構です。 #Volvo 850 昔乗ってました

volvo850love
質問者

お礼

>/etc/rc.d/init.d/sendmail >や/etc/rc.d/init.d/httpdは、sendmailを作った人や >apacheを作った人が作ったスクリプトではなく、Red >Hat を使いやすくしようと考えた人が後で作ったスク >リプトです。 そうだったんですね。RedHat用だったのですか!!勉強になります。 現在apacheは2つ存在していて /usr/local/apache /etc/httpd/ です。/usr/local/apache/bin/apachectl start をすると/usr/local/apacheのほうが起動し、 /etc/init.d/httpd start だと以前のapacheが起動しました。 ですから /etc/rc.d/init.d/httpdに。/usr/local/apache/bin/apachectlをコピーしたら/etc/rc.d/init.d/httpdで新しいapacheが起動するようになりました。 非常にわかりやすい説明でした。 ありがとうございました。 #volvo850はもう5年のってますがいい車です。最近エンジンがやばいですが・・・

その他の回答 (5)

  • interplay
  • ベストアンサー率39% (108/273)
回答No.5

ANo.1で回答したInterplayです。 まず。。 >K15とかS85って・・・なんでしょうか Kは「KILL」の略でSは「START」の略です。そのままプロセスをKILLしたりSTARTさせると言う意味で、その後の番号は順番です。 例えばapacheよりtomcat(サーブレットコンテナ)を早く起動させておかなければならない場合は、Sのあとの番号をtomcat起動用シンボリックリンクより後の番号へ競ってしなければなりません。 一番良い例はNFS先のディレクトリをSambaで共有させる場合など、起動と終了の順番がNFSとSambaでテレコになるとデッドロックします。一般的には/etc/ini.d/httpdに書かれている番号であれば、殆どのシステムで影響無い順番とされているため、デフォルト値がS85のK15となっています。 例えばSambaだと(・etc/init.d/smbd) #!/bin/sh # # chkconfig: 345 91 35 ランレベル3,4,5で適用され、Sは91でKは35でシンボリックリンクされます。ここwchkconfigは読み取っています。 システムにあわせてこの値はカスタマイズをする為です。 商用サーバでこのあたりまで気を配ってカスタマイズすることは一般的ですが個人レベルのサーバでは表面上の問題がなければ触らないのが普通かもしれません。 それからbashなりBシェルの読み方を覚えなければご質問者様の疑問は晴れる事がないでしょう。。 /etc/init/d/httpdで書かれているスクリプトの意味を理解できるよう、勉強してみてください。それが疑問を晴らす唯一の解です。 キーワードは 1.シェルの意味を理解する。 2.ランレベルについての知識を深める 3.chkconfigやntsysv(redhatだけですか)の利用方法を理解する。 以上です。少々突き放した回答となってしまいましたが、真の意味を理解するにはこれしか方法が無いと思われます。頑張ってください。

volvo850love
質問者

お礼

なるほど。たいへんわかりやすいご説明ありがとうございます。 シェルについてはやはりしっかり勉強すべきだと常々おもっております。 linuxのこの奥の深さがたまらなくおもしろいのでわくわくします。 最近はさらにコマンドなどそのほかlinux関連の書籍を購入しております。 失礼かもしれませんがInterplayさんはこういったことをどこで勉強されたのでしょうか?

  • katope007
  • ベストアンサー率10% (1/10)
回答No.4

>#cp /usr/local/apache/bin/apachectl /etc/init.d/httpd にするということはこれは複製するということは /usr/local/apache/bin/apachectl = /etc/init.d/httpd ということは /usr/local/apache/bin/apachectl start /etc/init.d/httpd start は同じことでは? 結果は同じだと思います。 >K15とかS85って・・・なんでしょうか たしかKは停止、Sは起動されるもので、番号はシステムが適当につけるものだったとおもいます。 それか、重複しなければ勝手につけてもいいのでは? 設定は確か、chkconfigでしたような。ぱっと検索して、それなりに出てきたURLをつけておきます。 多分、結果はいっしょだけど、起動の方法が最初の、スタートアップと自分で起動するの違いだと思うのですが。

参考URL:
http://www.jp.redhat.com/manual/Doc72/RH-DOCS/rhl-cg-ja-7.2/chkconfig.html
  • katope007
  • ベストアンサー率10% (1/10)
回答No.3

>ということは、再起動した時に自動的にapacheが起動するようにするコマンドのことですか? でもそれでしたら、chkconfigでランレベルを変更しておけばいけますよね? 多分、/etc/init.d/httpdと別に、/etc/rc5.d/httpdとかrcの後ろにランレベルの数字がついた場所があるかと思います。再起動したときは、実際はrc5.dの中が起動されると思います。私はDebianなので、少し違うかもしれませんが。そこにhttpdを入れるか、ランレベルを変えると、ここの初期デーモン(?)が変わるので注意されたほうがいいと思います。 http://www.a-yu.com/net/apache02.htmlを見ました。 手作業でインストールすると、/etc/init.d/httpdは自分で作らないと、毎回自分で起動することになるから、httpdを作りましょうと読めました。vi でhttpdの中身を見てみると、あーっと思うと思いますよ。シェルスクリプトだと思うので。中でapachectrを起動させてませんかね?場所を移動させると、もしかするとhttpdを修正しないといけないかもと思います。(自信ないですが。)

volvo850love
質問者

補足

#cp /usr/local/apache/bin/apachectl /etc/init.d/httpd にするということはこれは複製するということは /usr/local/apache/bin/apachectl = /etc/init.d/httpd ということは /usr/local/apache/bin/apachectl start /etc/init.d/httpd start は同じことでは? # cd ../rc1.d/ # ln -s /etc/init.d/httpd K15httpd はシンボリックリンクを作るというここですがコレの意味はすこしわかりづらいです。 K15とかS85って・・・なんでしょうか

  • katope007
  • ベストアンサー率10% (1/10)
回答No.2

/etc/init.d/httpd start は Windowsでいうスタートアップ apachectr startは普通にプログラムを実行すると考えてみては?

volvo850love
質問者

お礼

http://www.a-yu.com/net/apache02.html のApache の起動というところでその2つが同じような意味におもえるのです・・ 最初に書いたように、 /etc/httpd/と/usr/local/apache両方にapacheがインストールされている場合、/etc/init.d/httpd start したらどっちが起動しますか? ちょっとずれた質問かもしれませんが、そのレベルでわからってないもんですから。。

volvo850love
質問者

補足

ということは、再起動した時に自動的にapacheが起動するようにするコマンドのことですか? でもそれでしたら、chkconfigでランレベルを変更しておけばいけますよね?

  • interplay
  • ベストアンサー率39% (108/273)
回答No.1

$ less /etc/init.d/httpd で見てみてください。理由がわかります。 それからここの配下には似たようなデーモンの起動スクリプトがあると思います。 これらはランレベルによってどの様に起動されるかを/etc/rc.d/配下でシンボリックリンクされてます。 登録方法はchkconfigで登録・削除とランレベル条件を設定可能です。(手でスクリプトに書いても良いですが) また、ntsysvを使ってデーモンの起動・未起動を設定することも出来ます。 以下URLのデーモン制御あたりをご覧下さい。

参考URL:
http://quox.org/tips/linux/redhat.html
volvo850love
質問者

補足

うーーん、すみません、わからなかったです。 /usr/local/apache/bin/apachectr start /etc/init.d/httpd start との違いがどうもわからない

関連するQ&A

  • apacheの起動

    apacheの起動に関して質問がございます。 1. /usr/local/apache/bin/apachectl start だと問題無く起動できます。しかし、以下の様にすると、起動が失敗します。 2. /etc/rc.d/init.d/httpd start httpd を起動中: [失敗] 2に関係するなんらかのファイルの記述が間違っていると言うことでしょうか?

    • ベストアンサー
    • Java
  • linuxでapacheが動きません。

    linuxでapacheが動きません。 学校でネットワークの勉強をしており、課題をやるために自宅のPCでVMserverを使ってVine4.2をインストールしました。 今openssl0.98nとapache2.2.15をインストールしたところです。 学校ではちゃんと動いたのですが、自宅のPCでのapacheの再起動のところで困っています。 # /etc/init.d/apache start httpd (pid 16970) already running # /etc/init.d/apache stop # /etc/init.d/apache restart httpd not running, trying to start 再起動するとこのようなエラーが出て、startしても同じことの繰り返しです。 # ps -ax|grep httpd と入力するとこう出ました。 Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html 16970 ? Ss 0:00 /usr/local/apache/bin/httpd -k restart 16973 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16974 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16975 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16976 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16977 ? S 0:00 /usr/local/apache/bin/httpd -k restart 17004 pts/0 S+ 0:00 grep httpd 動いていませんよね? しかしブラウザでlocalhostを開くとIt Works!と出るし編集してからも見れました。 課題が終わらないので困っています。 ネットワークの勉強をしていますが、ちんぷんかんぷんでいまいちのみこめていません。 みなさんの知恵をお貸しください。。。

  • linuxでapacheが動きません。

    linuxでapacheが動きません。 学校でネットワークの勉強をしており、課題をやるために自宅のPCでVMserverを使ってVine4.2をインストールしました。 今openssl0.98nとapache2.2.15をインストールしたところです。 下記のURLの手順と同じようにインストールしました。 http://www.netp.tuis.ac.jp/moodle21/course/view.php?id=7&page=Apache2&gid=0&uid=0&dfsearch=apache 学校ではちゃんと動いたのですが、自宅のPCでのapacheの再起動のところで困っています。 # /etc/init.d/apache start httpd (pid 16970) already running # /etc/init.d/apache stop # /etc/init.d/apache restart httpd not running, trying to start 再起動するとこのようなエラーが出て、startしても同じことの繰り返しです。 # ps -ax|grep httpd と入力するとこう出ました。 Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html 16970 ? Ss 0:00 /usr/local/apache/bin/httpd -k restart 16973 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16974 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16975 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16976 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16977 ? S 0:00 /usr/local/apache/bin/httpd -k restart 17004 pts/0 S+ 0:00 grep httpd 動いていませんよね? しかしブラウザでlocalhostを開くとIt Works!と出るし編集してからも見れました。 課題が終わらないので困っています。 ネットワークの勉強をしていますが、ちんぷんかんぷんでいまいちのみこめていません。 みなさんの知恵をお貸しください。。。

  • Apacheの起動について・・・

    今回初めてLinuxに挑戦してます。 RedHat Linux 7.2をWebサーバのとしてインストールしました。 Apache_1.3.20も一緒にインストールされました。 今回はApache_1.3.27を使用したいので、HPよりダウンロードして、 インストールを行いました。 インストールはなんとか上手くいき起動も可能なのですが、 /sbin/chkconfig --level 35 httpd on のコマンドで自動起動にする対象のApacheは1.3.27のほうにしたいのです。 ※現状では、1.3.20のほうが上がります。 インストール済みのApache設定は、/etc/httpd/conf/ 後からインストールしたApache設定は、/usr/local/apache/conf/ のhttpd.confになるようです。 Linuxの起動時にApache_1.3.27が自動で起動されるように 設定したいのですが、どうにもわかりません。 ネットで検索して、 「自動起動するために起動スクリプトを /etc/init.d または /etc/rc.d/init.d にコピーします」 とまでは解ったのですが、ファイルをそのままコピーしていいのか、どうすればいいのか検討がつきません。 どなたか教えて下さい。

  • Apacheアップデートしたのにバージョンが。。

    困っています。 以下の手順でapacheをアップデートしたのですが、 「rpm -qi httpd」ではバージョンが変わりません。 「httpd -V」では最新バージョンになっています。 「httpd」の実行ファイルは置き換えているので、 最新化されていると思うのですが、何が不足しているのか どなたか教えて頂けないでしょうか。 よろしくお願いします。 <サーバ環境>  OS:Redhat Enterprise Linux 5.7 <旧apache情報>  バージョン:2.2.3  ディレクトリ:/etc/httpd  実行ファイル:/usr/sbin <新apache情報>  バージョン:2.2.21  ディレクトリ:/usr/local/apache2  実行ファイル:/usr/local/apache2/bin ※ネットワークの問題により、「yum httpd update」は使用できない。 <アップデート手順> 1.apacheミラーサイトから httpd-2.2.21.tar.gz をダウンロード。 2.configureでインストール準備。  パラメータは、モジュール全て展開、suexec生成を指定。 3.make、make install にてインストール。 4.makeで作成された最新の suexecを /usr/sbin の旧実行ファイルと置き換え。 5.httpd旧実行ファイルの置き換え。   # mv /usr/sbin/httpd /usr/sbin/httpd_old   # ln -s /etc/httpd/bin/httpd /usr/sbin/httpd 6.旧Apache ディレクトリと同名の、シンボリックリンクを作成する。   # ln -s /usr/local/apache2 /etc/httpd 7.httpd.conf 関連の設定変更。   旧apacheの設定を、下記ファイルに反映。   ・httpd.conf   ・extra/httpd-default.conf   ・extra/httpd-languages.conf 8.起動スクリプトの変更   httpd-2.2.21/build/rpm/httpd.init から /etc/rc.d/init.d/httpd を生成し、   旧スクリプトと置き換える。 9.service httpd start で、再起動し、アプリケーションの正常動作を確認。  OS再起動後も自動起動していることを確認。 以上です。

  • Apacheが2つインストールされてしまった?

    実は、OpenBlockSなる市販の小型Linuxサーバを使っているのですが、 開発環境を入れようと思い、HDDを増設しました。 この商品、Linuxは64MBのROMに入っていて、必要に応じてHDDを増設できるものなのですが・・・。 Apacheをリビルドしようと思い、最初から入っていたApacheはバイナリだけだったので、ソースを落としてきてmake installしました。ご存知だとは思うのですが、古いApacheは/etc/httpdに、最近のは/usr/local/apacheにインストールされますよね。それが、両方のapacheが有効になっているようなんです。 起動時に init.d/httpd -> /sbin/httpd で起動されるのはいままでのapache、/usr/local/apache/bin/apachectl で起動するのは新しいapacheといった感じです。インストール場所が違うのがひっかかるのですが、いちいち古いのを止めて新しいのを起動するのが、激しく面倒なのですが(^-^; どうしたらいいのでしょうか。 手動で、init.d 内のhttpdを書き換えるしかないのでしょうか? 方法を含めてご教示いただけたらと思います。

  • Apache2.2.3が自動起動できません

    こんばんは。 CentOS4.4でyum install httpdとしてapache1.0.28(だったはず) をインストールしたのですが、phpをインストールしようとした時に、 apxsが無いということに気が付き(findしてもなかったです)、 インストールしたapacheを削除してからApache2.2.3をインストールしました。 その後、/usr/local/apache2/bin/httpd -k start としたところ起動できたので、 /etc/rc.d/init.d/ にhttpdをコピーし、 chkconfig --add httpdと したのですが、httpdはcheckconfigをサポートしませんと表示されます。 根本的に操作方法が間違っているのでしょうか? ご存知の方が居られましたら御教授願います。 環境 CentOS4.4 Apace2.2.3 ※勉強の為X等は全く入れていません。

  • apacheの設定

    Linuxの初心者です。 CentOSを使っていて、apacheの起動スクリプトの作成・実行権限の付与、ユーザの作成などが終わり、実際に起動させようと /etc/init.d/httpd start とやっても、以下のようなエラーメッセージが出ます。 Starting httpd: Syntax error on line 18 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp4.so into server: /usr/local/apache/modules/libphp4.so: cannot open shared object file: No such file or directory これの意味していることは何でしょうか? どうしたら解決できるでしょうか? よろしくお願いします。

  • solaris10にて、SMFからのapache+ssl起動

    solaris10にて、apache2+sslの環境を構築しているのですが、SMF経由でapacheを起動させると、sslが有効になりません。 SMFにて使用する、起動用のスクリプト「/lib/svc/method/http-apache2」内のsvcpropというコマンドで、チェックしているところまでは分かったのですが、ここからが分かりません。 どなたか、ご教授願います。 ★SMFからの起動(apache2のみ起動される) # /usr/sbin/svcadm disable svc:/network/http:apache2 # /usr/sbin/svcadm enable svc:/network/http:apache2 # svcs -a |grep apache2 online 11:30:43 svc:/network/http:apache2 # ps -ef|grep http |grep -v grep root 692 1 19 11:30:43 ? 0:06 /usr/local/apache2/bin/httpd -k start webservd 698 692 0 11:30:51 ? 0:00 /usr/local/apache2/bin/httpd -k start ★apache2+SSL手動起動 ・apache無効化 # /usr/sbin/svcadm disable svc:/network/http:apache2 # /usr/local/apache2/bin/apachectl startssl # ps -ef|grep http webservd 675 670 0 11:25:45 ? 0:00 /usr/local/apache2/bin/httpd -k start -DSSL root 670 1 9 11:25:42 ? 0:03 /usr/local/apache2/bin/httpd -k start -DSSL

  • APACHEは起動するが、ブラウザからアクセスできない

    Red Hat Linux7.1 APACHE1.3.19 部内LAN上でLinuxサーバーを構築しています。 Apacheをコンパイル&インストール(成功?)したのですが、 クライアントのブラウザからhttp://xxx.xx.xxx.xx/を入力して アクセスしようとすると「(145) Connection timed out」で接続できません。 原因がよくわからないので、怪しいと思う点についてアドバイスをお願いいたします。 自分で切り分けた結果を以下に記します。足りない点があれば、ご指摘ください。 ちなみにtelnet、ftpなどの基本的な(?)ネットワーク機能は生きています。 ●apachectl configtestの結果は「Syntax OK」 ●apachectlも起動する ●「telnet localhost http」→「GET /」を入力すると応答がある ●しかし他のホストから「telnet xxx.xx.xxx.xx http」で接続しようとしても、拒否される。 ●ブラウザからの接続要求に対してhttpdが反応していない(topコマンドで監視) ●ps -ax|grep httpdの結果は以下のとおり 223 ?? Ss 1:09.47 /usr/local/apache/bin/httpd 233 ?? I 0:00.84 /usr/local/apache/bin/httpd 234 ?? I 0:01.02 /usr/local/apache/bin/httpd 235 ?? I 0:00.22 /usr/local/apache/bin/httpd 236 ?? I 0:00.23 /usr/local/apache/bin/httpd 237 ?? I 0:00.41 /usr/local/apache/bin/httpd 311 ?? I 0:01.45 /usr/local/apache/bin/httpd 1429 ?? I 0:00.26 /usr/local/apache/bin/httpd