преобразует предварительно скомпилированные ресурсы в public / pack, не обслуживаемые в производстве на экземпляре ec2 - PullRequest
0 голосов
/ 25 марта 2020

Я развертываю приложение rails 6 с webpacker на экземпляре AWS ec2 с Nginx, используя Capistrano. В первый раз, когда я развернул приложение в рабочей среде, я сделал это без предварительной компиляции ресурсов, занял слишком много времени и, наконец, работал. Но по мере того, как мое приложение увеличивалось в размере со многими css, js и другими ресурсами для компиляции, я продолжал прекомпилировать локально, используя RAILS_ENV=production bundle exec rails assets:precompile. Затем я развернул в производство с SKIP_ASSETS=1 cap production deploy, где SKIP_ASSETS - это грабли в папке capistrano / task. Мне удалось быстрее развернуть приложение без компиляции ресурсов на производственном сервере. Когда я обновляю sh браузер, я вижу свое приложение, но ресурсы, предварительно скомпилированные в папке public / packs, не обслуживаются (файлы ha sh. css и. js не соответствуют этому в public / packs.

Я получаю следующую ошибку, когда смотрю на консоль браузера

GET https://somedomain.net/packs/css/application-e1eaaa01.css net::ERR_ABORTED 404 (Not Found)
GET https://somedomain.net/packs/js/application-a89fd481878017456cf7.js net::ERR_ABORTED 404 (Not Found)

Это то, что я вижу в производстве в public / packs / css /

application-91e4cb67.css  application-91e4cb67.css.br  application-91e4cb67.css.gz

Глядя на производство журнала, я нашел это

FATAL -- : [2c61c3a9-0133-4eda-b37b-4fefe8948ec0]   
[2c61c3a9-0133-4eda-b37b-4fefe8948ec0] ActionController::RoutingError (No route matches [GET] "/packs/js/application-a89fd481878017456cf7.js"):

Глядя на nginx .conf У меня есть эта строка

root /home/deploy/myapp/current/public

Я также пытался установить это в production.rb но это не решило проблему

config.public_file_server.enabled=true

public / packs / manifest. json выглядит так:

{
  "admin.js": "/packs/js/admin-3adbcf597c3892508a80.js",
  "admin.js.map": "/packs/js/admin-3adbcf597c3892508a80.js.map",
  "app.js": "/packs/js/app-aedc421c2c4342e69b23.js",
  "app.js.map": "/packs/js/app-aedc421c2c4342e69b23.js.map",
  "application.css": "/packs/css/application-e1eaaa01.css",
  "application.css.map": "/packs/css/application-e1eaaa01.css.map",
  "application.js": "/packs/js/application-a89fd481878017456cf7.js",
  "application.js.map": "/packs/js/application-a89fd481878017456cf7.js.map",
  "curriculum.js": "/packs/js/curriculum-90932b11d8e738537011.js",
  "curriculum.js.map": "/packs/js/curriculum-90932b11d8e738537011.js.map",
  "entrypoints": {
    "admin": {
      "js": [
        "/packs/js/admin-3adbcf597c3892508a80.js"
      ],
      "js.map": [
        "/packs/js/admin-3adbcf597c3892508a80.js.map"
      ]
    },
    "app": {
      "js": [
        "/packs/js/app-aedc421c2c4342e69b23.js"
      ],
      "js.map": [
        "/packs/js/app-aedc421c2c4342e69b23.js.map"
      ]
    },
    "application": {
      "css": [
        "/packs/css/application-e1eaaa01.css"
      ],
      "js": [
        "/packs/js/application-a89fd481878017456cf7.js"
      ],
      "css.map": [
        "/packs/css/application-e1eaaa01.css.map"
      ],
      "js.map": [
        "/packs/js/application-a89fd481878017456cf7.js.map"
      ]
    },
    "curriculum": {
      "js": [
        "/packs/js/curriculum-90932b11d8e738537011.js"
      ],
      "js.map": [
        "/packs/js/curriculum-90932b11d8e738537011.js.map"
      ]
    },
    "jquery-ui": {
      "js": [
        "/packs/js/jquery-ui-3e39ba39480cd149114d.js"
      ],
      "js.map": [
        "/packs/js/jquery-ui-3e39ba39480cd149114d.js.map"
      ]
    },
    "jquery": {
      "js": [
        "/packs/js/jquery-9e6aaa895e0224ac507d.js"
      ],
      "js.map": [
        "/packs/js/jquery-9e6aaa895e0224ac507d.js.map"
      ]
    },
    "quill_editor": {
      "js": [
        "/packs/js/quill_editor-9b402f092ddc5d16a887.js"
      ],
      "js.map": [
        "/packs/js/quill_editor-9b402f092ddc5d16a887.js.map"
      ]
    },
    "shared_javascript": {
      "js": [
        "/packs/js/shared_javascript-f0cae6e551b8cfc573c9.js"
      ],
      "js.map": [
        "/packs/js/shared_javascript-f0cae6e551b8cfc573c9.js.map"
      ]
    },
    "video_player": {
      "js": [
        "/packs/js/video_player-8b5df237b6fc7da9efea.js"
      ],
      "js.map": [
        "/packs/js/video_player-8b5df237b6fc7da9efea.js.map"
      ]
    }
  },
  "jquery-ui.js": "/packs/js/jquery-ui-3e39ba39480cd149114d.js",
  "jquery-ui.js.map": "/packs/js/jquery-ui-3e39ba39480cd149114d.js.map",
  "jquery.js": "/packs/js/jquery-9e6aaa895e0224ac507d.js",
  "jquery.js.map": "/packs/js/jquery-9e6aaa895e0224ac507d.js.map",
  "quill_editor.js": "/packs/js/quill_editor-9b402f092ddc5d16a887.js",
  "quill_editor.js.map": "/packs/js/quill_editor-9b402f092ddc5d16a887.js.map",
  "shared_javascript.js": "/packs/js/shared_javascript-f0cae6e551b8cfc573c9.js",
  "shared_javascript.js.map": "/packs/js/shared_javascript-f0cae6e551b8cfc573c9.js.map",
  "video_player.js": "/packs/js/video_player-8b5df237b6fc7da9efea.js",
  "video_player.js.map": "/packs/js/video_player-8b5df237b6fc7da9efea.js.map"
}

Я чувствую, что манифест не обновлен с новой предварительно скомпилированной. css и. js хэшей ресурсов.

Любая идея, как я могу решить эту проблему на производстве? Нужно ли мне запускать указанную команду c webpacker на производстве, чтобы решить эта проблема. Спасибо

1 Ответ

0 голосов
/ 05 апреля 2020

После нескольких часов поиска и задавания вопросов в других местах и ​​экспериментов, я наконец-то нашел решение, которое было радикальным, но сработало для меня: я удалил папки current и releases на моем сервере, затем запустил ресурсы: clean, assets: clobber на моем локальном компьютере, затем установите config.assets.compile = false в environement/production.rb, изменил путь_отвода с packs на public/assets в webpacker.yml. Затем я снова скомпилировал локально, а затем развернул. Я пропустил сборку ресурсов на сервере, и она работает!

...