6. 高度な構成

6.1. ログを記録する

サーバーに送られたリクエストを記録するには、次の環境変数を設定しなければなりません:

次の変数によって、ログの記録を更にカスタマイズすることができます:

6.2. 環境変数

環境変数 を設定することによってQGIS Serverのいくつかの側面を設定することができます。

HTTP サーバーと QGIS Server の実行方法に応じて、これらの変数を定義する方法がいくつかあります。詳しくは Apache HTTP サーバー を参照してください。

名前

説明

デフォルト

サービス

QGIS_OPTIONS_PATH

設定のあるディレクトリへのパスを指定します。QGIS アプリケーションの --optionspath オプションと同じように動作します。これは <QGIS_OPTIONS_PATH>/QGIS/QGIS3.ini にある設定ファイルを探します。

''

All

QGIS_PLUGINPATH

サーバーにPythonプラグインを使用している場合に便利です。Pythonプラグインを検索するフォルダを設定します。

''

All

QGIS_PROJECT_FILE

プロジェクトファイル .qgs または .qgz は、通常はクエリ文字列のパラメータとして渡されます (MAP を使用します)が、環境変数として設定することもできます (例えば、mod_rewrite Apache モジュールを使用します)。

PostgreSQLに保存されているプロジェクトを示すこともできます。例 postgresql://localhost:5432?sslmode=disable&dbname=mydb&schema=myschema&project=myproject

''

All

QGIS_SERVER_ALLOWED_EXTRA_SQL_TOKENS

地物フィルタの構成要素として使用できる追加の SQL トークンを表す、カンマで区切られた文字列のリスト。

''

WMS

QGIS_SERVER_API_RESOURCES_DIRECTORY

すべてのOGC API(OAPIF/WFS3など)の静的リソース(HTMLテンプレート、CSS、JSなど)のベースディレクトリ

パッケージに依存します

OAPIF/WFS3

QGIS_SERVER_API_WFS3_MAX_LIMIT

OAPIF/WFS3 地物リクエストにおける limit の最大値。

10000

OAPIF/WFS3

QGIS_SERVER_CACHE_DIRECTORY

ファイルシステム上のネットワークキャッシュディレクトリを指定します。

プロファイルディレクトリの cache

All

QGIS_SERVER_CACHE_SIZE

ネットワークキャッシュの大きさをMBで設定します。

50 MB

All

QGIS_SERVER_DISABLE_GETPRINT

これは、レイアウトの読み込みを無効にすることで、プロジェクトの読み込み時間を短縮するためのプロジェクトレベルのオプションです。

このオプションを有効にすると、QGIS WMS GetPrint 要求が無効になります。レイアウトを読み込まないようにするには、このQGISプロジェクトフラグを設定します。

false

WMS

QGIS_SERVER_FORCE_READONLY_LAYERS

全てのレイヤを読み取り専用モードで開くようQGIS Serverに強制します

false

All

QGIS_SERVER_IGNORE_BAD_LAYERS

「不良」レイヤとは、読み込むことができないレイヤのことです。QGIS Server のデフォルトの動作では、不良レイヤが含まれている場合、そのプロジェクトは利用できないとみなします。

この変数を 1 または true に設定することで、デフォルトの動作をオーバーライドすることができます。この場合、「不良」レイヤは無視され、プロジェクトは有効で利用可能であるとみなされます。

false

All

QGIS_SERVER_LANDING_PAGE_PREFIX

ランディングページのベースURLのパス要素のプレフィックス

""

All

QGIS_SERVER_LANDING_PAGE_PROJECTS_DIRECTORIES

ランディングページサービスが.qgs及び.qgzプロジェクトを見つけるのに使うディレクトリ群

""

All

QGIS_SERVER_LANDING_PAGE_PROJECTS_PG_CONNECTIONS

ランディングページサービスがプロジェクトを見つけるのに使うPostgreSQL接続文字列

""

All

QGIS_SERVER_LOG_FILE

パスとファイル名を指定します。サーバーがファイルへの書き込みに適切なパーミッションを持っていることを確認してください。ファイルは自動的に作成されるはずなので、サーバーに要求を送るだけです。ファイルがない場合は、パーミッションを確認してください。

警告

QGIS_SERVER_LOG_FILEはQGIS 3.4以降で非推奨です。代わりにQGIS_SERVER_LOG_STDERRを使用してください。ファイルロギングのサポートはQGIS 4.0で削除される予定です。

''

All

QGIS_SERVER_LOG_LEVEL

必要なログレベルを指定します。使用可能な値は以下のとおりです:

  • 0 又は INFO (全ての要求をログに記録します)

  • 1 又は WARNING

  • 2 又は CRITICAL (致命的なエラーだけをログに記録するので、製品版に適しています)

0

All

QGIS_SERVER_LOG_PROFILE

詳細なプロファイル情報をログに追加します。QGIS_SERVER_LOG_LEVEL=0のときだけ有効です

false

All

QGIS_SERVER_LOG_STDERR

stderrへのロギングを有効にします。この変数は QGIS_SERVER_LOG_FILE が設定されている場合には効果がありません。

  • 0 又は false (大文字小文字は区別しない)

  • 1 又は true (大文字小文字を区別する)

false

All

QGIS_SERVER_MAX_THREADS

並列レンダリングが有効な場合に使用するスレッド数。値が -1 の場合、プロセッサのコア数を使用します。

-1

All

QGIS_SERVER_OVERRIDE_SYSTEM_LOCALE

QGIS serverで使用するLOCALEを設定します。デフォルト値は空です(上書きしない)。

例: de_CH.utf8

''

All

QGIS_SERVER_PARALLEL_RENDERING

WMS GetMap リクエストの並列レンダリングを有効にします。デフォルトでは無効 (false) です。利用可能な値は以下のとおりです:

  • 0 又は false (大文字小文字は区別しない)

  • 1 又は true (大文字小文字を区別する)

false

WMS

QGIS_SERVER_PROJECT_CACHE_CHECK_INTERVAL

キャッシュ無効化の周期的戦略間隔を制御します。

All

QGIS_SERVER_PROJECT_CACHE_STRATEGY

プロジェクト・キャッシュを無効にする方法を定義します。利用可能な戦略は以下のとおりです:

  • filesystem: ファイルシステムウォッチャー戦略を取ります

  • periodic: プロジェクトの設定の変更をチェックするために、プロジェクトの最終更新値を使用します。NFS のような非定型のファイルシステムや、プロジェクトファイルが PostgreSQL のようなデータベースシステムに保存されている場合に便利です。

  • off:内部キャッシュの無効化を完全に無効にします

filesystem

All

QGIS_SERVER_SERVICE_URL

サービスURLがプロジェクトに存在しない場合に設定するオプションです。

サービスURLは、(優先順位の高い順に)以下から定義されます:

  • サービスごとにプロジェクトに定義された値

  • QGIS_SERVER_<service>_SERVICE_URL 環境変数

  • QGIS_SERVER_SERVICE_URL 環境変数

  • X-Qgis-<service>-Service-Url ヘッダ

  • X-Qgis-Service-Url ヘッダ

  • Forwarded ヘッダから組み立てる

  • X-Forwarded-Host 及び X-Forwarded-Proto ヘッダから組み立てる

  • Host ヘッダとサーバープロトコルから組み立てる

  • サーバー名とサーバープロトコルから組み立てる

最後の4つのケースでは、得られるサービスURLはクエリ文字列で提供された MAP パラメータと、受信したパスリクエストに基づいています。

''

All

QGIS_SERVER_SHOW_GROUP_SEPARATOR

(GetFeatureInfoレスポンスなどで)数値にグループセパレータ(3桁ごとの区切りなど)を使用するかどうかを定義します。デフォルト値は 0 です。

  • 0 又は false (大文字小文字は区別しない)

  • 1 又は true (大文字小文字を区別する)

false

WMS

QGIS_SERVER_TRUST_LAYER_METADATA

これは、プロジェクトのメタデータで定義されているベクタレイヤ範囲を使用し、PostgreSQL/PostGISレイヤの主キーの一意性チェックを無効にすることで、プロジェクトの読み込み時間を改善する、プロジェクトレベルのオプションです。

この変数を 1 または true に設定することで、レイヤのメタデータを信頼させることができます。ベクタレイヤの範囲はプロジェクトで定義されたものになり、データソースで定義されたPostgreSQL/PostGISレイヤの主キーはチェックなしで一意であるとみなされます。

プロジェクトの使用中にレイヤの範囲が固定されない場合は使用しないでください。

false

All

QGIS_SERVER_WCS_SERVICE_URL

これはサービスURLがプロジェクトに存在しない場合に設定するオプションです。詳しくは QGIS_SERVER_SERVICE_URL を参照してください。

''

WCS

QGIS_SERVER_WFS_SERVICE_URL

これはサービスURLがプロジェクトに存在しない場合に設定するオプションです。詳しくは QGIS_SERVER_SERVICE_URL を参照してください。

''

WFS

QGIS_SERVER_WMS_MAX_HEIGHT / QGIS_SERVER_WMS_MAX_WIDTH

WMSリクエストの最大高さ/幅。この値とプロジェクトの値の間で最も保守的な値が使用されます。値が -1 の場合は、最大値が設定されていないことを意味します。

-1

WMS

QGIS_SERVER_WMS_SERVICE_URL

これはサービスURLがプロジェクトに存在しない場合に設定するオプションです。詳しくは QGIS_SERVER_SERVICE_URL を参照してください。

''

WMS

QGIS_SERVER_WMTS_SERVICE_URL

これはサービスURLがプロジェクトに存在しない場合に設定するオプションです。詳しくは QGIS_SERVER_SERVICE_URL を参照してください。

''

WMTS

QUERY_STRING

通常ウェブサーバから渡されるクエリ文字列。この変数はコマンドラインからQGISサーバのバイナリをテストする際に役立ちます。

例えば、pg_service.confファイルで定義されたPostgreSQL接続も必要とするプロジェクトに対して、コマンドラインでGetCapabilitiesリクエストをテストする場合:

PGSERVICEFILE=/etc/pg_service.conf \
QUERY_STRING="MAP=/home/projects/world.qgs&SERVICE=WMS&REQUEST=GetCapabilities" \
/usr/lib/cgi-bin/qgis_mapserv.fcgi

結果は、GetCapabilities レスポンスの内容か、何か問題がある場合はエラーメッセージのいずれかになります。

''

All

6.3. 設定の要約

QGIS Serverを起動すると、環境変数により設定可能なパラメータの概要が表示されます。さらに、現在使用されている値と出所も表示されます。

spawn-fcgi を使う例:

export QGIS_OPTIONS_PATH=/home/user/.local/share/QGIS/QGIS3/profiles/default/
export QGIS_SERVER_LOG_STDERR=1
export QGIS_SERVER_LOG_LEVEL=2
spawn-fcgi -f /usr/lib/cgi-bin/qgis_mapserv.fcgi -s /tmp/qgisserver.sock -U www-data -G www-data -n

 QGIS Server Settings:

   - QGIS_OPTIONS_PATH / '' (Override the default path for user configuration): '/home/user/.local/share/QGIS/QGIS3/profiles/default/' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_PARALLEL_RENDERING / '/qgis/parallel_rendering' (Activate/Deactivate parallel rendering for WMS getMap request): 'true' (read from INI_FILE)

   - QGIS_SERVER_MAX_THREADS / '/qgis/max_threads' (Number of threads to use when parallel rendering is activated): '4' (read from INI_FILE)

   - QGIS_SERVER_LOG_LEVEL / '' (Log level): '2' (read from ENVIRONMENT_VARIABLE)

   - QGIS_SERVER_LOG_STDERR / '' (Activate/Deactivate logging to stderr): '1' (read from ENVIRONMENT_VARIABLE)

   - QGIS_PROJECT_FILE / '' (QGIS project file): '' (read from DEFAULT_VALUE)

   - MAX_CACHE_LAYERS / '' (Specify the maximum number of cached layers): '100' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_DIRECTORY / '/cache/directory' (Specify the cache directory): '/root/.local/share/QGIS/QGIS3/profiles/default/cache' (read from DEFAULT_VALUE)

   - QGIS_SERVER_CACHE_SIZE / '/cache/size' (Specify the cache size): '52428800' (read from INI_FILE)

 Ini file used to initialize settings: /home/user/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini

この特定のケースでは、QGIS_SERVER_MAX_THREADSQGIS_SERVER_PARALLEL_RENDERING 値は、QGIS_OPTIONS_PATH ディレクトリにあるiniファイル(環境変数により定義されます)から読み込まれることが分かります。iniファイルの対応するエントリは /qgis/max_threads と /qgis/parallel_rendering で、それらの値は true4 スレッドです。

6.4. サービスファイルへの接続

PostgreSQLのサービス・ファイルのApacheが認識できるようにするために( PGサービスファイル セクションを参照) *.conf ファイルのようなを見て、確認する必要があり:

SetEnv PGSERVICEFILE /home/web/.pg_service.conf

<Directory "/home/web/apps2/bin/">
  AllowOverride None
.....

6.5. お使いのLinuxサーバーにフォントを追加

他のマシン上のデフォルトでは存在しないかもしれないフォントを指すQGISプロジェクトを使用するかもしれないことに注意してください。これは、プロジェクトを共有する場合(フォントがターゲットマシン上に存在しない場合)、それは他のマシン上で異なって見える可能性があることを意味します。

これが起こらないようにするために、単にターゲットマシン上で不足しているフォントをインストールする必要があります。デスクトップシステム上でこれを行うのは通常は自明です(フォントをダブルクリック)。

Linuxに対しては、デスクトップ環境をインストールしていない(または、コマンドラインを好む)場合、する必要があります:

  • Debianのベースのシステム:

    sudo su
    mkdir -p /usr/local/share/fonts/truetype/myfonts && cd /usr/local/share/fonts/truetype/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v
    
  • Fedoraのベースのシステム:

    sudo su
    mkdir /usr/share/fonts/myfonts && cd /usr/share/fonts/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v