1.3.5 から 1.4.8 へのデータ移行
Closed this issue · 34 comments
Enju Leaf 1.3.5 を 1.3.6 にアップグレードしたところ起動しなくなったため、1.3.6 での運用は断念し、Docker版の Enju Leaf 1.4.x に移行することにしました。
基本的にインストール方法に従いますが、データベースについては新規作成するわけにはいかないため、ホストマシンの PostgreSQL に移行したデータベースを使います。データベース名は、これまでの enju_leaf_13_production
から、1.4以降の標準的な命名に従い enju_leaf_production
に変更してあります。
さて、インストール方法によれば、
データベースを作成し、初期データを投入します。 1.4系では以下のコマンドを実行してください。
$ docker compose up -d
$ docker compose run --rm web bin/rake db:create
$ docker compose run --rm web bin/rake db:migrate
$ docker compose run --rm web bin/rake db:seed
とありますが、これは新規のデータベース作成を前提としているように思います。
私のように、1.3.5 で蓄積した大量のデータを移行して 1.4.x で使いたい場合、どのようにすればよいかご教示ください。よろしくお願いいたします。
@miyatatk アップデート手順は以下にあります。
https://github.com/next-l/enju_leaf/wiki/Update-to-1.4
まず、PostgreSQLのバックアップを取得する必要があります。
pg_dump -h localhost enju_leaf_13_production > enju_leaf_13_production_dump.sql
ただし、1.4系のdocker-compose.ymlで指定しているPostgreSQLは13のため、現在お使いのPostgreSQLのバージョンが14以降の場合、コンテナの設定を上書きする必要があります。docker-compose.override.ymlを用意し、
cp docker-compose.override.example.yml docker-compose.override.yml
PostgreSQLの設定を追記してください。
services:
# 中略
# 以下の2行を追記
postgres:
image: postgres:15 # お使いのバージョンを指定
上記は最新の1.4系のソースコードを取得して実行してください。
cd enju_leaf
git pull
@nabeta お返事ありがとうございます。現在、コンテナ作成前の初期設定を行っているところです。
1つ教えてください。
- enju_nii: CiNii Booksからの書誌データインポート機能
- enju_loc: アメリカ議会図書館からの書誌データインポート機能
上記2つの機能を追加するため、1.3.5 では Gemfile への追記を行っていました。
# Gemfile
gem 'enju_nii', '~> 0.3.2'
gem 'enju_loc', '~> 0.3.1'
1.4.7 の Gemfile を見るとEnju関連の記載がないようですが、上記モジュールの追加はどこで定義したらよいでしょうか。
@nabeta docker-compose.yml
の中でDockerイメージuclalibrary/cantaloupe:5.0.6-4
を使用していますが、私のホストマシンのハードウェアプラットフォームはlinux/arm64
のため、プラットフォーム不一致でエラーが出ます。
linux/arm64
に対応した代替イメージはありますでしょうか。islandora/cantaloupe
はlinux/arm64
に対応していますが、バージョン番号が3.xとあります。
あるいは、下記のように https://github.com/medusa-project/cantaloupe/releases/download/v5.0.6/Cantaloupe-5.0.6.zip からダウンロードする方法もあるようですが、docker compose
でうまくインストールできません。
良い解決方法があればご教示ください。
# Dockerfile.cantaloupe
FROM openjdk:11-jre-slim AS cantaloupe
RUN apt-get update && apt-get install -y \
curl \
unzip \
&& rm -rf /var/lib/apt/lists/*
ARG UID=1000
ARG GID=1000
USER ${UID}
RUN curl -L -o /tmp/cantaloupe.zip https://github.com/medusa-project/cantaloupe/releases/download/v5.0.6/Cantaloupe-5.0.6.zip && \
unzip /tmp/cantaloupe.zip -d /opt && \
chown -R ${UID}:${GID} /opt/Cantaloupe-5.0.6 && \
rm /tmp/cantaloupe.zip
ENV CANTALOUPE_HOME /opt/Cantaloupe-5.0.6
ENV PATH $CANTALOUPE_HOME:$PATH
EXPOSE 8182
CMD ["cantaloupe"]
# docker-compose.yml
services:
cantaloupe:
platform: linux/arm64
# image: uclalibrary/cantaloupe:5.0.6-4
build:
context: .
dockerfile: ./Dockerfile.cantaloupe
expose:
- 8182
restart: always
environment:
no_proxy: localhost,web
SOURCE_STATIC: HttpSource
HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_PREFIX: http://web:3000/picture_files/
HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_SUFFIX: '.download?size=original'
ENDPOINT_API_ENABLED: 'true'
BASE_URI: ${CANTALOUPE_BASE_URI}
networks:
internal:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8182/health"]
interval: 30s
timeout: 20s
retries: 3
@miyatatk #1900 で、CantaloupeのイメージをARM版のあるislandora/cantaloupe
に変更しました。git pullで最新のコードを取得した後、.env
に以下の変更を追加してください。
# CANTALOUPE_BASE_URIを削除
CANTALOUPE_BASE_URL=http://localhost:8182
islandora/cantaloupeはlinux/arm64に対応していますが、バージョン番号が3.xとあります。
Islandoraプロジェクトでは、Cantaloupeだけでなくその他のソフトウェアを一括で管理しており、ここでのバージョン3というのはそれを指しているようです、
https://github.com/Islandora-Devops/isle-buildkit/releases
Dockerイメージのドキュメントには5.0.6を使用しているとあり、Dockerfileもそうなっています。
https://registry.hub.docker.com/r/islandora/cantaloupe
https://github.com/Islandora-Devops/isle-buildkit/blob/main/cantaloupe/Dockerfile
@nabeta 迅速なご対応をありがとうございます。
とりあえず、docker-compose.yml
の該当箇所を次のように直したところ、docker compose build
と docker compose up -d
は無事エラーなく通るようになりました。他のコードの修正をお待ちしております。
# docker-compose.yml
services:
cantaloupe:
# ホストマシンのプラットフォームに合わせる
platform: linux/arm64
# image: uclalibrary/cantaloupe:5.0.6-4
image: islandora/cantaloupe:3
expose:
- 8182
restart: always
environment:
no_proxy: localhost,web
# SOURCE_STATIC: HttpSource
# HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_PREFIX: http://web:3000/picture_files/
# HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_SUFFIX: '.download?size=original'
# ENDPOINT_API_ENABLED: 'true'
# BASE_URI: ${CANTALOUPE_BASE_URI}
CANTALOUPE_HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_PREFIX: http://web:3000/picture_files/
CANTALOUPE_HTTPSOURCE_BASICLOOKUPSTRATEGY_URL_SUFFIX: .download?size=original
networks:
internal:
healthcheck:
# test: ["CMD", "curl", "-f", "http://localhost:8182/health"]
test: ["CMD-SHELL", "curl -f http://cantaloupe:8182/iiif/3"]
interval: 30s
timeout: 20s
retries: 3
docker compose up -d
はエラーなく通りますが、起動後にWebサーバーにアクセスすると、以下のようになります。原因が分かりましたらご教示ください。(直接関係ありませんが、PostgreSQLのデータは移行済みです。)
$ curl -I http://localhost:3000
curl: (7) Failed to connect to localhost port 3000: 接続を拒否されました
@miyatatk webコンテナが使用する3000番ポートには、Dockerのネットワーク内からしかアクセスできません。コンテナの外(Webブラウザなど)からアクセスするには http://localhost:8080 を開いてください。
@nabeta 8080でしたか。8080は別のアプリが使用しているので、これを変えるにはどこの設定を変えればいいですか。
@miyatatk webコンテナが使用する3000番ポートには、Dockerのネットワーク内からしかアクセスできません。コンテナの外(Webブラウザなど)からアクセスするには http://localhost:8080 を開いてください。
@miyatatk 以下の内容でdocker-compose.override.yml
を作ると、 http://localhost:8180 で起動するようになります。
services:
nginx:
ports: !override
- ${ENJU_LEAF_BIND_ADDRESS}:8180:80
- ${ENJU_LEAF_BIND_ADDRESS}:8182:8182
@nabeta すみません、NGINXはコンテナ内ではなくホストマシンのものを使っています。(docker-compose.yml
の nginx:
部分は全て #でコメントアウトしています。)
また、現時点ではNGINXのEnjuに関する設定はしていません。
したがって、DockerのEnjuネイティブのWebサーバーにアクセスできるはずなのですが、それは3000番ではないのですね。80番でしょうか。
@miyatatk 以下の内容でdocker-compose.override.yml
を作ってください。
services:
web:
ports:
- 127.0.0.1:3000:3000
@nabeta やってみました。前回は「接続を拒否されました」と出ていましたが、今回は違います。
$ curl -I http://localhost:3000
HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=UTF-8
X-Request-Id: 4f82f26e-5479-4edb-a7b5-c4b194c878d0
X-Runtime: 0.166615
Content-Length: 1635
ブラウザーでアクセスすると、
We're sorry, but something went wrong.
If you are the application owner check the logs for more information.
と表示されます。ログファイルはこんな感じです。
web-1 | [cf0b901b-81ab-44b7-9489-291da6a1e31c]
web-1 | [cf0b901b-81ab-44b7-9489-291da6a1e31c] app/controllers/page_controller.rb:32:in `index'
web-1 | I, [2024-08-20T00:25:14.538065 #1] INFO -- : [ba799ab7-39f4-49fd-9443-cf7a201a9f89] Started GET "/favicon.ico" for 192.168.xx.xx at 2024-08-20 00:25:14 +0900
web-1 | F, [2024-08-20T00:25:14.540051 #1] FATAL -- : [ba799ab7-39f4-49fd-9443-cf7a201a9f89]
web-1 | [ba799ab7-39f4-49fd-9443-cf7a201a9f89] ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
web-1 | [ba799ab7-39f4-49fd-9443-cf7a201a9f89]
web-1 | I, [2024-08-20T00:30:43.250785 #1] INFO -- : [31dd6579-784f-4bd8-a953-f6558825596e] Started GET "/" for 192.168.xx.xx at 2024-08-20 00:30:43 +0900
web-1 | I, [2024-08-20T00:30:43.253939 #1] INFO -- : [31dd6579-784f-4bd8-a953-f6558825596e] Processing by PageController#index as HTML
web-1 | I, [2024-08-20T00:30:43.267763 #1] INFO -- : [31dd6579-784f-4bd8-a953-f6558825596e] Completed 500 Internal Server Error in 14ms (ActiveRecord: 3.1ms | Allocations: 1264)
web-1 | F, [2024-08-20T00:30:43.270258 #1] FATAL -- : [31dd6579-784f-4bd8-a953-f6558825596e]
web-1 | [31dd6579-784f-4bd8-a953-f6558825596e] ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: リレーション"bookmarks"は存在しません
web-1 | LINE 8: WHERE a.attrelid = '"bookmarks"'::regclass
web-1 | ^
web-1 | ):
web-1 | [31dd6579-784f-4bd8-a953-f6558825596e]
web-1 | [31dd6579-784f-4bd8-a953-f6558825596e] app/controllers/page_controller.rb:32:in `index'
@miyatatk アップデート手順のうち、以下のコマンドは実行していますでしょうか。
docker compose run --rm web bin/rake enju_leaf:backfill_migration_versions
docker compose run --rm web bin/rake db:migrate
これらのコマンドを実行していて引き続き同じエラーが出る場合、以下のコマンドを実行すると、どのようになりますでしょうか。
# PostgreSQLのパスワードをたずねられるので入力すること
docker compose run --rm web psql enju_leaf_production -U enju -h postgres
=> DELETE FROM schema_migrations WHERE version = '55';
=> \q
docker compose run --rm web bin/rake db:migrate
@nabeta ありがとうございます。おかげさまで、無事マイグレーションに成功し、Enju Leaf 1.4.8
の Webサーバーが表示するようになりました。1.3.5 のデータは全て移行できたようです。
しかしながら、ブラウザでWebサイトを見ると、スタイルシートが無効になっているのか白地にむき出しの文字のページが表示されています。画像も見ることができません。すみませんが、解決方法を教えてください。
$ curl -I http://localhost:3000
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: text/html; charset=utf-8
Link: </assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css>; rel=preload; as=style; nopush,</assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css>; rel=preload; as=style; nopush,</assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js>; rel=preload; as=script; nopush,</packs/js/application-797b32cf759051a1c429.js>; rel=preload; as=script; nopush
Vary: Accept
ETag: W/"f59fadaa2eebf87291c0196bec62c405"
Cache-Control: max-age=0, private, must-revalidate
Set-Cookie: _enju_leaf_session=MbSZmVP9J%2FqgQM8NzIaHJdCuYh2DOBEWNRC0XpQfIAX8wFX4cXlYhQnrYvl6BFG9pBHg7q4818WwQ2boa2l7EtdfLrw05qEWvzxqDrQre5TrTGN5x%2FwysIRfffgG%2BlD1fuF42Lgmtyj%2Fx1i%2BmGyRFKBM%2BtKek3LQd00ktqocCZJAK1rMuIMq6dGTA9ecw%2BJLLe3z5BGTK0WHVjJ1p0os5utdbf600ej6C%2FyZh7sQ4Mm8fgUy19aqsvujy%2FQQlmSt7tN04pjrp4wcF2sP3unGJ2OYj1l7KqARoSnWPHgwHIsldhYpYLzkVrKvBAvPTA%3D%3D--vUmCy48503pNyaoY--O2HAfbl6Iu%2F55nFTz%2BiDSg%3D%3D; path=/; HttpOnly; SameSite=Lax
X-Request-Id: 8896f767-ca00-4390-abb3-9d341d5811fb
X-Runtime: 1.187623
@miyatatk CSS・JavaScriptの作成を行い、コンテナを再起動してください。
docker compose run --rm web yarn install
docker compose run --rm web bin/rake assets:precompile
Solrのインデックスの作成もあわせて実行してください。
docker compose run --rm web bin/rake sunspot:reindex
@nabeta もちろん、マニュアルに従って3つのコマンドは実行しました。コンテナも再起動しています。その後に上記の状態になりました。
# SolrのインデックスとJavaScript・CSSを再作成します。
$ docker compose run --rm web bin/rake sunspot:reindex
$ docker compose run --rm web yarn install
$ docker compose run --rm web bin/rake assets:precompile
# Enjuを停止して再起動します。
$ docker compose down
$ docker compose up -d
@miyatatk http://localhost:3000 を開いたときの表示はどうなっていますか。
@miyatatk http://localhost:3000 を開いたときの表示はどうなっていますか。
localhost(サーバー機)のGUIを立ち上げてブラウザーで開いても、同様にテキスト表示になります。
先ほどのはサーバー機とは異なるマシンのブラウザーで見た状態ですが、同じ画面になりました。
@nabeta *.css と *.js に関するRoutingErrorがあるようです。関係ありますか。
$ docker compose logs -f web | grep Error
web-1 | /usr/local/lib/ruby/2.7.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError
web-1 | /usr/local/bundle/gems/net-protocol-0.2.2/lib/net/protocol.rb:68: warning: previous definition of ProtocRetryError was here
web-1 | [1394abb1-ac6f-4f97-940f-6c8a80b5bebf] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [391cdbe8-ee18-4b73-82a9-61ee13b5b60f] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [1f3aaf7a-a7fb-452f-a9a1-d629639fa9d8] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [81689e49-6639-4931-bdd9-a1cd9d584cd1] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [80e8bdb4-e070-4de4-bb8a-444d5b338797] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [1e8058ac-e3c9-453c-906c-8edc6f8688b2] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [226d2378-1b5e-4a5e-942f-e1ebea498373] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [927ffa21-227e-4d96-a372-30b361ebcdca] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [c248b845-96f7-4a97-aa4c-6aabb5610c17] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [37763e36-6174-4773-9f11-48de5c13c96b] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [d5875d39-0f01-4a69-be82-0b9646c1811a] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [0d3ca73d-cbe5-4ac4-8ece-3f1b7eed34f1] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [97d608f7-d539-47b1-b02c-b975de449ec2] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [f57ebf83-be27-42aa-a2e4-56c692f80eb0] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [65e57afb-21b3-41a7-9ee1-669fef0dacdb] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [45e90ea5-05ac-48bb-8ec7-88b652349a17] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [e0a7678d-d3f2-42b6-8528-9432cb3200f6] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [a1961b92-def3-44fc-8bd7-aa65aad617a0] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [5457015d-a44e-4add-90e1-7cc1e0dc241b] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [bd8a2dbc-6aa4-4235-9878-8a116145dda6] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [84286f79-f0b5-4b3c-a4b2-da3d01a3a5a2] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [f2391d33-a24d-4f96-96c1-e3574a0cdc9d] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [86837cf7-ba9d-4e45-a6f8-f86fee529178] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [ce32f41f-221c-40ba-820f-62a0b745ee81] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [43bae8e3-2a37-465e-baa9-aadaa6550e78] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [bff4f1ac-d555-4687-bfa0-2cdeddec66de] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [2358081e-0426-4e81-8ff5-b1e763b4e448] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [65ee2da8-bf84-41aa-afed-d947f5826178] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [6694e5a9-cf0e-46b8-99b5-d35e2110260e] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [d9cecefd-ce1d-47a0-a6ac-a737774d9002] ActionController::RoutingError (No route matches [GET] "/assets/icons/feed-c6d1b44cf4dd1c7ff5bb18fd28ba8ca8b5fb90bff1fb35e19885ee07058f083b.png"):
web-1 | [9d7c9dda-61b6-43f3-97f6-3635cffa31ba] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [56b2bf3d-4910-4f9d-a1b8-30d037c2de73] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [55198de0-8e52-424b-b4d4-125af9f5daea] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [bbddccc0-b8e9-47f4-ad02-8436cbd00ebe] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [e6268b01-34c7-46a4-8e95-4c5a4031a930] ActionController::RoutingError (No route matches [GET] "/assets/icons/feed-c6d1b44cf4dd1c7ff5bb18fd28ba8ca8b5fb90bff1fb35e19885ee07058f083b.png"):
web-1 | [2f1de329-7e4a-462f-ac80-029a1d98d9b5] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [f18e6f2e-3878-420b-9504-5085a8b3a8d9] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [27c3fe36-d423-4058-84d0-1891dd554d12] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [6fe1aad8-24b9-486c-99d7-91331347ec92] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [1ad5f395-1dae-41b9-ba70-78756fccc113] ActionController::RoutingError (No route matches [GET] "/assets/icons/page_white_text-f18747e6681080fb55737c03028107bb924c2785532965cbadada3aa6e3d4310.png"):
web-1 | [b3cf89e6-647f-4f07-9d2e-98fda437b57e] ActionController::RoutingError (No route matches [GET] "/assets/application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css"):
web-1 | [8af36c71-8a86-4437-9ec8-37f2ad29cc6f] ActionController::RoutingError (No route matches [GET] "/assets/print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css"):
web-1 | [269be145-483e-4da0-9e12-017ff14c7f4c] ActionController::RoutingError (No route matches [GET] "/assets/application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js"):
web-1 | [c2d1b24d-4f9d-40c6-b3c6-b5466b15f45e] ActionController::RoutingError (No route matches [GET] "/packs/js/application-797b32cf759051a1c429.js"):
web-1 | [0daeda35-52ec-4a6d-818e-86c9215ddb7d] ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
@miyatatk nginxが別立てでしたね。お使いのnginxで、以下が設定されていることを確認していただけますか。
# 実際の enju_leaf/public ディレクトリのパスに変更すること
root /opt/enju_leaf/public;
location @web {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
# 上記のrootで指定したディレクトリにファイルがある場合、
# それを優先して読み込む
location / {
try_files $uri @web;
}
@miyatatk public/assets 以下にファイルは作成されていますでしょうか。
ls -l public/assets
@nabeta はい、あります。1.4 のインストール時に作成されたものと思われます。
$ ls -l public/assets/
-rw-r--r-- 1 user user 3488083 8月 20 21:50 application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js
-rw-r--r-- 1 user user 896159 8月 20 21:50 application-26585bfaaf14ecaa4eca91aee6aad59375cae439976747459e96fd0a9b7c2178.js.gz
-rw-r--r-- 1 user user 54477 8月 20 21:50 application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css
-rw-r--r-- 1 user user 11492 8月 20 21:50 application-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css.gz
-rw-r--r-- 1 user user 961 8月 20 21:50 autocomplete_agent-c212b138ebc987e699d56a1029ec37a741124815234d99a150a84ee2a26dfbba.js
-rw-r--r-- 1 user user 446 8月 20 21:50 autocomplete_agent-c212b138ebc987e699d56a1029ec37a741124815234d99a150a84ee2a26dfbba.js.gz
-rw-r--r-- 1 user user 112 8月 20 21:50 border-7f543f72a6643f4f77d4f8035a582568d2a49c4f85217b8c3787ea1fb1c57fa3.png
-rw-r--r-- 1 user user 21838 8月 20 21:50 cable-405b9eaa96e229928daca399c41ed1672fe9b1eb4aea0bbe27306cf68f4f829e.js
-rw-r--r-- 1 user user 4848 8月 20 21:50 cable-405b9eaa96e229928daca399c41ed1672fe9b1eb4aea0bbe27306cf68f4f829e.js.gz
-rw-r--r-- 1 user user 2893 8月 20 21:50 controls-0ef8ac82119e09c93351b7f070bb788a15e68daede870ef81efa36f927f1aa35.png
-rw-r--r-- 1 user user 5828 8月 20 21:50 enju-e8b76ce80e00125617da59fa832c09efda0b1e38cf99dd29974a9f6dc12322d3.css
-rw-r--r-- 1 user user 1665 8月 20 21:50 enju-e8b76ce80e00125617da59fa832c09efda0b1e38cf99dd29974a9f6dc12322d3.css.gz
drwxr-xr-x 2 user user 4096 8月 20 21:50 enju_leaf
-rw-r--r-- 1 user user 3200618 8月 20 21:50 enju_leaf-1caac230f9575991ef408c2cc8e5cb75746efdbc2ee985fba626230ca5af4f49.js
-rw-r--r-- 1 user user 814664 8月 20 21:50 enju_leaf-1caac230f9575991ef408c2cc8e5cb75746efdbc2ee985fba626230ca5af4f49.js.gz
-rw-r--r-- 1 user user 54477 8月 20 21:50 enju_leaf-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css
-rw-r--r-- 1 user user 11492 8月 20 21:50 enju_leaf-87ecf9d39f7d1e851a836a50383ed615b25ffd326bdbcd0d63610031d1fb9a42.css.gz
-rw-r--r-- 1 user user 39 8月 20 21:50 enju_mobile-6f6c33865a7c10997062b60b627bad48d99d0ab54b38eb49d9e3aae3163c4458.css
-rw-r--r-- 1 user user 59 8月 20 21:50 enju_mobile-6f6c33865a7c10997062b60b627bad48d99d0ab54b38eb49d9e3aae3163c4458.css.gz
-rw-r--r-- 1 user user 149 8月 20 21:50 enju_print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css
-rw-r--r-- 1 user user 132 8月 20 21:50 enju_print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css.gz
drwxr-xr-x 2 user user 12288 8月 20 21:50 icons
drwxr-xr-x 2 user user 4096 8月 20 21:50 images
drwxr-xr-x 2 user user 4096 8月 20 21:50 jquery-ui
-rw-r--r-- 1 user user 9427 8月 20 21:50 loading-d009e70718c057b2b89288415a3c596240fe5578ecd54e00f8212364218ad10d.gif
-rw-r--r-- 1 user user 157 8月 20 21:50 loading_background-4c69493ad0c08b18fd96c58125c6acfe1afa442b6c0ea4d11308613b9327566f.png
-rw-r--r-- 1 user user 3 8月 20 21:50 manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js
-rw-r--r-- 1 user user 23 8月 20 21:50 manifest-dad05bf766af0fe3d79dd746db3c1361c0583026cdf35d6a2921bccaea835331.js.gz
-rw-r--r-- 1 user user 299 8月 20 21:50 menu-9ef1ae37975b5fb428ede4e52ed6b2b413e88d3ec39e8c85b6b4dd94360ed5b8.js
-rw-r--r-- 1 user user 192 8月 20 21:50 menu-9ef1ae37975b5fb428ede4e52ed6b2b413e88d3ec39e8c85b6b4dd94360ed5b8.js.gz
-rw-r--r-- 1 user user 48 8月 20 21:50 mirador-9fd1edbb4d4e9e08888661a695fc344d2b5ca8c2e870bba06047fe89585f6993.css
-rw-r--r-- 1 user user 68 8月 20 21:50 mirador-9fd1edbb4d4e9e08888661a695fc344d2b5ca8c2e870bba06047fe89585f6993.css.gz
-rw-r--r-- 1 user user 208229 8月 20 21:50 mobile-ade342bc1155f4cffd1de03b9b721bb3c9a6a6bd19b43ca41c3750850fb9be33.css
-rw-r--r-- 1 user user 25072 8月 20 21:50 mobile-ade342bc1155f4cffd1de03b9b721bb3c9a6a6bd19b43ca41c3750850fb9be33.css.gz
-rw-r--r-- 1 user user 781719 8月 20 21:50 mobile-dfbc11f998a0a7ad20dffa9bbb7a9758e8827bc32df573d71b7f4b8ed9cb9fd4.js
-rw-r--r-- 1 user user 215162 8月 20 21:50 mobile-dfbc11f998a0a7ad20dffa9bbb7a9758e8827bc32df573d71b7f4b8ed9cb9fd4.js.gz
-rw-r--r-- 1 user user 182 8月 20 21:50 overlay-e4ceb680d9606bbe944fd36e1ccbfe5612d06c1ead6e093d45b2b7c69ddf2565.png
-rw-r--r-- 1 user user 1908 8月 20 21:50 pagination-6f736582f9934c4f8aa3154e4e64c548128e11cc7faf6fc94e93a3b0eae0e2f6.css
-rw-r--r-- 1 user user 629 8月 20 21:50 pagination-6f736582f9934c4f8aa3154e4e64c548128e11cc7faf6fc94e93a3b0eae0e2f6.css.gz
-rw-r--r-- 1 user user 2304 8月 20 21:50 portlets-40dd4c686dace0103d7694cb949e00a2345d063df71ac80e9e06b089edfc78b3.js
-rw-r--r-- 1 user user 875 8月 20 21:50 portlets-40dd4c686dace0103d7694cb949e00a2345d063df71ac80e9e06b089edfc78b3.js.gz
-rw-r--r-- 1 user user 395 8月 20 21:50 portlets-43dc671773346c0c7a51513f33f9e41c94976df4948cf1e0cc6b4d31c2113bff.css
-rw-r--r-- 1 user user 234 8月 20 21:50 portlets-43dc671773346c0c7a51513f33f9e41c94976df4948cf1e0cc6b4d31c2113bff.css.gz
-rw-r--r-- 1 user user 149 8月 20 21:50 print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css
-rw-r--r-- 1 user user 132 8月 20 21:50 print-ef63e524306e6a3f5c6891b81bd63c3fba1853f4dddfeba6620548b95ce1919c.css.gz
-rw-r--r-- 1 user user 6646 8月 20 21:50 rails-cd95a25e70dfe61add5a96e11d3fee0f29e9ba2b05099723d57bba7dfa725c8a.png
-rw-r--r-- 1 user user 705 8月 20 21:50 scaffold_modified-7140bf10c6da572691798abdd187c7befe3ff396799ab48f7f11e2f3bdc5e7d6.css
-rw-r--r-- 1 user user 371 8月 20 21:50 scaffold_modified-7140bf10c6da572691798abdd187c7befe3ff396799ab48f7f11e2f3bdc5e7d6.css.gz
-rw-r--r-- 1 user user 210 8月 20 21:50 select_locale-b89c7bd65f01f5437144e272ee3d7717c213adff80a82d5e0035626839703617.js
-rw-r--r-- 1 user user 128 8月 20 21:50 select_locale-b89c7bd65f01f5437144e272ee3d7717c213adff80a82d5e0035626839703617.js.gz
-rw-r--r-- 1 user user 2037 8月 20 21:50 spinner-8385a8ea9fcf33fd1ad0f9f01f7815bca44e12152ad511281ff29a201c8b4d98.gif
-rw-r--r-- 1 user user 2891 8月 20 21:50 unknown_resource-c82a5e7563f33fd67994cfb12c8b1710e83bde1999cd8a503f09d8fb0120a64d.png
@miyatatk nginxが別立てでしたね。お使いのnginxで、以下が設定されていることを確認していただけますか。
# 実際の enju_leaf/public ディレクトリのパス root /opt/enju_leaf/public; location @web { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_pass http://127.0.0.1:3000; } # 上記のrootで指定したディレクトリにファイルがある場合、 # それを優先して読み込む location / { try_files $uri @web; }
NGINXは別立てですが、現段階ではまだ関連付けていません。別のアプリとして動いていますし、干渉はしていないはずです。
それにしても、公開の際のルートディレクトリは public なのですね。
@miyatatk #1892 (comment) のとおり、他のサーバと干渉しないポートで、Dockerでのnginxを起動してみてください。
http://localhost:3000/ を開いたときの表示はどうなっていますか。
と書いたのですが、現在の1.4系の設定では、nginx経由でないとCSSなどを読み込めないようになっています。nginxを経由せずにCSSなどを読み込めるようにするには、.env
に以下の設定を追加してください。
RAILS_SERVE_STATIC_FILES=true
@miyatatk #1892 (comment) のとおり、他のサーバと干渉しないポートで、Dockerでのnginxを起動してみてください。
DockerにはNGINXがないので、テストのためとはいえ、改めてインストールしないとできません。環境を整えなければならないので、ちょっとすぐには難しいです。
@miyatatk #1892 (comment) でコメントアウトしたものを戻せばよさそうですが(ポート番号は適宜変えてください)、別の問題がありますでしょうか。
@nabeta 素晴らしいです! RAILS_SERVE_STATIC_FILES=true
はもともと.env.template
ではコメントアウトされていますが、コメントを外してこれをtrue
に変えたところ、NGINXなしで、スタイル・画像を含めて正しく表示されました。久しぶりに見る、見慣れたEnju Leafの画面です。
これでEnju単体での動作を確認できましたので、近日中にホストマシンにインストールされたNGINXにEnjuサイトを設定し、正しくSSLで表示されるようにしたいと思います。
ありがとうございました。
@miyatatk #1892 (comment) でコメントアウトしたものを戻せばよさそうですが(ポート番号は適宜変えてください)、別の問題がありますでしょうか。
このホストマシンは複数のWebアプリケーションを動かしているサーバーであり、ホストにインストールされたNGINXで一元的にWebサーバーへのアクセスを振り分けています。他のアプリと慎重に調整しないとトラブルの原因になることがあります。