Is it possible, after tuning Discourse on local computer, to export all settings into file and upload them into production?
Thanks.
Is it possible, after tuning Discourse on local computer, to export all settings into file and upload them into production?
Thanks.
I guess probably you can export your settings from DB.
discourse=>\dt
...
...
public | single_sign_on_records | table | discourse
public | site_customizations | table | discourse
public | site_settings | table | discourse
public | stylesheet_cache | table | discourse
...
...
Notice site_settings table. You can also take this data from your backup. It already have a dump of your database inside it.
Then all you need to do is restore this table to your server from your local dump. ![]()
Courtesy of @blake we now have rake tasks to export/import site settings:
rake site_settings:export > settings.yml
rake site_settings:import < settings.yml
For those who do not have access to rake tasks, I also have contributed a settings uploader that uses the API: GitHub - pfaffman/discourse-settings-uploader: Install a Discourse settings JSON file to a site
Hello,
I’ve used discourse-settings-uploader to upload site_settings.json file from the GitHub Jay mentioned. I get this error when I run it:
./discourse-settings-uploader:39:in `<main>': undefined method `each' for nil:NilClass (NoMethodError)
line39: settings['site_settings'].each do |setting|
line40: jsetting (setting) unless setting['value'] == setting['default']
line41: end
I used an API key for “All Users” and used “system” when I ran discourse-settings-uploader.
Any thoughts?
На будущее, вот некоторые проблемы, с которыми я столкнулся при использовании discourse-settings-uploader, получая ошибки 301:
./discourse-settings-uploader community.mysite.com 22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b system site-settings.json
SiteSettingtitle="Mysite"
E! 301 Moved Permanently
Я получал эту ошибку для каждой настройки. Однако я мог успешно заходить на сайт по этим URL. Так что я понял — запросы идут через http, а он отключён.
Тогда я добавил https к имени сайта и получил другую ошибку:
SiteSettingtitle="My sIte"
E! SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
something's wrong with https://community.mysite.com/admin/site_settings/title {"title"=>"Mysite", :api_key=>"22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b ec6d3b", :api_username=>"system"}
Похоже, это проблема с некорректной локальной конфигурацией корневых сертификатов. Я мог бы потратить на это целый день, но вместо этого я просто отключил verify_ssl. Это крайне небезопасно, и вас и ваших детей, и детей ваших детей ждут ужасные последствия, но в данном случае мне было всё равно.
Так что в скрипте загрузчика я добавил этот метод:
def put_no_ssl(url, payload, headers={}, &block)
RestClient::Request.execute(method: :put, url: url, :payload => payload, headers: headers, verify_ssl: false, &block)
end
А ниже заменил вызов
r = RestClient.put(url, my_hash)
на
r = put_no_ssl(url, my_hash)
И всё заработало! ![]()
:крик: :семья_муж_жен_дев_маль:
Привет, сообщество!
Мне нужно экспортировать настройки сайта с продакшн-окружения на стейджинг. Я нашел инструкцию Discourse-Settings Uploader, создал JSON-файл с настройками, но не могу его импортировать. Не знаю, где выполнить эту команду:
./discourse-settings-uploader HOSTURL API_KEY API_USER SETTINGS_FILE
Нужно ли это делать через терминал? Мой клиент сказал, что у них используется сообщество Discourse, и у них нет доступа к терминалу. Что это значит? Как лучше решить мою проблему? Я довольно новичок в этом, поэтому мне нужна ваша помощь.
Заранее спасибо.
Посмотрите здесь: Backup only Site Settings - #5 by pfaffman. Вам нужно скачать скрипт с GitHub и установить Ruby.
rake site_settings:import < settings.yml
Просто хотел упомянуть версию этой команды для Docker:
d/rake "site_settings:import < settings.yml"
на случай, если вы получите ошибку:
The input device is not a TTY
Привет, @pfaffman
Я попробовал сделать ровно так, как указано: ./discourse-settings-uploader https://discourse.example.com d35989078a system site_settings.json
Но мой скрипт завершается с ошибкой, и я не понимаю, почему и как именно.
Для каждого параметра возвращается E! 404 Not Found.
Я удалил ваш скриншот, так как он содержит ваш API-ключ. Вы можете добавить другой скриншот, в котором нет чувствительных данных или они скрыты. Также вам следует сменить ключ, так как, будучи публичным, он считается скомпрометированным.
Спасибо за немедленный ответ. С этого момента я буду следить за такими практиками.
Если вы получаете ошибку 404, значит ваш API-ключ указан неверно или скрипт не может его найти.
Я проверил это. Все мои API работают с одним и тем же ключом.
Я уверен, что скрипт обращается в правильное место, так как в логах есть URL-адреса вида:
{url}/admin/site_settings/title
{url}/admin/site_settings/site_description
Я загрузил файл site_settings.json с одного сайта и теперь пытаюсь применить эти настройки к существующему сайту2. Нужно ли мне внести какие-либо изменения в загруженный файл site_settings.json?
Странно. Извините, но это мой лучший бесплатный ответ. Вы можете написать мне, если у вас есть бюджет.
Если вы самостоятельно размещены на обоих сайтах, можно попробовать задачу rake.
Я сам в последнее время не использую этот скрипт. Возможно, что-то изменилось в Discourse, но я сомневаюсь. Если вы уверены, что используете ключ API для сайта, в который пытаетесь записать данные, то у меня нет предположений.
Я попробовал использовать rake site_settings:export > settings.yml. Я заметил, что теги и группы тегов, которые я настроил на своём сервере Discourse, не были экспортированы. Почему так произошло?
Теги — это теги, а не настройки сайта. Мне не известно способа миграции тегов.
Есть ли способ также экспортировать настройки для плагинов компонентов темы?