web-dev-qa-db-ja.com

Nginxサイト対応、サイト利用可能:Ubuntu 12.04の構成ファイル間にソフトリンクを作成できません

/ etc/nginx /のサイト対応ディレクトリとサイト利用可能ディレクトリのサーバーブロックを含む構成ファイル間にソフトリンクを作成しようとしています。

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

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部分には赤い書体の炭があります。

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

サイトで利用可能なディレクトリにソフトリンクを作成するとき、つまり.

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

通常どおり機能します。ただし、これをサイト対応ディレクトリに移動すると、リンクが再び壊れます。

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

権限の問題であると思われたため、ディレクトリとディレクトリ自体の両方の777にすべての権限を設定し、所有者をルート以外に変更しましたが、まだ運がありませんでした。

助けていただければ幸いです、ありがとう。

43
iamyojimbo

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

サイトでfoo.confが利用可能であると仮定します

試して

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

これで、ターゲットが../sites-available/foo.confであるfoo.confという名前のサイト対応シンボリックリンクが作成されます。

明確にするために、Apacheの通常の構成では、潜在的なサイトの構成ファイルはサイト利用可能に存在し、有効なサイトのシンボリックリンクはサイト対応に存在し、サイト利用可能のターゲットを指します。それはあなたがあなたのセットアップを説明する方法のケースではまったくないようですが、それはあなたの主な問題ではありません。

シンボリックリンクの場所に関係なく、常に同じファイルを指すシンボリックリンクが必要な場合、ターゲットはフルパスである必要があります。

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つのディレクトリに移動することを意味します)。

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

96
Rodney