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?
Para referencia futura, algunos problemas que tuve al usar discourse-settings-uploader y obtuve errores 301:
./discourse-settings-uploader community.mysite.com 22f7d44321ae2365d3e3a5e9224524ba0e7302bd75ed06bfbh31ed5090ec6d3b system site-settings.json
SiteSettingtitle="Mysite"
E! 301 Moved Permanently
Recibí este error una vez por cada configuración. Pero pude navegar por el sitio correctamente en esas URL. Así que deduje que estaba pasando por http, y eso está deshabilitado.
Así que ahora agregué https al nombre de mi sitio y obtuve un error diferente:
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"}
Esto se reduce a una configuración local deficiente de certificados raíz, al parecer. Podría perder una tarde en esto, pero en su lugar desactivé verify_ssl. Es muy inseguro y cosas horribles le sucederán a ti, a tus hijos y a los hijos de tus hijos, pero en este caso simplemente no me importó.
Así que en el script del cargador agregué este método:
def put_no_ssl(url, payload, headers={}, &block)
RestClient::Request.execute(method: :put, url: url, :payload => payload, headers: headers, verify_ssl: false, &block)
end
Y abajo, cambié la llamada de:
r = RestClient.put(url, my_hash)
a:
r = put_no_ssl(url, my_hash)
¡Y funcionó! ![]()
![]()
Hola comunidad,
Necesito exportar la configuración del sitio desde el entorno de producción al de staging. Encontré esta instrucción: Discourse-Settings Uploader, creé un archivo JSON con las configuraciones, pero no tengo la posibilidad de importarlo. No sé dónde puedo ejecutar este comando:
./discourse-settings-uploader HOSTURL API_KEY API_USER SETTINGS_FILE
¿Debería hacerse a través de la terminal? Mi cliente me dijo que utilizan una comunidad Discourse y no tienen acceso a la terminal. ¿Qué significa eso? ¿Cuál es la mejor manera de resolver mi problema? Soy bastante nuevo en esto, así que necesito su ayuda.
Gracias de antemano.
Echa un vistazo a Backup only Site Settings - #5 by pfaffman. Necesitas descargar el script de GitHub e instalar Ruby.
rake site_settings:import < settings.yml
Solo quería mencionar la versión de Docker de este comando:
d/rake "site_settings:import < settings.yml"
en caso de que obtengas:
El dispositivo de entrada no es un TTY
Hola @pfaffman
Lo intenté exactamente como se indicó… ./discourse-settings-uploader https://discourse.example.com d35989078a system site_settings.json
Pero mi script falla y no estoy seguro de por qué ni cómo.
Muestra E! 404 Not Found para cada configuración.
He eliminado tu captura de pantalla ya que incluye tu clave API. Si lo deseas, puedes añadir otra captura que no contenga (o que oculte) los datos sensibles. También deberías rotar la clave, ya que al haber sido pública, debe considerarse comprometida.
Gracias por la respuesta inmediata. A partir de ahora me encargaré de dichas prácticas.
Si estás recibiendo un error 404, es posible que tu clave API sea incorrecta o que no se encuentre en el lugar donde el script puede localizarla.
He verificado esto. Y todas mis APIs están funcionando con la misma clave.
Estoy seguro de que el script está buscando en el lugar correcto, ya que la declaración de registro muestra URLs como:
{url}/admin/site_settings/title
{url}/admin/site_settings/site_description
He descargado site_settings.json de un sitio y ahora estoy intentando cargar la configuración en un sitio2 existente. ¿Debo realizar alguna edición en el archivo site_settings.json que descargué?
Eso es extraño. Lo siento, pero esa es mi mejor respuesta gratuita. Puedes enviarme un mensaje si tienes un presupuesto.
Hay una tarea de rake que puedes probar si estás autoalojado en ambos sitios.
Yo no uso ese script en estos días. Podría ser que algo en Discourse haya cambiado, pero lo dudo. Si estás seguro de que estás usando la clave de API del sitio al que intentas escribir, entonces no tengo ninguna idea.
Intenté usar rake site_settings:export > settings.yml. Noté que las etiquetas y los grupos de etiquetas que configuré en mi servidor de Discourse no se exportaron. ¿Por qué ocurre eso?
Las etiquetas son etiquetas, no configuraciones del sitio. No tengo conocimiento de ninguna forma de migrar etiquetas.
¿Hay alguna forma de también exportar la configuración de plugins componentes de tema?