Как обновиться до последней версии? Доступно ли какое-либо руководство по обновлению?
Меня также интересует дополнительная информация о том, как выполнить обновление с 0.12.0 до 0.13.1.
Мне просто запустить sudo luarocks install lua-resty-auto-ssl
или это сотрет мои текущие настройки/настройки 0.12.0?
Или безопаснее обновить обезвоженный файл, как предоставил @ronaldgetz ?
ТИА.
я сделал обновление с 12 до 13.1, это так же просто, как sudo luarocks install lua-resty-auto-ssl
и перезапуск openresty с помощью sudo systemctl restart openresty
:)
Спасибо @aviatrix! Итак, просто чтобы подтвердить, что он не перезаписал ваши конфигурации nginx или что-то в этом роде? У меня много чего происходит в моей.
Я только что протестировал выпуск нового домена и не столкнулся с какими-либо ошибками, поэтому я не совсем понимаю, что это исправляет и влияет ли это на меня? Но я думаю, что я должен обновить в любом случае...
@bryanus всегда делает резервные копии, прежде чем что-либо делать! Я усвоил это на собственном горьком опыте.
Если у вас есть конфиги, держите их в системе контроля версий в приватном репозитории и заранее копируйте папку conf на всякий случай.
Это обновление ( 13.1) устраняет устаревший протокол ACME v1 компанией Let's Encrypt путем обновления зависимости Dehydrated
, которая используется для связи с серверами Let's Encrypt. Если вы не обновитесь, вы не сможете получить новые сертификаты примерно через месяц.
Спасибо @aviatrix! Я попробую и отчитаюсь здесь.
Угу. Выполнил команду upgrade/install, и она сразу сломала мою установку после перезапуска openresty:
2019/11/08 21:06:23 [error] 2973#2973: *113 [lua] ssl_certificate.lua:310: ssl_certificate(): auto-ssl: failed to run do_ssl: /usr/local/openresty/luajit/share/lua/5.1/shell-games.lua:233: bad argument #1 (table expected, got string), context: ssl_certificate_by_lua*, client: 103.3.244.23, server: 0.0.0.0:443
К счастью, это было на промежуточном сервере, поэтому я сейчас пытаюсь устранить эту ошибку. Есть идеи @aviatrix? Интересно, могу ли я просто исправить изменения в строке и посмотреть, будет ли это работать.
Обновление: на данный момент я просто отредактировал обезвоженный файл непосредственно с помощью патча @ronaldgetz , и после перезапуска openresty все работает. Возможно, придется задержать меня, пока я пытаюсь выяснить ошибку, которую я получил при полном обновлении. Надеюсь, патч "достаточно хорош"?
@bryanus Возможно, вы используете пользовательскую функцию для белого списка доменов? Эта пользовательская функция может быть проблемой, поскольку последний выпуск lua-resty-auto-ssl использует другой способ передачи аргументов оболочки (например, если вы вызываете команду cat для загрузки пользовательского текстового файла в качестве белого списка). Аргументы оболочки теперь должны быть таблицей, а не строкой. Просто предположение из ниоткуда, потому что я видел эту проблему и в одном развертывании.
@andreasschroth Вау! Это именно то, что я делаю! Я вношу домены в белый список из вечного текстового файла в своем конфиге:
````
init_by_lua_block {
auto_ssl = (требуется "resty.auto-ssl").new()
auto_ ssl:set ("allow_domain", функция(домен)
-- reading from domains.txt and in testing
local shell_execute = require "resty.auto-ssl.utils.shell_execute"
local ngx_re = require "ngx.re"
local status, output, err = shell_execute("cat /home/user/domains.txt")
if err then
ngx.log(ngx.ERR, "allow_domain cat error: ", err)
else
local domains = ngx_re.split(output, "\n")
for _, d in ipairs(domains) do
if (domain == d) then
return true
end
end
end
return false
end)
auto_ssl:set("renew_check_interval", 43200)
auto_ssl:init()
}
````
Вы делали то же самое? Я немного запутался в том, как структурировать мои команды оболочки для передачи в виде таблицы. Мне придется больше копаться в документации по этому вопросу. Как вы решили свою? Большое спасибо за этот совет!
@bryanus Пожалуйста, попробуйте этот код:
init_by_lua_block {
auto_ssl = (require "resty.auto-ssl").new()
auto_ssl:set("allow_domain", function(domain)
-- reading from domains.txt and in testing
local shell_execute = require "resty.auto-ssl.utils.shell_execute"
local ngx_re = require "ngx.re"
local result, err = shell_execute({"cat", "/home/user/domains.txt"})
if err then
ngx.log(ngx.ERR, "allow_domain cat error: ", err)
else
local domains = ngx_re.split(result["output"], "\n")
for _, d in ipairs(domains) do
if (domain == d) then
return true
end
end
end
return false
end)
auto_ssl:set("renew_check_interval", 43200)
auto_ssl:init()
}
Объяснение:
Коммит https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 реализовал новую версию https://github.com/GUI/lua-shell-games для lua-resty-auto-ssl здесь.
Подводя итог, изменился API функции shell_execute()
(параметры, а также возвращаемые значения).
Лично я считаю отладку кода Lua в Nginx настоящим кошмаром. Может быть, когда-нибудь станет легче.
Спасибо @andreasschroth. Я просматривал синтаксис модуля lua-resty-shell и понял, что это не может быть так просто. Спасибо, что нашли время, чтобы помочь мне. Попробую (скорее всего завтра) и отчитаюсь!
Оно работает! Спасибо за вашу помощь @andreasschroth. Я не знал, что вы также изменили мой условный вывод; более вовлеченным, чем я сначала думал. Да, отладка Lua в конфигах nginx болезненна, но не так уж и плоха с отличной помощью! Ваше здоровье! ;-)
Самый полезный комментарий
@bryanus Пожалуйста, попробуйте этот код:
Объяснение:
Коммит https://github.com/GUI/lua-resty-auto-ssl/commit/59758847b44981edfaf484d3a981deea82409332 реализовал новую версию https://github.com/GUI/lua-shell-games для lua-resty-auto-ssl здесь.
Подводя итог, изменился API функции
shell_execute()
(параметры, а также возвращаемые значения).Лично я считаю отладку кода Lua в Nginx настоящим кошмаром. Может быть, когда-нибудь станет легче.