Solaris 上で Web サーバ立ち上げ
Solaris 11 上で Apache HTTP Server 2.4 をインストールし、Web サーバを動かす手順を示す。 インストール方法は、Solaris の IPS パッケージを使う方法と、ソースからビルドする方法の 2 通りを示す。 設定と運用(ログ管理、アクセス制御、セキュリティ)についても示す。
【関連する外部ページ】
- Apache HTTP Server ダウンロードページ: https://httpd.apache.org/download.cgi
- Apache HTTP Server 2.4 ドキュメント: https://httpd.apache.org/docs/2.4/
IPS パッケージによるインストール (Solaris 11)
Solaris 11 では、Apache HTTP Server 2.4 が web/server/apache-24 パッケージで提供される。 パッケージを使う場合、更新は pkg コマンドで行える。
- 端末を開き、管理者権限でパッケージをインストールする
pkg install web/server/apache-24 pkg install web/server/apache-24/module/apache-ssl
- インストールされたバージョンを確認する。端末で次のコマンドを実行する
/usr/apache2/2.4/bin/httpd -v
- 主要なディレクトリは次の通り
- 設定ファイル: /etc/apache2/2.4/httpd.conf
- 実行ファイル: /usr/apache2/2.4/bin
- 公開ディレクトリ: /var/apache2/2.4/htdocs
- ログ: /var/apache2/2.4/logs
- 設定ファイルを編集する。端末で次のコマンドを実行する
cd /etc/apache2/2.4 vi httpd.conf
- 設定ファイルの文法を確認する。端末で次のコマンドを実行する
/usr/apache2/2.4/bin/apachectl configtest
- サービスを有効化し、状態を確認する。端末で次のコマンドを実行する
svcadm enable svc:/network/http:apache24 svcs -x svc:/network/http:apache24
- サービスの停止、再起動、設定の再読み込みは次のコマンドで行う
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 である。実際の最新版はダウンロードページで確認する。
- ソースを取得して作業ディレクトリに置く(ここでは /var/tmp に置く)
- 展開する。端末で次のコマンドを実行する
cd /var/tmp gzip -d httpd-2.4.68.tar.gz tar -xvf httpd-2.4.68.tar
- ビルドしてインストールする。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
- /usr/local/apache2 ディレクトリが作られ、この下に設定ファイルとログが置かれる
- 設定ファイルを編集する。端末で次のコマンドを実行する
cd /usr/local/apache2/conf vi httpd.conf
- 設定ファイルの文法を確認する。端末で次のコマンドを実行する
/usr/local/apache2/bin/apachectl configtest
- 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
- 起動、停止、再起動は次のコマンドで行う
/usr/local/apache2/bin/apachectl start /usr/local/apache2/bin/apachectl stop /usr/local/apache2/bin/apachectl restart
ログ管理
Solaris では、ログの世代管理を logadm で行える。 logadm はログの切り替えと古いログの削除を自動で行うため、独自のスクリプトと cron を用意する必要はない。
- ログの保存先ディレクトリを確認する。端末で次のコマンドを実行する
ls -l /var/apache2/2.4/logs
- 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 - 登録内容を確認する。端末で次のコマンドを実行する
grep apache /etc/logadm.conf
- 設定した動作を実際に試す。端末で次のコマンドを実行する
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>
余分な処理を省く設定
- ログ記録のたびにアドレスの逆引きを行う動作を止める
HostnameLookups Off
- ディレクトリの既定ファイルを明示的に指定し、コンテントネゴシエーションによる探索を減らす
DirectoryIndex index.html
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) を使う。
- Tomcat Connectors ダウンロードページ: https://tomcat.apache.org/download-connectors.cgi
運用
Solaris と Apache のセキュリティ
- Solaris を最新の状態に保つ
Solaris 11 では pkg コマンドで更新する。端末で次のコマンドを実行する
pkg update
- Apache を最新の状態に保つ
パッケージ版の場合は、端末で次のコマンドを実行してバージョンを確認する。
pkg info web/server/apache-24 /usr/apache2/2.4/bin/httpd -v
ソースからインストールした場合は、ダウンロードページで最新版を確認し、 新しいバージョンをビルドして入れ替える。
- 使わないサービスを停止する
Solaris 11 のサービスは SMF で管理されるため、svcadm コマンドで停止する。 まず、動作しているサービスの一覧を確認する。端末で次のコマンドを実行する
svcs -a netstat -an -f inet -P tcp | grep LISTEN
Web サーバの運用に必要のないサービスを停止する。停止するサービスの例は次の通り。
svcadm disable svc:/network/nfs/client:default svcadm disable svc:/network/nfs/server:default svcadm disable svc:/network/dhcp/server:ipv4 svcadm disable svc:/network/smb/server:default svcadm disable svc:/application/management/net-snmp:default
- 使わないポートを閉じる
inetd から起動されるサービスも SMF で管理される。 telnet、ftp、rlogin、rsh、finger などの暗号化されない、あるいは認証の弱いサービスは停止する。 端末で次のコマンドを実行する
svcadm disable svc:/network/telnet:default svcadm disable svc:/network/ftp:default svcadm disable svc:/network/login:rlogin svcadm disable svc:/network/shell:default svcadm disable svc:/network/finger:default
停止したことを確認する。端末で次のコマンドを実行する
inetadm | grep -i disabled
遠隔ログインには ssh (svc:/network/ssh:default) を使う。
- パケットフィルタで公開するポートを限定する
Solaris 11.4 では Packet Filter (PF) が使える。 Web サーバとして公開するポート (80、443) と ssh のみを許可し、その他は遮断する。 設定ファイルは /etc/firewall/pf.conf である。設定後、端末で次のコマンドを実行する
svcadm enable svc:/network/firewall:default pfctl -s rules
- sendmail を使う場合は最新版であることを確認する
2026 年時点の最新版は 8.18.2 である。 動作中の sendmail のバージョンは、端末で次のコマンドを実行して確認する。
/usr/lib/sendmail -d0.1 -bt < /dev/null | grep Version
メールの送受信を行わない場合は、sendmail をローカル配送のみに設定するか、サービスを停止する。