1. ホーム
  2. ubuntu

[解決済み] Nginx のサイトが有効で、サイトが利用可能です。Ubuntu 12.04で設定ファイル間のソフトリンクが作成できない

2023-03-22 14:02:41

質問

etc/nginx/ の sites-enabled と sites-available ディレクトリにあるサーバーブロックを含む設定ファイル間にソフトリンクを作成しようとしています。

私が使用しているコマンドは、次のとおりです。

sudo ln -s sites-available/foo.conf sites-enabled/

その後実行すると

ls -l

という結果になります。

lrwxrwxrwx 1 parallels parallels 27 Aug  6 20:44 immigrationinformation.conf -> immigrationinformation.conf

ここで immigrationinformation.conf -> immigrationinformation.conf の部分には赤の書体でチャコールが書かれています。

このソフトリンクにアクセスしようとすると、リンクが壊れていると言われます。

私は、sites-available ディレクトリにソフトリンクを作成するとき、すなわち、.

sudo ln -s sites-available/foo.conf sites-available/foo_link.conf

とすると、通常通り動作します。しかし、これをsites-enabledディレクトリに移動すると、リンクは再び切れてしまいます。

ファイル マネージャー GUI 経由でソフト リンクを作成することはできますが、コマンド ライン経由ではできません。ハード リンクを問題なく作成することもできます。

私はそれがパーミッションの問題であると疑ったので、両方のディレクトリとディレクトリ自体のすべてのパーミッションを 777 に設定し、さらに所有者を root 以外のものに変更して遊びましたが、まだうまくいきません。

どのような助けでも大いに感謝します、ありがとうございます。

どのように解決するのですか?

シンボリックリンクのターゲットはパス名であることを理解することから始める必要があります。そして、それはシンボリックリンクを含むディレクトリへの絶対または相対パス名であることができます。

foo.conf が sites-available にあると仮定します。

試しに

cd sites-enabled
sudo ln -s ../sites-available/foo.conf .
ls -l

これで、sites-enabled に foo.conf というシンボリックリンクができ、 ../sites-available/foo.conf をターゲットとするようになりました。

はっきりさせておきたいのですが、Apache の通常の構成は、潜在的なサイトのための設定ファイルが sites-available にあり、有効なサイトのためのシンボリックリンクが sites-enabled にあり、 sites-available のターゲットを指しているということです。それは、あなたがセットアップを記述する方法とは全く違うようですが、それはあなたの主要な問題ではありません。

シンボリックリンクがどこにあるかにかかわらず、常に同じファイルを指すようにしたい場合、ターゲットはフルパスであるべきです。

ln -s /etc/apache2/sites-available/foo.conf mysimlink-whatever.conf

以下は、ls -l /etc/apache2/sites-enabled の出力(の1行目)です。

lrwxrwxrwx 1 root root  26 Jun 24 21:06 000-default -> ../sites-available/default

シンボリックリンクのターゲットが、シンボリックリンクを含むディレクトリに対してどのように相対的であるかを見てみましょう(1つ上のディレクトリに行くことを意味する "..." で始まっています)。

ハードリンクのターゲットはディレクトリエントリではなく、ファイリングシステムのInodeであるため、ハードリンクは全く異なります。