Рейтинг:1

Localhost недоступен с Wordpress

флаг nl

Я попытался настроить свой сервер с доменным именем, но получаю ошибку 301 при вводе URL-адреса в браузере. (http://localhost работает нормально, но http://example.com выдает ошибку 301).

У меня есть DNS-серверы, указывающие на правильный общедоступный IP-адрес, а маршрутизатор настроен на переадресацию входящих портов 80 на локальные 80 на правильный частный IP-адрес.

apache2.conf был изменен следующим образом

#<Каталог /var/www/>
# Индексы опционов FollowSymLinks
# Разрешить переопределение
# Требовать все предоставленные
#</Каталог>

<Каталог /srv/>
    Параметры
    Аллововеррайд
    Требовать все предоставленные
</Каталог>

Это сделано для того, чтобы Wordpress устанавливался по предложенному адресу. /srv/www/wordpress/ и не нужно другое местоположение Apache по умолчанию для веб-сайта....

wordpress.conf в /etc/apache2/сайты с поддержкой/ папка выглядит следующим образом:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com

    DocumentRoot /srv/www/wordpress
    <Directory /srv/www/wordpress>
        Options FollowSymLinks
        AllowOverride Limit Options FileInfo
        DirectoryIndex index.php
        Require all granted
    </Directory>
    <Directory /srv/www/wordpress/wp-content>
        Options FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

Я использую Ubuntu 20.04, Apache 2.4.41, Wordpress 5.8.1.

Обновление от 23 сентября 2021 г.

Название этого вопроса изменено с «Получение ошибки 301 на сервере Apache» на «Локальный хост недоступен с Wordpress». Раньше я всегда получал простой ответ «время ожидания» при входе в свой домен (http://example.com) из моей локальной сети, в которой работает сервер. Ошибка 301 возникла, когда другой, в то время, получил доступ к моему домену внешне. Теперь, когда я нашел способ получить доступ к своему домену извне, ошибка постоянна: «Локальный хост недоступен». Кстати, похоже, это происходит только на сайте Wordpress; когда я получаю доступ к сайту «Это работает» по умолчанию, все в порядке (я раскомментировал apache2.conf строки, которые я выделил ранее). Возможно, это связано с тем, что Wordpress использует базу данных, а значение по умолчанию имя хоста для пользователя "локальный хост"?

[Для тех, кто пытается войти в домен, указывающий на их сервер: если вы делаете это из той же локальной сети, в которой находится сервер, это не сработает (поищите «петля NAT» для получения дополнительной информации). Это не обсуждается здесь, но я упоминаю об этом, потому что на это ушло много времени; локальный хост работает, доработка /и т.д./хосты может делать некоторые читы - все еще не имитирует внешний запрос, насколько я знаю, - но в конечном итоге использование доменного имени не будет работать.]

флаг in
Два вопроса... ну... три, но я остановлюсь на двух: (1) Имеет ли Apache право доступа к файлам в `/srv/www/wordpress` (2) Работает ли AppArmor и, если Итак, настроен ли он, чтобы разрешить Apache доступ к содержимому `/srv/www/wordpress`?
jelt avatar
флаг nl
(1) отличное предложение; Я настроил Wordpress под своим идентификатором пользователя, а не по умолчанию для www-data (что, по-видимому, делает и Apache Ubuntu). Я сделал рекурсивный `chown -R www-data:www-data /srv/www`, чтобы исправить это, но это не решило проблему. (2) Я не уверен, как проверить, настроен ли AppArmor на разрешение Apache, но он был запущен, поэтому я ненадолго остановил его, чтобы проверить, но это также не дало результата.
флаг in
Если AppArmor был запущен, то для Apache также могут быть загружены модули, которые необходимо отключить: `sudo a2dismod apparmor`, а затем `sudo service apache2 restart` может дать вам то, что вам нужно. В идеале, однако, не должно быть никаких причин размещать файлы Apache за пределами `/var/www`, так как многие вещи по умолчанию просто ожидают, что Apache будет жить там...
jelt avatar
флаг nl
AppArmor не является включенным модом в моей установке; однако служба AppArmor работала, затем я временно остановил ее для тестирования, как уже отмечалось. На ubuntu.com/tutorials для установки WordPress, за которым я следил, указано местоположение /srv.
флаг in
Тогда давайте посмотрим на вещи под другим углом. Вы можете получить доступ к серверу с `localhost`, но не извне. «301» — это постоянное перенаправление. Вы установили WordPress через `http://localhost` или с доменом, который хотите использовать? Если использовался `localhost`, вам может понадобиться изменить пару вещей в конфигурации WordPress.
jelt avatar
флаг nl
Если вы хотите увидеть довольно краткий учебник, которому я следовал в любой момент (https://ubuntu.com/tutorials/install-and-configure-wordpress#1-overview) - единственное отличие, кроме зависимостей, было то, что я заменил `www -data` с моим идентификатором пользователя в каждом экземпляре. Что касается вашего вопроса, я думаю, я сначала установил для `localhost`, а затем добавил параметр `ServerName` в директиву в `wordpress.conf`
jelt avatar
флаг nl
Я имею в виду, что я установил `ServerName example.com`....
Рейтинг:0
флаг nl

Итак, исправление заключалось в том, что базу данных Wordpress необходимо было обновить. Сделать это:

Имея доступ к своей учетной записи Wordpress, просто измените URL-адрес Wordpress и URL-адрес сайта в «Настройки» -> «Основные»:

Адрес WordPress (URL): <site_URL_here>

Адрес сайта (URL): <site_URL_here>

ИЛИ ЖЕ

С доступом к вашей базе данных Wordpress

  1. войдите в mysql с именем пользователя вашего сайта wordpress (если вы забыли свое имя пользователя, оно находится в wp-config.php в корневом каталоге вашего сайта wordpress; там же находится и соответствующий пароль)
mysql -u <user_name_here> -p
  1. выберите базу данных для вашего сайта (опять же, wp-config.php поможет вам, если вы забыли)
использовать <database_name_here>
  1. КЛЮЧЕВОЙ ШАГ: обновить записи «home» и «siteurl» (wordpress официальный документ примечания, что вы должны опустить любой завершающий символ «/» в своем URL-адресе)
ОБНОВЛЕНИЕ wp_options SET option_value="http://<site_URL_here>" ГДЕ option_name="home";
ОБНОВЛЕНИЕ wp_options SET option_value="http://<site_URL_here>" ГДЕ option_name="siteurl";
  1. проверьте, что записи базы данных были только что обновлены
SELECT * FROM wp_options WHERE option_name = "home" OR option_name = "siteurl";

Вот и все для этого вопроса.

Что касается возможности доступа к вашему сайту по новому адресу:

Если сайт WordPress размещен в вашей собственной локальной сети, как уже отмечалось, вы НЕ сможете получить к нему ВНУТРЕННИЙ доступ, то есть с устройства в той же локальной сети (включая сервер); будь то через локальный хост или даже URL-адрес, который вы только что ввели на шагах выше, это не сработает. Вы можете получить доступ к сайту ТОЛЬКО ВНЕШНЕ (например, с телефона, используя данные, с какого-либо компьютера в сети друга, с компьютера на работе и т. д.). Поскольку это боль, я нашел два варианта, чтобы вы все еще могли получить доступ к сайту ВНУТРЕННЕ: i) у вас есть маршрутизатор, который может обрабатывать петлю NAT ii) вы используете виртуальную частную сеть

Я не проверял (i), но я знаю, что (ii) работает, потому что я делаю именно это. Когда VPN включен, перейдите по своему URL-адресу, и вы сможете увидеть сайт.

Я думаю, что этот момент действительно должен быть более известен для руководств по настройке и созданию сайта Wordpress в локальной сети.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.