LinuxのbootimeでApacheを起動するにはどうすればよいですか?


32

LinuxボックスにソースからApache 2をインストールしました。apachectl -k startうまく動作しますが、ブート時にApacheを起動するにはどうすればよいですか?

これはRed Hat Linuxディストリビューションにあります。

Linux <ホスト名> 2.6.9-55.ELsmp#1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU / Linux


1
どのディストリビューション?
ayaz 2009年

回答:


46

initスクリプトを適切な実行レベルに追加します。通常/etc/init.d/apache2、initスクリプトは、手動で実行/etc/init.d/apache2 startして開始することができます。

Gentooでは次のように書くでしょう:

rc-update add apache2 default

Ubuntu / Debianでは、これは機能します。

sudo update-rc.d apache2 defaults

Red Hat Linux / Fedora / CentOSでは、少しグーグルで次のように表示されます。

chkconfig --add httpd

配布ごとに少し異なりますが、通常は考え方は同じです。基本的に、これらのコマンドはすべて、から/etc/init.d/適切な実行レベルフォルダーへのシンボリックリンクを作成します/etc/


1
答えてくれて、正しい方向に向けられました。私がやったことを以下にまとめました。
悲嘆

ソースからapacheをビルドした場合、initスクリプトはありません。initスクリプトを/etc/init.d/に正しくセットアップすると、カバーするのはサービスとしての構成だけになります。 Apache 2のドキュメントは本当によく書かれています
ハイメハブルツェル

26

これが最終的に私のために働いたものです。これは、あなたがrootユーザーであることを前提としています。

  1. vi /etc/init.d/apache2(以下に示すように編集します)
  2. chmod 755 /etc/init.d/apache2
  3. chkconfig --apache2を追加
  4. chkconfig --list apache2(動作したことを確認するため)

/etc/init.d/apache2の内容:

#!/ bin / bash
#
#apache2 Apache HTTPサーバーの起動スクリプト
#
#chkconfig:3 85 15
#説明:ApacheはWorld Wide Webサーバーです。\を提供するために使用されます
#HTMLファイルとCGI。

/ usr / local / apache2 / bin / apachectl $ @

/ sbin / runlevelを実行するとランレベルを取得できます。これは3でした。そしてもちろん、apachectlのバージョン(私の場合は/ usr / local / apache2 / bin / apachectl)を呼び出す必要があります。

以下に感謝します:


私は自分の答えを受け入れるのは本当に嫌いですが、それはうまくいったものです。
悲しむ

これはまさに私が必要としていたものでした!(/ usr / local / apache2に2.2.27 Apacheを再コンパイルしてインストールする必要がありました)。どうもありがとう。
クリストフミュラー14

この行 "/ usr / local / apache2 / bin / apachectl $ @"は実際にhttpdを起動しますか?sudo chkconfig apache2 startまたはsudo chkconfig apache2 onを発行する必要がありますか?
オララ

8

ディレクトリにhttpdinitスクリプトがあるかどうかを確認します/etc/rc.d。はいの場合、次のコマンドを実行するだけで、起動時にhttpdサービスを開始できます。

chkconfig --level 345 httpd on

initスクリプトがない場合は、/etc/rc.localファイルにapachectl -k start(Apacheを起動するコマンド)を追加するだけです。


4

ソースごとにインストールしたので、/ etc / init.d /ディレクトリにインストールされたinitスクリプトはありません。apachectlバイナリは、標準のinitスクリプトオプションと互換性があるように設計されているため、ラッパースクリプト(ln -s / usr / local / sbin / apachectl /etc/init.d/など)を作成するのではなく、単にシンボリックリンクすることができます。アパッチ)

その後、他の投稿で説明されている手順に従って、正しいランレベルでinitスクリプトを呼び出すためのリンクを追加します。

引用:Apacheドキュメントhttp://httpd.apache.org/docs/2.2/invoking.html

起動時から開始

システムの再起動後もサーバーを実行し続けたい場合は、システム起動ファイル(通常はrc.localまたはrc.Nディレクトリ内のファイル)にapachectlの呼び出しを追加する必要があります。これにより、Apacheがルートとして起動します。これを行う前に、サーバーがセキュリティおよびアクセス制限のために適切に構成されていることを確認してください。

apachectlスクリプトは、標準のSysV initスクリプトのように動作するように設計されています。引数start、restart、stopを取り、httpdへの適切なシグナルに変換できます。そのため、多くの場合、apachectlを適切なinitディレクトリに単純にリンクできます。ただし、システムの正確な要件を確認してください。


答えてくれて、正しい方向に向けられました。私がやったことを以下にまとめました。
悲嘆

1

chkconfig --levels 345 httpd

ランレベル3、4、5でhttpdを起動します。

chkconfig --listは、すべてのサービスとそれらの現在の起動ランレベルを表示します。345は、ネットワークサービスの一般的な値です。


1
これにより、CentOS 6で「chkconfigクエリに指定できるランレベルは1つだけです」というエラーが表示されます。ただし、コマンドの最後に「on」を追加する(「chkconfig --levels 345 httpd on」)のは魅力的でした。
赤目

1

Red Hat Linuxには、現在の実行レベルで開始するサービスを選択できるntsysvという便利なユーティリティがあります。また、を使用してユーティリティを起動するときに、編集する実行レベルを指定します--level

httpdまでスクロールし、を押しSpaceて、左側のボックスに星が表示されるようにします。それTabからOKに。を押しReturnて保存し、シェルに戻ります。

デフォルトでほとんどインストールされることがわかりました。私はそれがインストールされていない位置にいたことがない。

ただし、サービススクリプトを/etc/init.dにコピーしてから実行することにより、最初にサービスをインストールする必要があります。

chkconfig --add <script name>

1

Linuxのフレーバーに依存します。ファイル/etc/init.d/apache2が作成されていると仮定して、以下を試してください:

chkconfig -a apache2

または

update-rc.d apache2 defaults

それらの1つが動作するはずです。


1
chkconfigの答えはシステム(つまり、CentOSの)のようにレッドハットのためのものであり、更新-rc.dのは、システム(つまり、Ubuntuの)のようなDebian用です
カイルブラント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.