帮助 .. 重建应用失败

help … I did a ./launcher rebuild app today, as I have many times before.
got an error …
any ideas? looks like something is up with ruby libraries ?

I, [2018-04-04T07:06:26.498684 #16]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
LoadError: /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mini_racer-0.1.11/lib/mini_racer_extension.so: undefined symbol: _ZTIN2v811ArrayBuffer9AllocatorE - /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mini_racer-0.1.11/lib/mini_racer_extension.so
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:292:in `require'
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:292:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:258:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:292:in `require'
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mini_racer-0.1.11/lib/mini_racer.rb:2:in `<top (required)>'
/var/www/discourse/config/application.rb:22:in `<top (required)>'
/var/www/discourse/Rakefile:5:in `require'
/var/www/discourse/Rakefile:5:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/rake-12.1.0/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
(See full trace by running task with --trace)
I, [2018-04-04T07:06:34.391071 #16]  INFO -- :
I, [2018-04-04T07:06:34.391568 #16]  INFO -- : Terminating async processes
I, [2018-04-04T07:06:34.391658 #16]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/10/bin/postmaster -D /etc/postgresql/10/main pid: 47
I, [2018-04-04T07:06:34.391753 #16]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 163
2018-04-04 07:06:34.391 UTC [47] LOG:  received fast shutdown request
163:signal-handler (1522825594) Received SIGTERM scheduling shutdown...
2018-04-04 07:06:34.399 UTC [47] LOG:  aborting any active transactions
2018-04-04 07:06:34.403 UTC [47] LOG:  worker process: logical replication launcher (PID 56) exited with exit code 1
2018-04-04 07:06:34.404 UTC [51] LOG:  shutting down
163:M 04 Apr 07:06:34.427 # User requested shutdown...
163:M 04 Apr 07:06:34.427 * Saving the final RDB snapshot before exiting.
2018-04-04 07:06:34.478 UTC [47] LOG:  database system is shut down
163:M 04 Apr 07:06:34.479 * DB saved on disk
163:M 04 Apr 07:06:34.479 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 14253 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:108:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"bundle_exec", "cmd"=>["su discourse -c 'bundle install --deployment --verbose --without test --without development --retry 3 --jobs 4'", "su discourse -c 'bundle exec rake db:migrate'", "su discourse -c 'bundle exec rake assets:precompile'"]}
2f3c9493bf73510eacd5441b9b5a42b09def51babd56ee00a35941442da2cc5e
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one

Hey Paul,

Are you using any custom plugin?

我已禁用除基础项外的所有内容:

      - git clone https://github.com/discourse/docker_manager.git
        # - git clone https://github.com/davidtaylorhq/discourse-whos-online.git
      - git clone https://github.com/discourse/discourse-spoiler-alert.git
      - git clone https://github.com/discourse/discourse-cakeday.git
        #- git clone https://github.com/angusmcleod/discourse-events.git
        #- git clone https://github.com/angusmcleod/discourse-locations.git
        # - git clone https://github.com/discourse/discourse-tooltips.git
        # - git clone https://github.com/discourse/discourse-push-notifications.git
        # - git clone https://github.com/communiteq/discourse-sitemap.git

is there an installation log file? that might have more info?

@tgxworld … is this related ?
I did a git pull, rebuild, at the end the output told me to rebuild again to complete migration.
Now it won’t complete

LoadError: /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mini_racer-0.1.11/lib/mini_racer_extension.so: undefined symbol: _ZTIN2v811ArrayBuffer9AllocatorE - /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/mini_racer-0.1.11/lib/mini_racer_extension.so

Looks like an error in one of the javascript files.

Can you try disabling all the plugins and adding them back one by one?

1 个赞

@zogstrip including dockmanager?
I tried disabling everything except docker manager, cakeday, and spoiler (pretty basic stuff) and still the same error

Can you share the whole log? There might be something else going on here.

https://terminaladdict.com/discourse_failed_build.txt

1 个赞

Seems like you’re getting rate limited by rubygems. I would wait a few minutes and try again later.

1 个赞

@zogstrip … sorry, don’t understand :confused: … It’s my host, can I tune something ?

Can you also post your app.yml but do remove any sensitive fields before doing so.

There’s unfortunately nothing you can do except wait for the rate limit to be cleared.

root@companion-cube:/var/discourse $ cat containers/app.yml
## 这是一个独立的一体化 Discourse Docker 容器模板
##
## 修改此文件后,你必须重新构建
## /var/discourse/launcher rebuild app
##
## 编辑时请*非常*小心!
## YAML 文件对空白字符或缩进错误极其敏感!
## 如有需要,请访问 http://www.yamllint.com/ 验证此文件

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  # - "templates/web.ratelimited.template.yml"
  # - "templates/web.socketed.template.yml"
## 如果你希望添加 Lets Encrypt (https),请取消注释这两行
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"

## 此容器应暴露哪些 TCP/IP 端口?
## 如果你想让 Discourse 与另一个 Web 服务器(如 Apache 或 nginx)共享端口,
## 请参阅 https://meta.discourse.org/t/17247 了解详情
expose:
    - "10080:80"   # http
      #- "2222:22"   # http
    # - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## 将 db_shared_buffers 设置为总内存的最大 25%。
  ## 将基于检测到的 RAM 由引导程序自动设置,你也可以覆盖
  db_shared_buffers: "2048MB"

  ## 可改善排序性能,但会增加每个连接的内存使用量
  #db_work_mem: "40MB"

  ## 此容器应使用哪个 Git 修订版本?(默认:tests-passed)
  version: stable

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## 支持多少个并发 Web 请求?取决于内存和 CPU 核心数。
  ## 将基于检测到的 CPU 由引导程序自动设置,你也可以覆盖
  UNICORN_WORKERS: 4

  ## TODO: 此 Discourse 实例将响应的域名
  DISCOURSE_HOSTNAME: www.mcrides.co.nz

  ## 如果你希望容器以与上述相同的主机名(-h 选项)启动,请取消注释
  ## (默认值为 "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: 在首次注册时将被设为管理员和开发者的逗号分隔邮箱列表
  ## 示例:'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'paul@paulwillard.nz'

  ## TODO: 用于验证新账户和发送通知的 SMTP 邮件服务器
  DISCOURSE_SMTP_ADDRESS: 'smtp.address.com'
  DISCOURSE_SMTP_AUTHENTICATION: 'plain'
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: 'secretUser@address.co.nz'
  DISCOURSE_SMTP_PASSWORD: 'myPasswordIsNotThis'
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (可选,默认为 true)

  ## 如果你添加了 Lets Encrypt 模板,请取消注释以下行以获取免费 SSL 证书
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## 此 Discourse 实例的 CDN 地址(配置为拉取)
  ## 请参阅 https://meta.discourse.org/t/14857 了解详情
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## Docker 容器是无状态的;所有数据都存储在 /shared 中
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## 插件放在这里
## 请参阅 https://meta.discourse.org/t/19157 了解详情
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/davidtaylorhq/discourse-whos-online.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-cakeday.git
          - git clone https://github.com/angusmcleod/discourse-events.git
          - git clone https://github.com/angusmcleod/discourse-locations.git
          - git clone https://github.com/discourse/discourse-tooltips.git
          - git clone https://github.com/discourse/discourse-push-notifications.git
          - git clone https://github.com/communiteq/discourse-sitemap.git

## 构建后运行的任何自定义命令
run:
  - exec: echo "开始自定义命令"
  ## 如果你想为首次注册设置“发件人”电子邮件地址,请取消注释并修改:
  ## 收到首次注册邮件后,请重新注释该行。它只需运行一次。
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "结束自定义命令"

Ahh you’re on the stable branch…we might be missing a backport or smth.

2 个赞

@TerminalAddict Try rebuilding again :slight_smile:

I had to backport Update libv8 from 5.9 to 6.3 · discourse/discourse@c2ff0f1 · GitHub to stable

7 个赞

rebuilding now, looks good so far … will report back in 5 mins

@tgxworld … perfect !! thanks :heart:

4 个赞

2018-04-04 11:11:29.123 UTC [59] postgres@postgres ERROR: 数据库 "discourse" 已存在

摘要
2018-04-04 11:02:11.971 UTC [47] LOG: 正在监听 IPv4 地址 "0.0.0.0",端口 5432
2018-04-04 11:02:11.971 UTC [47] LOG: 正在监听 IPv6 地址 "::",端口 5432
2018-04-04 11:02:11.980 UTC [47] LOG: 正在监听 Unix 套接字 "/var/run/postgresql/.s.PGSQL.5432"
2018-04-04 11:02:12.018 UTC [50] LOG: 数据库系统在 2018-04-04 11:01:03 UTC 关闭
2018-04-04 11:02:12.034 UTC [47] LOG: 数据库系统已准备好接受连接
I, [2018-04-04T11:02:16.937951 #15]  INFO -- :
I, [2018-04-04T11:02:16.938359 #15]  INFO -- : > su postgres -c 'createdb discourse' || true
2018-04-04 11:02:17.014 UTC [60] postgres@postgres ERROR: 数据库 "discourse" 已存在
2018-04-04 11:02:17.014 UTC [60] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: 数据库创建失败:ERROR: 数据库 "discourse" 已存在
I, [2018-04-04T11:02:17.016859 #15]  INFO -- :
I, [2018-04-04T11:02:17.017184 #15]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2018-04-04 11:02:17.092 UTC [71] postgres@discourse ERROR: 角色 "discourse" 已存在
2018-04-04 11:02:17.092 UTC [71] postgres@discourse STATEMENT:  create user discourse;
ERROR: 角色 "discourse" 已存在
I, [2018-04-04T11:02:17.094738 #15]  INFO -- :

app.yml

摘要
## 这是 Discourse Docker 容器的全功能独立模板
##
## 修改此文件后,您必须重新构建
## /var/discourse/launcher rebuild app
##
## 编辑时请*非常*小心!
## YAML 文件对空白字符或缩进错误极其敏感!
## 必要时请访问 http://www.yamllint.com/ 验证此文件

templates:
 - "templates/cron.template.yml"
 - "templates/postgres.template.yml"
 - "templates/redis.template.yml"
 - "templates/sshd.template.yml"
 - "templates/web.template.yml"
# - "templates/web.ratelimited.template.yml"
## 如果您想添加 Lets Encrypt (https),请取消注释这两行
 - "templates/web.ssl.template.yml"
 ##- "templates/web.letsencrypt.ssl.template.yml"
 ##- "templates/web.socketed.template.yml"

## 此容器应暴露哪些 TCP/IP 端口?
## 如果您希望 Discourse 与另一个 Web 服务器(如 Apache 或 nginx)共享端口,
## 请参阅 https://meta.discourse.org/t/17247 了解详情
expose:
  - "25654:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.russian"

  ## 将 db_shared_buffers 设置为总内存的最大 25%。
  ## 将基于检测到的 RAM 由 bootstrap 自动设置,您也可以覆盖
  db_shared_buffers: "256MB"

  ## 可以提高排序性能,但会增加每个连接的内存使用量
  #db_work_mem: "40MB"

  ## 此容器应使用哪个 Git 版本?(默认:tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## 支持多少个并发 Web 请求?取决于内存和 CPU 核心数。
  ## 将基于检测到的 CPU 由 bootstrap 自动设置,您也可以覆盖
  UNICORN_WORKERS: 2

  ## TODO: 此 Discourse 实例将响应的域名
  DISCOURSE_HOSTNAME: toxu.ru

  ## 如果您希望容器以与上面指定的相同的主机名(-h 选项)启动,请取消注释
  ## (默认 "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: 初始注册时将设为管理员和开发人员的逗号分隔邮箱列表
  ## 示例 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: '***@yandex.ru,***@narod.ru'

  ## TODO: 用于验证新账户和发送通知的 SMTP 邮件服务器
  DISCOURSE_SMTP_ADDRESS: ***.ru
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: ***.ru
  DISCOURSE_SMTP_PASSWORD: ***
  ##DISCOURSE_SMTP_ENABLE_START_TLS: true           # (可选,默认为 true)

  ## 如果您添加了 Lets Encrypt 模板,请取消注释以下行以获取免费 SSL 证书
  ##LETSENCRYPT_ACCOUNT_EMAIL: ***

  ## 此 Discourse 实例的 CDN 地址(配置为拉取)
  ## 请参阅 https://meta.discourse.org/t/14857 了解详情
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## Docker 容器是无状态的;所有数据都存储在 /shared 中
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## 插件放在这里
## 请参阅 https://meta.discourse.org/t/19157 了解详情
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-no-bump.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-push-notifications.git
          - git clone https://github.com/communiteq/discourse-sitemap.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-cakeday.git

## 构建后运行的任何自定义命令
run:
  - exec: echo "自定义命令开始"
  ## 如果您想为首次注册设置“发件人”邮箱地址,请取消注释并修改:
  ## 收到首次注册邮件后,请重新注释该行。该行只需运行一次。
  ## - exec: rails r "SiteSetting.notification_email='***@yandex.ru'"
  - exec: echo "自定义命令结束"

那么,我需要删除 discourse 数据库吗?我不太明白。

root@bigtor:/var/discourse# ./launcher enter app
root@bigtor-app:/var/www/discourse# cd /shared/postgres_backup
root@bigtor-app:/shared/postgres_backup# sv stop unicorn
ok: down: unicorn: 0s, normally up
root@bigtor-app:/shared/postgres_backup# sudo -iu postgres dropdb discourse
root@bigtor-app:/shared/postgres_backup# sudo -iu postgres createdb discourse
root@bigtor-app:/shared/postgres_backup# sudo -iu postgres psql discourse < backup.db
bash: backup.db: 没有那个文件或目录

Can you provide us with the full log? Thank you

1 个赞