2013-08-06 6 views
32

/etc/hostsファイル内のsites-enabledおよびsites-availableディレクトリにサーバーブロックを含む設定ファイル間のソフトリンクを作成しようとしています。 nginx /。Nginx sites-enabled、sites-available:Ubuntu 12.04の設定ファイル間にソフトリンクを作成できません

私が使用しているコマンドがある:

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

Iは次に実行する:

ls -l 

結果は:immigrationinformation.conf -> immigrationinformation.conf部分は赤色で木炭を有する

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

書体。

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

私はすなわち

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

サイトで入手可能なディレクトリにソフトリンクを作成する場合、それは通常通り動作します。ただし、これをサイト対応のディレクトリに移動すると、リンクが再度切断されます。

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

私はアクセス権の問題であると思っていましたので、両方のディレクトリとディレクトリ自体の777にすべてのアクセス許可を設定し、所有者をroot以外のものに変更しても運がないまま遊んでいました。

お手数をおかけしますようお願い申し上げます。ありがとうございます。

+1

私はすでに答えられていますが、私はあなたの間違いがどこにあったのかを知りたいと思っています。実際にはとてもシンプルで、最初の 'sudo ln -s sites-available/sites '/ etc/nginx'ディレクトリ内に立っている間に' -enabled/foo.conf'を実行しました –

答えて

68

シンボリックリンクのターゲットがパス名であることを理解することから始める必要があります。そして、それは今、あなたはサイトを有効にシンボリックリンクを持っています

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

を試してみてくださいあなたはサイトに利用可能な

でfoo.confを持っていると仮定すると、シンボリックリンク

を含むディレクトリへの絶対または相対することができfoo.confと呼ばれるターゲットがあります../sites-available/foo.conf

Apacheの通常の設定は、潜在的なサイトの設定ファイルが利用可能であることです。サイトを有効にするenablサイト内のターゲットを指し示す - 利用可能です。それはあなたの設定を記述する方法のようには思えませんが、それはあなたの主要な問題ではありません。

symlinkが常に同じファイルを指し示すようにするには、シンボリックリンクがどこにあるかにかかわらず、ターゲットはフルパスでなければなりません。ここで

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

は私のls -lの出力は/ etc/apache2の/サイト対応(の1行目)である:

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

は、シンボリックリンクのターゲットがそのディレクトリに相対的であるかを参照してください。シンボリックリンクを含んでいます(これは ".."で始まり、1つのディレクトリに移動します)。

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

+0

今、私の問題を見ると、 'ln'コマンドが私のパスを解決すると思っていました。ターゲットの完全パス、またはシンボリックリンク上の場所からの相対パスを指定します。 – iamyojimbo

関連する問題