Я уже несколько раз достигал своей «цели», но столкнулся с проблемой, с которой еще не сталкивался. У меня есть настройка веб-сервера с Nginx на Ubuntu 12.04 LTS. Моя система настроена обычным образом, и я пытаюсь создать символическую ссылку для «виртуального хоста» сайта с сайтов, доступных для каталога с поддержкой сайтов. Обычно это достигается с помощью следующего из основного каталога nginx (от имени root):
ln -s /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/site.com
Хотя я могу перейти в активированный каталог и увидеть, что символическая ссылка «сработала», когда я пытаюсь отредактировать файл непосредственно в каталоге с включенными сайтами, я вижу, что файл пустой и рассматривается как новый файл. В результате мой сервер не работает должным образом, и страницы не загружаются. Когда я просто копирую файл в каталог или жестко связываю его:
ln /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/site.com
Работает без проблем. Однако я застрял с двумя копиями одного и того же файла и без символической ссылки.
Что, черт возьми, дает?
Примечание: вот структура моего текущего каталога Nginx:
root@site.com:/etc/nginx# ls -l total 44 drwxr-xr-x 2 root root 4096 Mar 4 17:28 conf.d -rw-r--r-- 1 root root 964 Feb 12 08:41 fastcgi_params -rw-r--r-- 1 root root 2837 Feb 12 08:41 koi-utf -rw-r--r-- 1 root root 2223 Feb 12 08:41 koi-win -rw-r--r-- 1 root root 3463 Feb 12 08:41 mime.types -rw-r--r-- 1 root root 1022 Mar 4 21:15 nginx.conf -rw-r--r-- 1 root root 596 Feb 12 08:41 scgi_params drwxr-xr-x 2 root root 4096 Mar 4 21:15 sites-available drwxr-xr-x 2 root root 4096 Mar 4 21:19 sites-enabled -rw-r--r-- 1 root root 623 Feb 12 08:41 uwsgi_params -rw-r--r-- 1 root root 3610 Feb 12 08:41 win-utf
Спасибо за вашу помощь заранее!
Изменить 1: отображение содержимого sites-enabled
папка с ls -l
:
root@site.com:/etc/nginx/sites-enabled# ls -l total 0 lrwxrwxrwx 1 root root 3 Mar 5 10:23 www -> www
Итак, после помощи @Insyte и @Michael Hampton, я понял, как иногда воспроизводить мою ошибку. Сценарий разыгрывался следующим образом:
root@site.com:/etc/nginx# cd sites-available root@site.com:/etc/nginx/sites-available# ls www root@site.com:/etc/nginx/sites-available# ln -s www /etc/nginx/sites-enabled/www root@site.com:/etc/nginx/sites-available# cd /etc/nginx/sites-enabled root@site.com:/etc/nginx/sites-enabled# ls -l total 0 lrwxrwxrwx 1 root root 3 Mar 5 10:48 www -> www
Я не знаю «почему», но оказывается, что если я каждый раз использую полные абсолютные пути, то проблемы не существует.
Вам каким-то образом удалось создать символическую ссылку, которая ведет сама на себя. Я даже не знал, что вы можете это сделать, но совершенно уверен, что это не даст желаемого результата.
Чтобы исправить это, удалите символическую ссылку и заново создайте ее правильно.
rm -f /etc/nginx/sites-enabled/www
Или просто используйте -f
возможность ln
и он может удалить для вас недопустимую символическую ссылку.
ln -fs /etc/nginx/sites-available/www /etc/nginx/sites-enabled/www
Итак, у вас есть символическая ссылка, которая ведет к самой себе. Я не понимаю, как это возможно с помощью команды, которую вы указали в начале своего вопроса, поэтому я подозреваю, что эта конкретная символическая ссылка была создана по-другому.
Я могу воспроизвести ваш сценарий так:
sazerac:~ insyte$ cd testlinks/
sazerac:~/testlinks insyte$ ls
sazerac:~/testlinks insyte$ ln -s www www
sazerac:~/testlinks insyte$ ls -l
total 8
lrwxr-xr-x 1 insyte staff 3 Mar 5 10:33 www -> www
Попробуем эксперимент. Выполните следующие команды точно так, как указано:
echo "hello insyte" > /etc/nginx/sites-available/insyte
ln -s /etc/nginx/sites-available/insyte /etc/nginx/sites-enabled
ls -l /etc/nginx/sites-enabled|grep insyte
cat /etc/nginx/sites-enabled/insyte