Solaris 上で Web サーバ立ち上げ

Solaris 11 上で Apache HTTP Server 2.4 をインストールし、Web サーバを動かす手順を示す。 インストール方法は、Solaris の IPS パッケージを使う方法と、ソースからビルドする方法の 2 通りを示す。 設定と運用(ログ管理、アクセス制御、セキュリティ)についても示す。

【関連する外部ページ】

IPS パッケージによるインストール (Solaris 11)

Solaris 11 では、Apache HTTP Server 2.4 が web/server/apache-24 パッケージで提供される。 パッケージを使う場合、更新は pkg コマンドで行える。

  1. 端末を開き、管理者権限でパッケージをインストールする
    pkg install web/server/apache-24
    pkg install web/server/apache-24/module/apache-ssl
    
  2. インストールされたバージョンを確認する。端末で次のコマンドを実行する
    /usr/apache2/2.4/bin/httpd -v
    
  3. 主要なディレクトリは次の通り
    • 設定ファイル: /etc/apache2/2.4/httpd.conf
    • 実行ファイル: /usr/apache2/2.4/bin
    • 公開ディレクトリ: /var/apache2/2.4/htdocs
    • ログ: /var/apache2/2.4/logs
  4. 設定ファイルを編集する。端末で次のコマンドを実行する
    cd /etc/apache2/2.4
    vi httpd.conf
    
  5. 設定ファイルの文法を確認する。端末で次のコマンドを実行する
    /usr/apache2/2.4/bin/apachectl configtest
    
  6. サービスを有効化し、状態を確認する。端末で次のコマンドを実行する
    svcadm enable svc:/network/http:apache24
    svcs -x svc:/network/http:apache24
    
  7. サービスの停止、再起動、設定の再読み込みは次のコマンドで行う
    svcadm disable svc:/network/http:apache24
    svcadm restart svc:/network/http:apache24
    svcadm refresh svc:/network/http:apache24
    

パッケージ版では、httpd プロセスの実行ユーザとして webservd が用意されるため、ユーザを手作業で追加する必要はない。

ソースからのインストール

新しいバージョンをすぐに使いたい場合や、モジュール構成を自分で決めたい場合はソースからビルドする。 2026 年 6 月時点の安定版は 2.4.68 である。実際の最新版はダウンロードページで確認する。

  1. ソースを取得して作業ディレクトリに置く(ここでは /var/tmp に置く)
  2. 展開する。端末で次のコマンドを実行する
    cd /var/tmp
    gzip -d httpd-2.4.68.tar.gz
    tar -xvf httpd-2.4.68.tar
    
  3. ビルドしてインストールする。configure のオプションは /var/tmp/httpd-2.4.68/INSTALL に説明がある。 --prefix はインストール先で、必要があれば変更する。端末で次のコマンドを実行する
    cd httpd-2.4.68
    ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl --enable-rewrite
    make
    make install
    
  4. /usr/local/apache2 ディレクトリが作られ、この下に設定ファイルとログが置かれる
  5. 設定ファイルを編集する。端末で次のコマンドを実行する
    cd /usr/local/apache2/conf
    vi httpd.conf
    
  6. 設定ファイルの文法を確認する。端末で次のコマンドを実行する
    /usr/local/apache2/bin/apachectl configtest
    
  7. httpd を実行するユーザとグループを作成する。端末で次のコマンドを実行する
    groupadd -g 80 www
    useradd -u 80 -g www -d / -s /bin/false -c "HTTP SERVER" www
    passwd -N www
    

    作成したユーザとグループを httpd.conf の User、Group ディレクティブに設定する。

    User www
    Group www
    
  8. 起動、停止、再起動は次のコマンドで行う
    /usr/local/apache2/bin/apachectl start
    /usr/local/apache2/bin/apachectl stop
    /usr/local/apache2/bin/apachectl restart
    

ログ管理

Solaris では、ログの世代管理を logadm で行える。 logadm はログの切り替えと古いログの削除を自動で行うため、独自のスクリプトと cron を用意する必要はない。

  1. ログの保存先ディレクトリを確認する。端末で次のコマンドを実行する
    ls -l /var/apache2/2.4/logs
    
  2. logadm に設定を登録する。次の例は、1 日ごとに切り替え、12 世代を保存し、切り替え後に Apache に設定を再読み込みさせる設定である。端末で次のコマンドを実行する
    logadm -w apache_access -p 1d -C 12 -c \
        -a '/usr/apache2/2.4/bin/apachectl graceful' \
        /var/apache2/2.4/logs/access_log
    
    logadm -w apache_error -p 1d -C 12 -c \
        -a '/usr/apache2/2.4/bin/apachectl graceful' \
        /var/apache2/2.4/logs/error_log
    
  3. 登録内容を確認する。端末で次のコマンドを実行する
    grep apache /etc/logadm.conf
    
  4. 設定した動作を実際に試す。端末で次のコマンドを実行する
    logadm -v apache_access
    ls -l /var/apache2/2.4/logs
    

httpd.conf の設定

CGI とアクセス制御

CGI を使うときは、httpd.conf に次のような設定を追加する。 Apache 2.4 でのアクセス制御は Require ディレクティブで記述する (2.2 までの Order、Allow、Deny は非推奨である)。 .htaccess を使わない場合は「AllowOverride None」とする。

<Directory "/var/apache2/2.4/htdocs/hogehogedir">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>

特定のネットワークからのアクセスのみを許可する場合は、次のように記述する。

<Directory "/var/apache2/2.4/htdocs/privatedir">
    AllowOverride None
    Require ip 127.0.0.1 XXX.YYY.ZZZ.0/24
</Directory>

余分な処理を省く設定

TLS (HTTPS) の設定

外部に公開する Web サーバでは HTTPS を使う。 古いプロトコルである SSL 3.0、TLS 1.0、TLS 1.1 は無効にし、TLS 1.2 以上だけを有効にする。 設定例は次の通り。

Listen 443
SSLEngine on
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCertificateFile    /etc/apache2/2.4/server.crt
SSLCertificateKeyFile /etc/apache2/2.4/server.key

秘密鍵ファイルは、root のみが読めるパーミッションに設定する。端末で次のコマンドを実行する

chown root:root /etc/apache2/2.4/server.key
chmod 400 /etc/apache2/2.4/server.key

Java Servlet コンテナ (Tomcat) との連携

別のマシンで Java Servlet を動かし、Apache から転送する場合の方法である。 Apache 2.4 に同梱の mod_proxy_ajp を使うと、追加のモジュールをビルドせずに Tomcat と接続できる。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

ProxyPass        /app/ ajp://tomcat-host:8009/app/
ProxyPassReverse /app/ ajp://tomcat-host:8009/app/

Tomcat 側では、AJP コネクタで接続元アドレスと secret を設定して接続を制限する。 mod_proxy_ajp では実現できない負荷分散の設定が必要な場合は、 Tomcat Connectors (mod_jk) を使う。

運用

Solaris と Apache のセキュリティ