【Stream9ユーザーが送る】a2ensiteって何?Ubuntu(Debian系)のWebサーバー設定構造に食らったカルチャーショック

この記事は約7分で読めます。
この記事が役立ったらブックマーク! あとで読み返したり、環境構築時のリファレンスに活用できます
B! はてなブックマークに追加

長年CentOS(RHEL系)でサーバーを触ってきた管理人ですが、WordOps導入のためUbuntuサーバーに移行しました。
結論から言うと、「Webサーバーのディレクトリ構造とお作法が別世界すぎる」ので、CentOS感覚で /etc/nginx/conf.d//etc/httpd/conf.d/ にファイルを直置きして満足していると一瞬で迷子になります。

今回は、CentOS Stream 9ユーザーがUbuntu(Debian系)へ引っ越した際に食らう「Webサーバー設定ファイルの構造の違い」と、Debian系特有のコマンド群についてメモしておきます。

💡 そもそも思想が違う!「直置き」のCentOS vs 「控え室と本番」のUbuntu

CentOS(RHEL系)とUbuntu(Debian系)では、ApacheやNginxの仮想ホスト(マルチドメイン設定など)を管理する思想が根本から異なります。

  • CentOS(RHEL系)スタイル:
    設定ファイル(.conf)を特定のディレクトリ(conf.d など)に直接置いたら即有効化。無効化したければファイルを消すか、拡張子を .conf.disabled などに変更する「直豪快スタイル」。
  • Ubuntu(Debian系)スタイル:
    設定ファイルを置く「控え室(sites-available)」と、実際に読み込む「本番ステージ(sites-enabled)」が完全に分かれている。控え室に置いただけでは反映されず、本番ステージへシンボリックリンクを貼ることで初めて有効化される「慎重・エレガントスタイル」。

この「控え室」と「本番」の関係を知らないと、「設定ファイルを作ったのに全然反映されない…」と頭を抱えることになります。

🔍 ディレクトリ構造の比較

同じApacheやNginxでも、設定ファイルが置かれている場所がこれだけ違います。

Apacheの場合

役割CentOS Stream 9Ubuntu
メイン設定ファイル/etc/httpd/conf/httpd.conf/etc/apache2/apache2.conf
設定ファイルの控え室なし(直接置く)/etc/apache2/sites-available/
有効な設定の読み込み/etc/httpd/conf.d/*.conf/etc/apache2/sites-enabled/
モジュール設定/etc/httpd/conf.modules.d/mods-available/ / mods-enabled/

Nginxの場合

役割CentOS Stream 9Ubuntu
設定ファイルの控え室なし(直接置く)/etc/nginx/sites-available/
有効な設定の読み込み/etc/nginx/conf.d/*.conf/etc/nginx/sites-enabled/

💡 WordOpsを使っている場合は?
WordOpsを導入すると、内部でNginxが最適化され /etc/nginx/sites-available//etc/nginx/sites-enabled/ を使ったDebian流の構成が自動構築されます。

🛠️ 呪文に見える?Debian特有の「a2」コマンド群

Ubuntu(Debian系)のApacheで一番特徴的なのが、a2 から始まる便利コマンド(専用ツール)です。
CentOS時代は ln -s ... と手動でシンボリックリンクを貼ったり消したりしていた操作を、Ubuntuではコマンド一発で安全に行えます。

  • a2ensite (Apache Enable Site):控え室(sites-available)のファイルを本番(sites-enabled)に有効化する(シンボリックリンクを作成する)
  • a2dissite (Apache Disable Site):本番から外して無効化する(シンボリックリンクを削除する)
  • a2enmod / a2dismodモジュール(rewriteやsslなど)の有効化・無効化
  • a2enconf / a2disconf共通設定ファイルの有効化・無効化

実際の操作例(サイトを有効化するとき)

Bash
# 1. 控え室に設定ファイルを作成する
sudo nano /etc/apache2/sites-available/example.com.conf

# 2. a2ensite コマンドで有効化! (拡張子 .conf は省略可)
sudo a2ensite example.com

# 3. Apacheを再読み込みして反映
sudo systemctl reload apache2
Bash
# 1. Create the configuration file in the available sites directory
sudo nano /etc/apache2/sites-available/example.com.conf

# 2. Enable the site using the a2ensite command (.conf extension can be omitted)
sudo a2ensite example.com

# 3. Reload Apache to apply changes
sudo systemctl reload apache2

たったこれだけです!ln -s の長いパスを打つ必要もありません。

一時的にサイトをメンテナンスなどで止めたい時は、sudo a2dissite example.com を打ってリロードするだけで、元の設定ファイルを消さずに一瞬で非公開にできます。

⚠️ CentOSユーザーが陥るトラップ

トラップ1:conf.d にファイルを置いても無視されることがある

UbuntuのNginxやApacheでも conf.d/ ディレクトリ自体は存在することがあります。しかし、Debianの作法としては「ドメインごとの設定は sites-available に置く」のが標準です。
CentOSの癖で /etc/nginx/conf.d/myblog.conf などと作ってしまうと、設定の読み込み順序や優先度でハマる原因になります。

トラップ2:シンボリックリンクの相対パス事故

Nginxなどで a2ensite のようなコマンドを使わず、手動で ln -s を使って sites-enabled へリンクを貼る場合、絶対パスで指定しないとリンク切れ(Red Link)を起こすことがあります。

Bash
# 手動で貼るなら必ず「絶対パス」で指定する
# If you are adding it manually, always specify the absolute path.
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

📝 まとめ:慣れると「控え室システム」の方が安全で美しく思えてくる

今回は、CentOS Stream 9からUbuntuへ移行した際に衝撃を受けた「Webサーバーの設定ファイル構造の違い」について解説しました。

  • CentOSは「設定場所に直接置く」武闘派スタイル
  • Ubuntuは「控え室(available)から本番(enabled)へリンクを貼る」慎重スタイル
  • Apacheなら a2ensite / a2dissite が超便利!

最初は「いちいちリンク貼るのめんどくさっ!」と思っていましたが、設定ファイルを削除せずにコマンド一発でサイトを無効化・再有効化できる安全さを知ると、「あれ?こっちの方がシステム運用としては美しくないか…?」と掌を返すことになります(笑)。

次回は、さらにCentOSユーザーの手に染み付いたコマンドを拒絶する『firewall-cmd派だった管理人がUbuntuのufwとnftablesに触れて感じた直感性の違い』についてメモしていきます。お楽しみに!

コメント

タイトルとURLをコピーしました