-
Notifications
You must be signed in to change notification settings - Fork 24
Production
Kosuke Tanabe edited this page Nov 6, 2022
·
37 revisions
既定では、Enjuにはインストールしたコンピュータ(localhost)からしかアクセスできません。Enjuを実際に公開する際には、アプリケーションの設定・リバースプロキシの設定を変更する必要があります。
-
Enjuに外部からアクセスする際のホスト名を決めます。
- IIIFサーバの機能を使用する場合は、Enju本体のホスト名とは別に、IIIFサーバのホスト名を決める必要があります
-
.env
の以下の内容を変更します。# PostgreSQLのユーザ名 # PostgreSQLが別サーバで動作している場合、そのサーバのユーザ名を使用 POSTGRES_USER=enju # PostgreSQLのパスワード # PostgreSQLが別サーバで動作している場合、そのサーバのパスワードを使用 POSTGRES_PASSWORD=password # PostgreSQLのホスト名 # PostgreSQLが別サーバで動作している場合、実際にPostgreSQLが動作しているサーバに変更 POSTGRES_HOST=192.168.2.10 # nginxを動作させるIPアドレス。公開する場合は127.0.0.0から0.0.0.0に変更する ENJU_LEAF_BIND_ADDRESS=0.0.0.0 # Enjuを公開するURL ENJU_LEAF_BASE_URL=http://localhost:8080
-
本番環境用のデータベースを作成し、初期データを投入します。
docker compose up -d docker compose run --rm web rake db:create docker compose run --rm web rake db:migrate docker compose run --rm web rake enju_leaf:setup docker compose run --rm web rake db:seed
-
CSSとJavaScriptのファイルを生成します。
docker compose run --rm web rake assets:precompile
以下はnginxをリバースプロキシとして動作させる場合の設定の例です。Enju上で動作しているnginxとは別に用意することを推奨します。
サーバ証明書は、Let's Encryptなどを用いて取得することができます。 (TBD)
# アクセスログの設定はこの例では省略しています
# httpでのアクセスをすべてhttpsに転送する
server {
listen 80 default_server;
server_name _;
location / {
return 301 https://$host$request_uri;
}
}
# Enju本体へのアクセスの設定
server {
listen 443 ssl http2;
server_name enju.example.jp; # Enjuの外部公開ホスト名。.envのENJU_LEAF_BASE_URLで指定したホスト名と同じもの
# サーバ証明書と鍵のファイルの保存場所を指定
ssl_certificate /etc/nginx/certs/enju.example.jp.pem;
ssl_certificate_key /etc/nginx/certs/enju.example.jp-key.pem;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
client_max_body_size 5m; # アップロードできるファイルの最大サイズ
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;
# 外部のIIIFビューワからIIIFマニフェストファイルへのアクセスを受け付ける設定
location ~ ^/iiif_presentations/ {
add_header Access-Control-Allow-Origin '*' always;
proxy_pass http://localhost:8080; # EnjuのDockerコンテナが動いているホスト名を指定
}
# Enjuのその他の機能へのアクセスの設定
location / {
proxy_pass http://localhost:8080; # EnjuのDockerコンテナが動いているホスト名を指定
}
}
# IIIFサーバへのアクセスの設定
server {
listen 443 ssl http2;
server_name iiif.example.jp; # IIIFサーバの外部公開ホスト名
# サーバ証明書と鍵のファイルの保存場所を指定
ssl_certificate /etc/nginx/certs/iiif.example.jp.pem;
ssl_certificate_key /etc/nginx/certs/iiif.example.jp-key.pem;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
client_max_body_size 5m; # アップロードできるファイルの最大サイズ
location / {
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://localhost:8182; # EnjuのDockerコンテナが動いているホスト名を指定
}
}
- リバースプロキシを動作させているサーバのIPアドレスと、リバースプロキシに外部からアクセスする際のホスト名(環境変数
ENJU_LEAF_BASE_URL
に設定したURLのホスト名)を、DNSサーバに登録します。 - これらの設定が完了したら、Webブラウザで環境変数
ENJU_LEAF_BASE_URL
に設定したURLを開き、アクセスできるかどうかを確認します。