Skip to content
Kosuke Tanabe edited this page Aug 28, 2022 · 37 revisions

本番環境での動作方法

Enjuを実際に公開する際には、アプリケーションの設定を変更する必要があります。

アプリケーションの設定

  1. .envの以下の内容を変更します。

    # PostgreSQLのユーザ名
    # PostgreSQLが別サーバで動作している場合、そのサーバのユーザ名を使用
    POSTGRES_USER=enju
    
    # PostgreSQLのパスワード
    # PostgreSQLが別サーバで動作している場合、そのサーバのパスワードを使用
    POSTGRES_PASSWORD=password
    
    # PostgreSQLのホスト名。実際にPostgreSQLが動作しているサーバに変更
    POSTGRES_HOST=192.168.2.10
    
    # Enjuを公開するURL
    ENJU_LEAF_BASE_URL=https://enju.example.jp
    
  2. 本番環境用のデータベースを作成し、初期データを投入します。

    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
    
  3. CSSとJavaScriptのファイルを生成します。

    docker compose run --rm web rake assets:precompile
    
  4. Enjuを動作させているサーバのIPアドレスと、外部からアクセスする際のホスト名(環境変数ENJU_LEAF_BASE_URLに設定したURLのホスト名)を、DNSサーバに登録します。

  5. Webブラウザで環境変数ENJU_LEAF_BASE_URLに設定したURLを開いてください。

nginxの設定

Enjuをインターネット上で公開するには、nginxの設定とサーバ証明書の取得が必要です。nginxはEnju上で動作しているものとは別に用意することを推奨します。

# 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の外部公開ホスト名

  # サーバ証明書と鍵のファイルの保存場所を指定 
  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; # アップロードできるファイルの最大サイズ

  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: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コンテナが動いているホスト名を指定
  }
}

Clone this wiki locally