В моей среде 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 -t
nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке
nginx: файл конфигурации /etc/nginx/nginx.conf, тест прошел успешно
tail /var/log/nginx/error.log
tail /var/log/nginx/access.log
/var/www/html/test/
.Что остается возможной причиной того, что тестовая площадка не поднялась с my_ip_addrres/test
? Как новичок в Nginx, я чувствую, что перепробовал все, что есть в арсенале ...
Мне действительно ничего не нужно, кроме доступа к нему напрямую с IP
Параметры:
000-test.conf
Это означает, что любой, кто сделает что-нибудь глупое, увидит ваш тестовый сайт.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.