Есть несколько проблем с вашим скриптом.
$ (ссылка для чтения…)
. Это сломается, если цель ссылки содержит пробелы или подстановочные знаки. ln
и используете результат как команду для выполнения. К счастью, это не причинит вреда, поскольку ln
не производит никакого вывода. mv
перемещает символическую ссылку в целевое местоположение, что не имеет смысла. Я думаю, это то, что вы хотели написать:
#!/bin/sh
ln -rs -- "$(readlink -f -- "$1")" "$1.tmp"
mv -f -- "$1.tmp" "$1"
В качестве альтернативы вы можете использовать утилиту symlinks
(первоначально от Марка Лордса, теперь поддерживаемую Дж. Брандтом Бакли), присутствующую во многих дистрибутивах Linux. .
Команда символические ссылки -c / путь / к / каталогу
преобразует все символические ссылки в указанном каталоге в относительные ссылки.
В любой среде Nginx и DNS необходимы две вещи, чтобы правильно создать новый субдомен с другим корнем документа:
Дополнительный блок server { }
для его обработки (помимо того, который у вас уже есть в элементе #3 ).
DNS-запись, указывающая другой субдомен на нужный веб-сервер.
В зависимости от предоставленной конфигурации вам нужно сделать 2 вещи:
В конфигурации вашего сайта test.example.com
отсутствует директива server_name test.example.com;
. Добавьте один и перезапустите процесс nginx
.
Установите test.example.com
DNS-запись в DNS для вашего основного домена (, скорее всего, с помощью вашего облачного инструмента управления DNS ).
Всегда сообщайте NGINX, какие сайты обрабатывать и какие блоки серверов. Как специалист по сопровождению пакета nginx
в Ubuntu, я знаком с большинством ловушек на уровне пользователя -, с которыми сталкиваются люди, например с этой.
Ты дал нам это:
server {
root /var/www/html/test;
location ~ /\.ht {
deny all;
}
location / {
index index.php index.html index.htm fastcgi_index;
try_files $uri $uri =404 $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 80;
}
Итак, буквально просто добавьте прямо перед строкой root
:эта строка:
server_name test.example.com;
... и вы получите этот файл конфигурации:
server {
root /var/www/html/test;
server_name test.example.com;
location ~ /\.ht {
deny all;
}
location / {
index index.php index.html index.htm fastcgi_index;
try_files $uri $uri =404 $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 80;
}