Red Hatデベロッパーアカウント作成からApache構築までの手順まとめ
自宅サーバーでRHEL(Red Hat Enterprise Linux)を使ってWebサイトを公開したい人向けに、Red Hatデベロッパーアカウントの作成から、Apache httpdでのWebサーバー構築までの手順を、実際に使ったコマンドを交えてまとめます。一般的な環境を想定していますので、細部は自分の環境に合わせて読み替えてください。 ■ Red Hatデベロッパーアカウントの作成 まず、以下のサイトにアクセスしてアカウントを作成します。 https://developers.redhat.com/ メールアドレス、氏名などの基本情報を入力し、確認メールのリンクを踏めば登録完了です。法人名の入力欄がありますが、個人利用の場合は「Personal」や自分の名前を入れておけば問題ありません。 このプログラムで利用できるのは、正確には「Red Hat Developer Subscription for Individuals」という個人向けのサブスクリプションです。商用の本番環境での利用は想定されておらず、あくまで開発・学習目的での利用が前提となっている点は理解しておく必要があります。とはいえ、機能制限なくRHELのすべての機能を使えるため、自宅サーバーでの学習・検証用途には十分すぎるほどの内容です。 ■ RHELのインストール Red Hat公式サイトから、RHELのインストールISOイメージをダウンロードします。ダウンロードには、先ほど作成したデベロッパーアカウントでのログインが必要です。 ダウンロードしたISOイメージを、USBメモリに書き込んで起動ディスクを作成するか、仮想マシンで使う場合はそのままISOを読み込ませてインストーラーを起動します。 インストール中の設定でひとつ重要なのが、インストール完了後にシステムをRed Hatのサブスクリプションに登録することです。インストール完了後、以下のコマンドで登録します。 sudo subscription-manager register --username <デベロッパーアカウントのユーザー名> パスワードを求められたら入力してください。登録が成功すると、dnfコマンドでのパッケージインストールが可能になります。 登録状況は、以下のコマンドでいつでも確認できます。 subscription-manager status もし「Overall Status: Current」と表示されていれば、正しく登録が完了しています。逆に「Unknown」や「Invalid」と出る場合は、登録がうまくいっていない可能性があるため、再度登録コマンドを実行してみてください。 ■ システムの基本設定 まず、システム全体を最新の状態に更新します。 sudo dnf update -y タイムゾーンを日本時間に設定します。 sudo timedatectl set-timezone Asia/Tokyo ホスト名を設定しておくと、後々の管理がしやすくなります。 sudo hostnamectl set-hostname myserver 作業用のユーザーアカウントも、rootとは別に作成しておくことを強くおすすめします。日常的な操作をrootで行うのは、操作ミスによる被害範囲が大きくなるため避けるべきです。 sudo useradd myuser sudo passwd myuser sudo usermod -aG wheel myuser wheelグループに所属させることで、そのユーザーがsudoコマンドを使えるようになります。 ■ ファイアウォールの設定 RHELはデフォルトでfirewalldが有効になっています。Webサーバーを公開するには、httpとhttpsのポートを開放する必要があります。 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload 現在開放されているサービスを確認するには、次のコマンドを使います。 sudo firewall-cmd --list-services もし特定のポート番号を直接開放したい場合(Apacheを標準の80番以外のポートで動かす場合など)は、以下のようにします。 sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload firewalldはゾーンという概念で通信の許可範囲を管理しています。デフォルトでは「public」ゾーンが使われることが多いですが、現在使われているゾーンを確認したい場合は、次のコマンドで見られます。 sudo firewall-cmd --get-active-zones ■ Apache httpdのインストール いよいよApacheをインストールします。RHELの標準リポジトリからdnfで簡単に導入できます。 sudo dnf install -y httpd インストール後、サービスを起動し、OS起動時に自動起動するよう設定します。 sudo systemctl start httpd sudo systemctl enable httpd 正常に起動しているか確認します。 sudo systemctl status httpd 「active (running)」と表示されていれば成功です。 インストールされたApacheのバージョンを確認したい場合は、以下のコマンドを使います。 httpd -v RHELでは、設定ファイルは主に /etc/httpd/conf/httpd.conf に置かれ、追加の設定は /etc/httpd/conf.d/ 以下に個別のファイルとして置くのが一般的な運用です。設定ファイルを変更したら、必ず文法チェックをしてから再起動する習慣をつけておくと安心です。 sudo apachectl configtest sudo systemctl restart httpd 「Syntax OK」と表示されれば、設定ファイルの文法に問題はありません。 ■ SELinuxとの付き合い方 RHELはデフォルトでSELinuxが有効になっており、Apacheが特定のディレクトリにアクセスする際に制限がかかることがあります。基本的にはSELinuxを無効化せず、正しいコンテキスト(ラベル)を付与して運用するのが望ましい方法です。 例えば、公開したいファイルを標準の場所(/var/www/html)以外に置く場合、以下のようにコンテキストを設定します。 sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?" sudo restorecon -Rv /data/www もし semanage コマンドが見つからない場合は、以下のパッケージを追加でインストールしてください。 sudo dnf install -y policycoreutils-python-utils 現在のSELinuxの動作モードは、次のコマンドで確認できます。 getenforce 「Enforcing」であれば、ポリシー違反となる操作は実際にブロックされます。「Permissive」であれば、違反は記録されるだけでブロックはされません。学習段階では、まずログを見ながら少しずつ正しいコンテキストを設定していく方が、後々の運用が楽になります。 もし何らかの操作がSELinuxによってブロックされている疑いがある場合は、以下のコマンドで関連するログを確認できます。 sudo ausearch -m avc -ts recent SELinuxを無効化する選択肢もありますが、本番運用では推奨されません。急場をしのぐ一時的な切り分けの手段として使う程度に留め、原因が分かったら正しいコンテキスト設定に戻すのが望ましい進め方です。 ■ 動作確認用のページを作成 Apacheのドキュメントルート(デフォルトでは /var/www/html)に、簡単なテストページを置いて動作確認します。 echo "<h1>Hello from Apache on RHEL</h1>" | sudo tee /var/www/html/index.html ブラウザで、サーバーのIPアドレスにアクセスして、ページが表示されるか確認します。 http://サーバーのIPアドレス/ もしページが表示されない場合は、ファイアウォールの設定、SELinuxのコンテキスト、Apacheのプロセスが実際に起動しているかを、順番に切り分けて確認していくことになります。特に、公開したいコンテンツを標準以外の場所に置いた場合は、SELinuxのコンテキスト設定を忘れがちなので注意してください。 ■ 独自ドメイン・SSL化への道筋 ここまでで、Apacheが正常に動作する状態が整いました。実際に外部公開する場合は、この先に以下のような作業が必要になります。 ・ドメインの取得とDNS設定 ・Let's EncryptなどによるSSL証明書の取得と設定 ・VirtualHostによる複数サイトの設定 ・アプリケーションサーバー(Django、Node.jsなど)との連携設定 これらは環境や目的によって大きく変わってくるため、また別の機会に詳しく書きたいと思います。 ■ まとめ Red Hatのデベロッパーアカウントを使えば、個人でも本格的なエンタープライズLinuxディストリビューションを無償で使うことができます。firewalldとSELinuxという、Ubuntu系のディストリビューションにはあまり馴染みのない仕組みに最初は戸惑うかもしれませんが、正しく理解して付き合えば、非常に安定した環境を構築できます。 特にSELinuxは、最初のうちは「エラーの原因が分からず、とりあえず無効化してしまう」という誤った対応をしがちですが、コンテキストという考え方さえ理解してしまえば、むしろ心強い防御レイヤーとして機能してくれます。多少遠回りに感じても、正しいコンテキストを都度設定していく習慣を身につけておくと、後々の運用で大きな安心材料になります。 ここまでの手順で、外部からアクセスできる基本的なWebサーバーの土台は整いました。実際にサービスとして公開していくには、この記事で紹介した基本設定の上に、ドメインの取得、SSL証明書の設定、アプリケーションサーバーとの連携など、さらにいくつかのステップが必要になります。それらについては、また機会を改めて書いていきたいと思います。
コメント(0)
まだコメントはありません
ログインするとコメントできます。