Ayuda con la conversión de SMF2 y Rake a S3

Busqué, pero no puedo encontrar una visión general básica sobre cómo mover nuestras cargas de DigitalOcean a S3. Configuré S3 correctamente para las nuevas cargas y nuestras copias de seguridad hace unos meses. Me gustaría completar la migración de nuestras cargas (~1.4 GB) a S3.

Esto fue una conversión desde SMF2 desde el principio. Ahora tenemos dos carpetas de cargas: una en la raíz de smf2 y otra en /var/discourse. El directorio SMF2 tiene 2.8 GB. Supongo que podría haber dos pasos aquí. ¿Necesito realizar pasos separados para mover desde el directorio SMF2 y desde el directorio /var/discourse?

Encontré rake to s3, pero no puedo encontrar una guía más allá de un montón de personas hablando sobre los errores que encontraron y sugerencias para corregirlos. ¿Existe alguna guía?

Por favor, lee este artículo; debería guiarte sobre cómo configurar la tarea.

Debes revisar la parte de configuración de la sección hooks y configurar el bucket mediante variables de entorno para evitar los problemas de los que ya has leído.

2 Me gusta

¡Eso es genial! ¡Gracias!

Lo único de lo que no tengo conocimiento es un CDN. Veo que podemos usar Amazon CloudFront. Supongo que no se configuró al realizar los pasos anteriores de configuración de S3. Buscaré una guía sobre cómo configurarlo.

Puedes configurar CloudFront usando tu bucket de cargas como origen y, una vez que esté listo, puedes configurarlo como enlace CDN de S3. Eso es todo lo que hay que hacer.

2 Me gusta

Gracias. Seguí este video para configurar Cloudfront:

Ahora estoy ejecutando rake posts:rebake. Son 84k publicaciones, así que tomará algún tiempo.

¡Vaya!.. Intentando reiniciarlo de nuevo…

root@discourse-app:/var/www/discourse# rake posts:rebake
Recocinando el markdown de las publicaciones para ‘default’
10027 / 83358 ( 12.0%)/usr/local/bin/rake: línea 2: 959 Terminado RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Acaba de volver a ocurrir… ¿Alguna sugerencia?

root@discourse-app:/var/www/discourse# rake posts:rebake
Rebaking post markdown for ‘default’
12901 / 83359 ( 15.5%)/usr/local/bin/rake: line 2: 2569 Killed RAILS_ENV=production sudo -H -E -u discourse bundle exec bin/rake “$@”

Algunos posts ahora están obteniendo contenido de Cloudfront, así que al menos eso funciona de alguna manera.

Parece que esto está ocurriendo sin que yo haya hecho un rebake. Sidekiq está trabajando arduamente para extraer imágenes con hotlink.

OK, el sitio ha sido reconstruido y se han seguido los pasos de configuración de S3.

Ahora todo debería cargarse desde S3. Entonces, ¿cómo lo verifico? ¿Puedo eliminar el directorio de subidas antiguo en mi droplet para liberar espacio?

Claramente hice algo mal. Ahora estoy usando más espacio en el disco que antes.

La carga a S3 debe ocurrir durante la reconstrucción. Deberías poder navegar por los activos del sitio en los buckets de S3 y todos los activos del sitio deben cargarse desde el enlace de S3 o CDN proporcionado. Si no funciona, definitivamente hay algo mal en la forma en que lo configuraste. ¿Estás recibiendo algún error?

Sospecho que entonces algo pudo haber salido mal. Mi reconstrucción no duró lo suficiente como para que se subieran varios GB de datos durante el proceso.

EDIT:
Todas las subidas hasta hace varios meses ya se realizaban a S3. Lo que quiero mover es lo antiguo, anterior al cambio a S3.

Tenga en cuenta que los servidores son órdenes de magnitud más rápidos que su conexión de banda ancha. No debería tomarles más de un par de minutos cargar las imágenes desde su servidor a S3. Sin embargo, debe revisar cuidadosamente el registro de reconstrucción para confirmar si se realizaron las cargas o no.

Alternativamente, puede ejecutar ./discourse-doctor para generar un registro para su revisión.

Aquí está la salida del script:

Lo único que noto está marcado en negrita en la sección de DNS.

> root@discourse:/var/discourse# ./discourse-doctor
> DISCOURSE DOCTOR Thu May 14 11:35:17 UTC 2020
> OS: Linux discourse 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
> 
> 
> Found containers/app.yml
> 
> ==================== YML SETTINGS ====================
> DISCOURSE_HOSTNAME=
> SMTP_ADDRESS=
> DEVELOPER_EMAILS=
> SMTP_PASSWORD=
> SMTP_PORT=
> SMTP_USER_NAME=
> LETSENCRYPT_ACCOUNT_EMAIL=
> 
> ==================== DOCKER INFO ====================
> DOCKER VERSION: Docker version 18.09.6, build 481bc77
> 
> DOCKER PROCESSES (docker ps -a)
> 
> CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                      NAMES
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> db900fc77ebe        local_discourse/app   "/sbin/boot"        15 hours ago        Up 15 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   app
> 
> Discourse container app is running
> 
> 
> ==================== PLUGINS ====================
>             exec: {cd: $home/plugins, cmd: ['git clone https://github.com/discourse/docker_manager.git', 'git clone https://github.com/procourse/procourse-static-pages.git', 'git clone https://github.com/discourse/discourse-bbcode.git', 'git clone https://github.com/discourse/discourse-adplugin.git']}
> 
> No non-official plugins detected.
> 
> See https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb for the official list.
> 
> ========================================
> Discourse version at : NOT FOUND
> Discourse version at localhost: Discourse 2.5.0.beta4
**> ==================== DNS PROBLEM ====================**
**> This server reports Discourse 2.5.0.beta4 , but  reports NOT FOUND.**
**> This suggests that you have a DNS problem or that an intermediate proxy is to blame.**
**> If you are using Cloudflare, or a CDN, it may be improperly configured.**
> 
> 
> ==================== MEMORY INFORMATION ====================
> RAM (MB): 1008
> 
>               total        used        free      shared  buff/cache   available
> Mem:            985         636          69         121         279          88
> Swap:          2047         775        1272
> 
> ==================== DISK SPACE CHECK ====================
> ---------- OS Disk Space ----------
> Filesystem      Size  Used Avail Use% Mounted on
> /dev/vda1        25G   20G  4.8G  81% /
> 
> ---------- Container Disk Space ----------
> Filesystem      Size  Used Avail Use% Mounted on
> overlay          25G   20G  4.8G  81% /
> /dev/vda1        25G   20G  4.8G  81% /shared
> /dev/vda1        25G   20G  4.8G  81% /var/log
> 
> ==================== DISK INFORMATION ====================
> Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: gpt
> Disk identifier: 02CBFCD2-7495-4A08-A11B-28E7D3872FAA
> 
> Device      Start      End  Sectors  Size Type
> /dev/vda1  227328 52428766 52201439 24.9G Linux filesystem
> /dev/vda14   2048    10239     8192    4M BIOS boot
> /dev/vda15  10240   227327   217088  106M Microsoft basic data
> 
> Partition table entries are not in disk order.
> 
> ==================== END DISK INFORMATION ====================
> 
> ==================== MAIL TEST ====================
> For a robust test, get an address from http://www.mail-tester.com/
> Or just send a test message to yourself.
> Email address for mail test? ('n' to skip) []: n
> Mail test skipped.
> Replacing: SMTP_PASSWORD
> Replacing: LETSENCRYPT_ACCOUNT_EMAIL
> Replacing: DEVELOPER_EMAILS
> Replacing: DISCOURSE_DB_PASSWORD
> Replacing: Sending mail to
> 
> ==================== DONE! ====================
> Would you like to serve a publicly available version of this file? (Y/n)n
> root@discourse:/var/discourse#

Aquí está la sección de app.yml:

> 
>     DISCOURSE_USE_S3: true
>     DISCOURSE_S3_REGION: us-east-1
>     DISCOURSE_S3_ACCESS_KEY_ID: <MY KEY>
>     DISCOURSE_S3_SECRET_ACCESS_KEY: <MY SECRET KEY>
>     DISCOURSE_S3_CDN_URL: 'https://d2hneyr8lp58j4.cloudfront.net'
>     DISCOURSE_S3_BUCKET: brcuploads
>     DISCOURSE_S3_BACKUP_BUCKET: bcruploads-backups
>     DISCOURSE_BACKUP_LOCATION: s3

¿Esto me indica que tengo configurado mal el DNS en DigitalOcean? Añadí el CNAME desde Cloudfront.

¡Vaya, esto no ha sido de ayuda. Elegiste n para

¿Puedes generar una versión públicamente accesible? Puedes compartir el enlace por mensaje directo; tal vez pueda verificar si la migración a S3 funcionó o falló por alguna razón.

Te enviaré la URL por mensaje directo.

1 me gusta