
長年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 9 | Ubuntu |
|---|---|---|
| メイン設定ファイル | /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 9 | Ubuntu |
|---|---|---|
| 設定ファイルの控え室 | なし(直接置く) | /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:共通設定ファイルの有効化・無効化
実際の操作例(サイトを有効化するとき)
# 1. 控え室に設定ファイルを作成する
sudo nano /etc/apache2/sites-available/example.com.conf
# 2. a2ensite コマンドで有効化! (拡張子 .conf は省略可)
sudo a2ensite example.com
# 3. Apacheを再読み込みして反映
sudo systemctl reload apache2# 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)を起こすことがあります。
# 手動で貼るなら必ず「絶対パス」で指定する
# 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に触れて感じた直感性の違い』についてメモしていきます。お楽しみに!


コメント