Wordpress Docker за обратным прокси Nginx - PullRequest
0 голосов
/ 10 апреля 2019

Я использую эту страницу и их темы для решения проблем в течение многих лет, но знаю, что я должен задать вопрос.

Я попытался установить WordPress Docker на мою машину Vserver. Это довольно хорошо работает, но единственный HTTP. Чтобы установить Wordpress Docker, я должен использовать учебник из следующего Link .

Кроме того, я добавил --restart всегда при команде docker run -e ....

Затем я установил nginx 1.12.xxx, чтобы иметь обратный прокси. Но SSL не работал. После этого я попытался установить более новую версию 1.15.xx из репозитория nginx, но безрезультатнее.

Я установил сертификат с помощью Let's Encrypt и Certbot.

После этого WordPress работал и был доступен wp-admin.php.

Но у меня не работает SSL / HTTPS. Я уже пробовал много кодов, и мои коллеги по работе даже не могут найти решение.

Я надеюсь, что вы можете получить один:)

Я попытался настроить wp-config.php для включения https с такими командами, как "$_SERVER['HTTPS'] = 'on';" и другими без каких-либо рабочих, а скорее разрушающих эффектов.

Я также пытался включить "X-Forwared-Proto $scheme;" и "FastCGI", которые также не работали. Я перепробовал много их вариантов.

Я попробовал несколько плагинов SSL от Wordpress, но ни один из них не работает.

Надеюсь, это небольшая ошибка, и вы легко можете мне помочь.

1 Ответ

0 голосов
/ 10 апреля 2019

Первая установка Docker в Ubuntu

Либо вы выбираете Docker-провайдера, такого как Bluemix, либо получаете виртуальную машину от softlayer или любого другого провайдера.В моем случае я выбрал виртуальный сервер, поэтому мне пришлось установить докер на Ubuntu LTS.Что действительно легко.По сути, вы добавляете новую запись репозитория в ваши исходники apt и устанавливаете последние стабильные пакеты docker.На get.docker.com также есть скрипт, но я не чувствую себя комфортно для запуска скрипта прямо из сети с доступом root.Но это зависит от вас.

wget -qO- https://get.docker.com/ | sh

Docker в linux не содержит docker-compose по сравнению с установкой docker, например, на Mac.Установка docker compose проста.Скрипт docker compose можно скачать с github здесь: https://github.com/docker/compose/releases.

Docker-compose

Docker-compose заботится о настройке docker, содержащей более одного контейнера docker, включая сеть, а также базовый мониторинг.Следующий скрипт запускает и собирает весь докер-контейнер с помощью nginx, mysql и wordpress.Он также экспортирует тома в файловой системе хоста для упрощения резервного копирования и сохранения при перестроении док-контейнера и отслеживает, работают ли док-контейнеры.

version: '3'

services:
   db:
     image: mysql:latest
     volumes:
       - ./db:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: easytoguess
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: eveneasier

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     restart: always
     volumes:
       - ./wordpress:/var/www/html/wp-content
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: eveneasier
       WORDPRESS_DB_NAME: wordpress

   nginx:
     depends_on:
       - wordpress
     restart: always
     build:
       context: .
       dockerfile: Dockerfile-nginx
     ports:
       - "80:80"

Mysql - первый контейнер, который мы открываем с переменными средыдля базы данных, как имя пользователя, пароль и имя базы данных.Строка 7 заботится о том, чтобы сохранить файл базы данных вне контейнера Docker, чтобы вы могли удалить Docker-контейнер, запустить новый и при этом иметь и запускать ту же базу данных.Укажите это там, где вы хотите это иметь.В этом случае в «дБ» в том же каталоге.Также убедитесь, что вы придумали приличные пароли.

Второй контейнер - это WordPress.То же самое и с папкой хоста в строке 21. Кроме того, убедитесь, что у вас настроены тот же пользователь, пароль и имя базы данных, что и в конфигурации контейнера mysql.

Последним является nginx в качестве контейнера, обращенного к Интернету.Вы выставляете порт 80 здесь.В то время как вы просто указываете контейнер в двух других, вы настраиваете Dockerfile и контекст сборки для настройки вашего nginx в соответствии с настройками сети.Если вы хотите разместить только статические файлы, вы можете добавить это через монтирование тома, но в нашем случае нам нужно настроить сам nginx, поэтому нам нужен настроенный Dockerfile, как описано ниже.

Dockerfile для установки nginx

FROM nginx:latest
COPY   default.conf /etc/nginx/conf.d/default.conf
VOLUME /var/log/nginx/log/
EXPOSE 80

Этот dockerfile наследует все от последнего nginx и копирует в него файл default.conf.В следующей главе рассказывается, как настроить файл конфигурации.

Файл конфигурации Nginx

server {
    listen            80;
    listen       [::]:80;
    server_name  www.23-5.eu ansi.23-5.eu;
    access_log  /var/log/nginx/log/unsecure.access.log  main;
    location / {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;
        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $host;
    }
}

В строке 2 и 3 настраивается порт, который мы хотим прослушивать.Нам нужен один для ip4 и один для ip6.Важной является конфигурация прокси в строках с 8 по 15. В строке 11 все вызовы перенаправляются на «/» (без указания пути в URL) на сервер WordPress.Поскольку мы использовали для этого docker-compose, docker заботится о том, чтобы адрес был доступен через внутренний DNS-сервер.Строка 13-15 переписывает заголовок http, чтобы сопоставить все с другим URL-адресом, в противном случае в докере мы получим автоматически сгенерированные ссылки, указывающие на http://wordpress

Запустите систему

Если все настроено, а docker-compose.yml, default.conf, Dockerfile-nginx и папки db и wordpress находятся в одной папке, мы можем начать все, находящееся в этой папке, с помощью:

docker-compose up --build -d

Параметр «-d» запускает настройку в фоновом режиме (демон).Для самого первого запуска я бы рекомендовал использовать его без параметра «-d», чтобы увидеть все сообщения отладки.

...