Назад | Перейти на главную страницу

Дублированная версия локального (WordPress) сайта недоступна в сети в среде Nginx

В моей среде Ubuntu 16.04 Nginx я попытался создать онлайн тестовая версия локального сайта WordPress. Исходный сайт работает нормально и доступен по HTTPS (значок блокировки зеленый на всех страницах).

Мое текущее состояние и проблема

Когда я просматриваю my_ip_addrres/test Я попадаю на страницу 404 исходного сайта (локальный сайт, который я хочу продублировать), хотя URL-адрес остается my_ip_addrres/test. Более того, все ссылки главного меню на этой странице 404 с my_ip_addrres/test URL-адрес указывает на исходный сайт.

Мое желаемое конечное состояние

Когда я перейду к my_ip_addrres/test в любом браузере я перейду на дублированную версию исходного сайта и буду работать с ней так же, как с исходным сайтом, чтобы я мог перейти на my_ip_addrres/test/wp-admin, войдите в систему и измените тестовый сайт.

Что я делал до сих пор, чтобы дублировать исходный сайт

Я в основном делал все с помощью следующих команд bash. Пожалуйста, используйте их, если вы хотите воспроизвести в конце:

cd /var/www/html/
read domain # Domain of the site for duplication.
read -s rps # Password for Mysql root user.
read -s sps # Password for Mysql DB user.

cp -r ./${domain} ./test/
sed -i "s/${domain}/test"/g ./test/wp-config.php
cp -r /etc/nginx/sites-available/${domain}.conf /etc/nginx/sites-available/test.conf
sed -i "s/${domain}/test"/g /etc/nginx/sites-available/test.conf
ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf

echo "CREATE USER 'test'@'localhost' IDENTIFIED BY \"${sps}\";" | mysql -u root -p"${rps}"
echo "CREATE database test;" | mysql -u root -p"${rps}"
echo "GRANT ALL PRIVILEGES ON test.* TO test@localhost;" | mysql -u root -p"${rps}"

mysqldump -u root -p"${rps}" "${domain}" > test.sql
mysql -u test -p"${sps}" test < ./test.sql

cd test 
wp search-replace "${domain}" "MY_IP_ADDRESS/test" --allow-root

Дальнейшие подробности

1) У меня было около 1300 замен в базе данных после выполнения вышеуказанного WP-CLI поиск и замена команды.

2) /var/www/html/test/wp-config.php:

define('DB_NAME', 'test');
define('DB_USER', 'test');

Конфиденциальность Nginx

Журналы:

nginx -t

nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке

nginx: файл конфигурации /etc/nginx/nginx.conf, тест прошел успешно

tail /var/log/nginx/error.log
tail /var/log/nginx/access.log

Мой вопрос

Что остается возможной причиной того, что тестовая площадка не поднялась с my_ip_addrres/test? Как новичок в Nginx, я чувствую, что перепробовал все, что есть в арсенале ...

Мне действительно ничего не нужно, кроме доступа к нему напрямую с IP

Параметры:

  1. Просто избавьте себя от полутора головной боли и используйте доменное имя test.example.com. Вам даже не нужно публиковать действительные записи DNS, просто отредактируйте локальный файл HOSTS. И добавьте директиву имени сервера в файл test.conf.
  2. Вам необходимо убедиться, что тестовая конфигурация является ПЕРВОЙ загруженной конфигурацией. Измените имя файла в сайтах с поддержкой на 000-test.confЭто означает, что любой, кто сделает что-нибудь глупое, увидит ваш тестовый сайт.
  3. Добавьте директиву имени сервера в test.conf с IP-адресом сервера
  4. Вручную включайте отдельные файлы конфигурации по порядку, а не весь sites-enabled

Объяснение

Поместите HelloWorld.html файл в /var/www/html/example.com/test/. Просмотрите к IP_ADDRESS/test/HelloWorld.html и вы увидите содержимое вашего файла. Поскольку в ваших конфигах нет server { ... } с servername что соответствует http://YOUR_IP/ он использует первый server { ... } заблокировать по умолчанию. Статистически говоря example.com.conf загружается до test.conf

Nginx Смотрит он неправильно root для вашего файла, потому что по умолчанию используется основной веб-сайт.

Рекомендация

Используйте вариант 1 или 3. Ваш действующий сайт должен вероятно, это будут посетители веб-сайта по умолчанию. Я бы выбрал вариант 1, потому что он позволяет вам еще больше «скрыть» тестовый сайт. Вариант 3 сделает "http: // ip / тест"но по указанным выше причинам я все же предпочитаю вариант 1.