◄ Помощь ► Magento 2

Привет, коллеги! Помогите, пожалуйста, с установкой сертификата SSL. Перечитал манул множество раз Для просмотра ссылки Войди или Зарегистрируйся. Но у нас же Magento 2, тут такие стандартные плюшли не работают, всё сложнее. Тормознул сразу на втором шаге, не могу получить сертификат. Доступ к скрытой папке .well-known закрыт в корне сайта.
Конфиг сделал такой, но не уверен, что нужно было полностью менять на втором шаге, но испробовал реально все варианты с последовательностью и правилом для этой папки.
Код:
upstream fastcgi_backend {
    server unix:/var/run/php/php7.0-fpm.sock;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name www.agestor.ru www.agestor.com agestor.com;
    return 301 https://agestor.ru$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    server_name agestor.ru;

    set $MAGE_ROOT /var/www/agestor.ru/html;
    set $MAGE_MODE default;

    location ~ /.well-known {
        allow all;
    }

    location = /robots.txt {
        alias /var/www/agestor.ru/html/robots.txt;
    }

    location = /sitemap.xml {
        alias /var/www/agestor.ru/html/sitemap.xml;
    }

    include /var/www/agestor.ru/html/nginx.conf.sample;
}
Из-за кризиса с Magento 2, сообщество неактивно. Написал во все сервисы, которые только можно было. Ответил один на форуме, чья фирма выдаёт сертификаты, говорит нужно подключать IPv6. Инфы по этому делу нету для ubuntu 16.04. Сложилось впечатление, что IPv6 не нужен никому.

кризис с M2?
в чем сложность с SSL?

с letsencrypt так не работал, не помогу(
 
Последнее редактирование модератором:
кризис с M2?
в чем сложность с SSL?
Когда команду по мануалу ввожу
Код:
sudo letsencrypt certonly -a webroot --webroot-path=/var/www/agestor.ru/html -d agestor.ru -d www.agestor.ru -d agestor.com -d www.agestor.com
Проблема в создаваемой папке .well-known в корне, не доступа.
Код:
Failed authorization procedure. agestor.com (http-01): urn:acme:error:unauthoriz                                       ed :: The client lacks sufficient authorization :: Invalid response from http://                                       agestor.com/.well-known/acme-challenge/TsAoW3va_kj5gSu05huAikPmpROy_d1fA8wBZwmA8                                       ZY: "<!doctype html>
<html lang="ru-RU">
<head >
    <script>
var require = {
    "baseUrl": "http://agestor.ru/stati", agestor.ru (http-01): urn:acme:err                                       or:unauthorized :: The client lacks sufficient authorization :: Invalid response                                        from http://agestor.ru/.well-known/acme-challenge/wvuw-yd-MKzpUt_E_I9wZ2AhtwrbZ                                       JIH_cOm2JANKrE: "<!doctype html>
<html lang="ru-RU">
<head >
    <script>
var require = {
    "baseUrl": "http://agestor.ru/stati", www.agestor.com (http-01): urn:acm                                       e:error:unauthorized :: The client lacks sufficient authorization :: Invalid res                                       ponse from http://www.agestor.com/.well-known/acme-challenge/wM5zgGm6puRGXz6cRAq                                       cLWfN6ODLl-evVwuHjx7h31U: "<!doctype html>
<html lang="ru-RU">
<head >
    <script>
var require = {
    "baseUrl": "http://agestor.ru/stati", www.agestor.ru (http-01): urn:acme                                       :error:unauthorized :: The client lacks sufficient authorization :: Invalid resp                                       onse from http://www.agestor.ru/.well-known/acme-challenge/4H0s6Czl-cAzTQIdo8KUA                                       rdACh427S9pazw1bvFKjUM: "<!doctype html>
<html lang="ru-RU">
<head >
    <script>
var require = {
    "baseUrl": "http://agestor.ru/stati"

IMPORTANT NOTES:
- The following errors were reported by the server:

   Domain: agestor.com
   Type:   unauthorized
   Detail: Invalid response from http://agestor.com/.well-known/acme-
   challenge/TsAoW3va_kj5gSu05huAikPmpROy_d1fA8wBZwmA8ZY: "<!doctype
   html>
   <html lang="ru-RU">
   <head >
       <script>
   var require = {
       "baseUrl": "http://agestor.ru/stati"

   Domain: agestor.ru
   Type:   unauthorized
   Detail: Invalid response from http://agestor.ru/.well-known/acme-
   challenge/wvuw-yd-MKzpUt_E_I9wZ2AhtwrbZJIH_cOm2JANKrE: "<!doctype
   html>
   <html lang="ru-RU">
   <head >
       <script>
   var require = {
       "baseUrl": "http://agestor.ru/stati"

   Domain: www.agestor.com
   Type:   unauthorized
   Detail: Invalid response from http://www.agestor.com/.well-known
   /acme-challenge/wM5zgGm6puRGXz6cRAqcLWfN6ODLl-evVwuHjx7h31U:
   "<!doctype html>
   <html lang="ru-RU">
   <head >
       <script>
   var require = {
       "baseUrl": "http://agestor.ru/stati"

   Domain: www.agestor.ru
   Type:   unauthorized
   Detail: Invalid response from http://www.agestor.ru/.well-known
   /acme-challenge/4H0s6Czl-cAzTQIdo8KUArdACh427S9pazw1bvFKjUM:
   "<!doctype html>
   <html lang="ru-RU">
   <head >
       <script>
   var require = {
       "baseUrl": "http://agestor.ru/stati"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A record(s) for that domain
   contain(s) the right IP address.

с letsencrypt так не работал, не помогу(
А не знаете как в конфигурации nginx сделать доступным папку в корне сайта? Испробовал разные варианты, не получается. Конкретные существующие файлы на подобие robots.txt без проблем прописываю доступ. А вот к скрытой папке в которой проверяется сертификат не получается.
 
Последнее редактирование модератором:
А не знаете как в конфигурации nginx сделать доступным папку в корне сайта? Испробовал разные варианты, не получается. Конкретные существующие файлы на подобие robots.txt без проблем прописываю доступ. А вот к скрытой папке в которой проверяется сертификат не получается.
Все куда проще.
Создаем например папку /var/www/letsencrypt
Инклудим к конфигу сайта конфиг letsencrypt (не забываем про настройки для ssl)
Код:
include /etc/nginx/conf.d/letsencrypt.conf;
Содержимое файла:
Код:
#############################################################################
# Configuration file for Let's Encrypt ACME Challenge location
# This file is already included in listen_xxx.conf files.
# Do NOT include it separately!
#############################################################################
#
# This config enables to access /.well-known/acme-challenge/xxxxxxxxxxx
# on all our sites (HTTP), including all subdomains.
# This is required by ACME Challenge (webroot authentication).
# You can check that this location is working by placing ping.txt here:
# /var/www/letsencrypt/.well-known/acme-challenge/ping.txt
# And pointing your browser to:
# http://xxx.domain.tld/.well-known/acme-challenge/ping.txt
#
# Sources:
# https://community.letsencrypt.org/t/howto-easy-cert-generation-and-renewal-with-nginx/3491
#
#############################################################################

# Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx)
# We use ^~ here, so that we don't check other regexes (for speed-up). We actually MUST cancel
# other regex checks, because in our other config files have regex rule that denies access to files with dotted names.
location ^~ /.well-known/acme-challenge/ {

    # Set correct content type. According to this:
    # https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29
    # Current specification requires "text/plain" or no content header at all.
    # It seems that "text/plain" is a safe option.
    default_type "text/plain";

    # This directory must be the same as in /etc/letsencrypt/cli.ini
    # as "webroot-path" parameter. Also don't forget to set "authenticator" parameter
    # there to "webroot".
    # Do NOT use alias, use root! Target directory is located here:
    # /var/www/common/letsencrypt/.well-known/acme-challenge/
    root         /var/www/letsencrypt;
}

# Hide /acme-challenge subdirectory and return 404 on all requests.
# It is somewhat more secure than letting Nginx return 403.
# Ending slash is important!
location = /.well-known/acme-challenge/ {
    return 404;
}

Затем создаем конфиг для домена в папке /etc/letsencrypt/configs/ и назовем его к примеру domain.com.conf со следующим содержанием:

Код:
# the domain we want to get the cert for;
# technically it's possible to have multiple of this lines, but it only worked
# with one domain for me, another one only got one cert, so I would recommend
# separate config files per domain.
domains = domain.com, www.domain.com

# increase key size
rsa-key-size =  4096 # Or 2048

# the current closed beta (as of 2015-Nov-07) is using this server
server = https://acme-v01.api.letsencrypt.org/directory

# this address will receive renewal reminders
email = webmaster@domain.com

# turn off the ncurses UI, we want this to be run as a cronjob
text = True

# authenticate by placing a file in the webroot (under .well-known/acme-challenge/)
# and then letting LE fetch it
authenticator = webroot
webroot-path = /var/www/letsencrypt/

Следующей командой можно сгенерировать сертификат

Код:
/opt/letsencrypt/letsencrypt-auto --config /etc/letsencrypt/configs/domain.com.conf certonly

Перезапускаем NGINX и если настройки SSL для сайта верны, то сайт откроется по протоколу HTTPS.

Этим скриптом можно автоматически обновлять сертификаты когда у них заканчивается срок действия. Уведомления приходят на почту. Требуется установить дополнительно mailutils

Код:
#! /bin/bash
#
# LET'S ENCRYPT AUTOMATION
#
# by Damia Soler
# Contact: damia (at) damia (dot) net
# https://eblog.damia.net/2015/12/03/lets-encrypt-automation-on-debian/
#
# You will need bc, xargs, curl, apache2ctl, mail, openssl.
#
# 30 2 * * * /usr/local/bin/letsencrypt_renew.sh --renew-all >> /var/log/letsencrypt/renew.log

PATH=/sbin:/bin:/usr/sbin:/usr/bin

# Remaining days to expire before renewal
DAYSTORENEW=10

# Remaining days to expire before alert (this is supposed to be less than DAYSTORENEW)
DAYSTOALERT=5

# Email to alert if unable to renew (leave blank to suppress notification mails)
ALERTEMAIL=webmaster@domain.com

WEBROOT=/var/www/letsencrypt
ACMEPATH=.well-known/acme-challenge
LEBIN=/opt/letsencrypt
LECONFIGS=/etc/letsencrypt/configs

NGINX_RELOAD=false

function checkAndRenew() {
    echo "Checking domain '${DOMAIN}'"
    CERTFILE=/etc/letsencrypt/live/${DOMAIN}/cert.pem

    # Check expiration date
    if [ -f ${CERTFILE} ]; then
        d1=$(date -d "`openssl x509 -in ${CERTFILE} -text -noout | grep "Not After" | cut -c 25-`" +%s)
        d2=$(date -d "now" +%s)
        DAYSEXP=`echo \(${d1} - ${d2}\) / 86400 | bc`
        echo "Domain '${DOMAIN}' will expire in ${DAYSEXP} days"
    else
        echo "Domain '${DOMAIN}' has no cert yet"
        # Set DAYSEXP so that a cert will be requested, but no alert will be issued
        DAYSEXP=${DAYSTOALERT}
    fi

    # Check if cert needs to be renewed
    if [ ${DAYSEXP} -lt ${DAYSTORENEW} ]; then
        echo "Trying to renew..."

        # Pre-Test to not mess up the server if you are not answering the challenge
        TESTFILE=${RANDOM}
        URL=http://${DOMAIN}/${ACMEPATH}/${TESTFILE}
        mkdir -p ${WEBROOT}/${ACMEPATH}
        echo "test" > ${WEBROOT}/${ACMEPATH}/${TESTFILE}

        if curl --output /dev/null --silent --head --fail "${URL}"; then
            ${LEBIN}/letsencrypt-auto --config ${LECONFIGS}/${DOMAIN}.conf certonly
            NGINX_RELOAD=true
                        echo "Renew cert for '${DOMAIN}'" | mail -s "Let's Encrypt Automation" ${ALERTEMAIL}

        else
            echo ""
            echo "Cannot access the pre-challenge '${URL}'"
            echo "Please add an alias to your webserver:"
            echo "'Alias /.well-known ${WEBROOT}/.well-known'"
            echo "Cannot access the pre-challenge '${URL}'" | mail -s "Let's Encrypt Automation" ${ALERTEMAIL}
        fi

        rm -rf "${WEBROOT}/${ACMEPATH}"
    else
        echo "Cert is not yet to expire"
    fi

    if [ ${DAYSEXP} -lt ${DAYSTOALERT} ]; then
        msg="Alert! The domain '${DOMAIN}' might have a certificate renewal problem. Please check it manually."

        # Send email if adress is configured
        if [ -n ${ALERTEMAIL} ]; then
            echo "${msg}" | mail -s "Let's Encrypt Automation" ${ALERTEMAIL}
        fi

        echo "${msg}"
    fi

    echo ""
}

ALLDOMAINS=`ls -1 /etc/letsencrypt/live`

for DOMAIN in ${ALLDOMAINS}; do
    checkAndRenew
done

# Reload Apache only if necessary
if [ "${NGINX_RELOAD}" = true ]; then
    echo "Reloading Nginx configuration"
    nginx -t && /etc/init.d/nginx reload
fi
 

Вложения

  • letsencrypt.zip
    4,5 KB · Просмотры: 7
Последнее редактирование:
Привет всем! На этапе установки никаких ошибок не возникает, устраивает и версия Php и компонентов. Но как только пытаюсь обновить систему до последней сыпется информация, что все не так, но при этом без указания, что именно. Хелп плиииз
d990c987f885.png
 
Привет всем! На этапе установки никаких ошибок не возникает, устраивает и версия Php и компонентов. Но как только пытаюсь обновить систему до последней сыпется информация, что все не так, но при этом без указания, что именно. Хелп плиииз
d990c987f885.png
Привет! Когда устанавливали, запускали из командной строки cron? Команда:
Код:
cd /var/www/magento2/bin
./magento cron:run

Или:

php /var/www/magento2/bin/magento cron:run
Путь к каталогу должен быть изменён на ваш.
В целом бы знать ваши шаги и метод установки.
 
Последнее редактирование:
Привет! Когда устанавливали, запускали из командной строки cron? Команда:
Код:
cd /var/www/magento2/bin
./magento cron:run

Или:

php /var/www/magento2/bin/magento cron:run
Путь к каталогу должен быть изменён на ваш.
В целом бы знать ваши шаги и метод установки.

Пробовал в двух вариантах, на голом сервере centos8+vestacp+php7 и на виртуальном хостинге. Результат одинаков.
Разархивировал дистр и установил через /setup/index.php

Ну насколько я вижу, cron не был настроен и запущен. В Magento 2 на данный момент запуск крона обязателен сразу после установки, а его запустить можно только из консоли (командной строки), то есть подключиться к серверу или хостингу с помощью Putty.
Если устанавливаете Magento 2 сразу с помощью только браузера, то шаги будут такие:
1. Установил через /setup/index.php
2. Проходите процедуру Для просмотра ссылки Войди или Зарегистрируйся. Это обязательно нужно сделать.
Стал пробовать на виртуальном хостинге, для первого варианта нет прав, а при втором выдает ошибку
php ./magento cron:run


Parse error: syntax error, unexpected '[', expecting ')' in /bin/magento on line 21
 
Последнее редактирование модератором:
Ребята, подскажите: как и когда обновляются URL-rewrites для товаров?
при создании товара, генерируются URL для всех отмеченных категорий, а если потом добавить еще категории, то новых урлов нет.
 
Привет, коллеги! Кто-нибудь знает где находятся стили демо-данных? Хочу вытащить less, который используется для оформления виджетов и статических блоков в демо-данных. Благодарю!
 
Привет, коллеги! Кто-нибудь знает где находятся стили демо-данных? Хочу вытащить less, который используется для оформления виджетов и статических блоков в демо-данных. Благодарю!
нет там less
Для просмотра ссылки Войди или Зарегистрируйся
 
Приветствую! Подскажите, пожалуйста, как можно сделать анимированный поиск как в админке, только для фронтенда?
По нажатию на иконку, выезжает окно поиска.

джаваскрипт + css
input поиска по умолчанию короткий и с прозрачной рамкой
анимируется с помощью transition

Код:
.search-global-input {
   transition: all 0.1s linear 0s, width 0.3s linear 0s;
   border: 1px solid transparent;
   width: 5rem;
}

при клике на кнопку контейнеру инпута .search-global-field присваивается класс _active (джаваскриптом)
на класс _active навешан стиль, меняющий ширину, рамку и тень инпута

Код:
.search-global-field._active .search-global-input {
     border-color: #007bdb;
     box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.5);
     width: 25rem;
}

Тема в принципе для раздела про верстку
А не знаете где код скрипта поиска из админ-панели вытащить? Чтобы такой же был, работает корректно и поиск закрывается при нажатии на другой области страницы. Просто думаю зачем изобретать велосипед, если это есть, но только в админке.
 
Последнее редактирование модератором:
Назад
Сверху