openSUSE に Apache、MySQL をインストール

  • 投稿日:
  • by
インストール自体は簡単でしたが、Apache2 の設定が CentOS と全然違うので戸惑いました。 インストールは zypper で行いました。
host:~ # zypper install apache2 mysql
で、起動する際のコマンドは以下の通りです。 Apache2 の場合
host:~ # rcapache2 start
MySQL の場合
host:~ # rcmysql start
で、サーバー再起動後も自動的に MySQL を起動するように設定します。
host:~ # chkconfig mysql on
host:~ # chkconfig --list mysql
mysql                     0:off  1:off  2:off  3:on   4:off  5:on   6:off
MySQL の方は何も設定しませんでした。/etc/my.cnf に default-character-set=utf8 を設定しようかとも思ったのですが、まずは設定なしの場合の動作を確認しようと明示的な指定は今のところしていません。
ネット上を探しても openSUSE の場合の設定というのはほとんどなく、デフォルトで何の文字コードが使用されるのか不明です(たぶん latin-1 だろうけど)。

で、それよりも問題だったのが Apache2 です。CentOS を含む多くの保守的なディストリビューションの場合、httpd.conf を編集するのが常識になっていると思います。
でも openSUSE は違ったんです。httpd.conf を開いても内容のほとんどが他のファイルを Include しているだけ。Debian 系に慣れている人であればどうってことないのでしょうが、今まで見たことのない内容にびっくりしました。

Apache2.2 系からは設定ファイルがモジュール化され、別々に扱うようになったようです。しかもそれらを有効/無効にするコマンドとして、a2enmoda2dismod が用意されているとのこと。CentOS 5 も Apache2.2 系だけど、そんな使い方したことない...つーかそもそもできるのだろうか?

久々にネットを検索しまくりました。で、まずは DocumentRoot のディレクトリ設定から変更。
host:/etc/apache2 # vi default-server.conf
<Directory "/srv/www/htdocs">
        Options Includes ExecCGI FollowSymLinks
        AllowOverride All
</Directory>
ユーザーディレクトリを有効にしたいので、以下も変更。
host:/etc/apache2 # vi mod_userdir.conf
<IfModule mod_userdir.c>
        #UserDir disabled
        UserDir public_html
        <Directory /home/*/public_html>
                AllowOverride All
                Options IncludesNoExec ExecCGI FollowSymLinks
        </Directory>
</IfModule>
しかし、以下の設定をするために、いったいどのファイルを編集すればいいのか分からなくなってしまいました。
  • AddDefaultCharset の無効化
  • AddHandler cgi-script .cgi .pl の追加
  • ServerAdmin の設定
  • ServerName の設定
ServerName なんかは設定しないと Apache の起動時にエラーが出た記憶があるので、普通は追加するものではなくて、記述されている初期値を変更するかたちになると思うんだけど、それがどこにも見つからない...
結局分からずじまいで、とりあえず起動してみたところ、特にエラーもなくあっさり起動。
サイトルートを表示させると「It Works!」の文字が。フツーにうまくいってる。どういうことだろう??
不思議に思いつつも、とりあえずそこはスルーして文字コードをブラウザで見てみると「Shift_JIS」になっていた。ウェブサーバー側でデフォルトの文字コードに「Shift_JIS」を使うことは有り得ないから、たぶん AddDefaultCharset は未設定になっていると思われる。

次に、CGI が実行可能か確認。結果、CGI ファイルがダウンロードされてしまった。やっぱり AddHandler の設定は必要なのね。
でもどこに記述すればいいんだろう... いろいろ探してみたが結局分からなかった。

ここで、openSUSE の公式サイトの Apache のドキュメントに書いてあった、独自設定ファイルの追加方法を思い出した。追記するところが分からなければ、自分で作ってしまえ!ということで、作業開始。
ドキュメントには、sysconfig を設定しているかどうかで方法が分かれている。自慢じゃないが、sysconfig の設定状況なんて自分は知らない。ということで両方試してみることにした。

まずは共通の事前準備。独自の設定ファイルを用意します。ちなみにファイル名な何でも構いません。自分は例に習い、/etc/apache2/httpd.conf.local で作成しました。 ファイル内には、以下の設定を記述。
AddHandler cgi-script .cgi .pl
でここから方法が分かれます。
  • sysconfig を設定していない場合
    /etc/apache2/httpd.conf に以下の 1 行を追加する
    Include /etc/apache2/httpd.conf.local
    
  • sysconfig を設定している場合
    /etc/sysconfig/apache2 を以下のように編集
    APACHE_CONF_INCLUDE_FILES="httpd.conf.local"
    
結局、どちらの設定でも CGI を実行することができました。めでたしめでたし。
ただ、httpd.conf の最後に、こんな文章がありました。
# Note: instead of adding your own configuration here, consider 
#       adding it in your own file (/etc/apache2/httpd.conf.local)
#       putting its name into APACHE_CONF_INCLUDE_FILES in 
#       /etc/sysconfig/apache2 -- this will make system updates 
#       easier :)
内容としては、設定をここに追加するより別ファイルに設定した方が管理しやすいと思うよーって意味合いになると思います。
ということで、せっかくなので、APACHE_CONF_INCLUDE_FILES を使うことにしました。

あと一応、Apache2 の再起動と chkconfig での起動設定はこんな感じになります。
host:~ # rcapache2 restart
Starting httpd2 (prefork)                                            done      
host:~ # chkconfig apache2 on
host:~ # chkconfig --list apache2
apache2                   0:off  1:off  2:off  3:on   4:off  5:on   6:off
参考にしたリンク