有馬総一郎のブログ

(彼氏の事情)

2021年11月01日 18:22:34 JST - 3 minute read - Comments - Linux

Airsonic、Nextcloudを動作させるWEBサーバーをApacheからNginxに乗り換える Airsonic編

王者apacheを蹴落したnginxにWEBサーバーを乗り換えることにした。正直、 Airsonic1も、 Nextcloudも自分専用なので、乗り換えたところでパフォーマンスがどうとかは期待してないが、慣れておくという意味で。

構成としては以下のようになっている。

アプリ URL ディレクトリ
Welcome https://example.f5.si2 /var/www/html
Airsonic https://example.f5.si/airsonic /var/airsonic
Nextcloud https://example.f5.si/nextcloud /var/www/nextcloud

ApacheからNginxは徐々に移行可能

まずは、apachengnixを両方インストールして大丈夫なのか?という点については問題なかった。同時起動はできないが、片方を止めておけば、設定ファイル時代は別々なので、移行作業を少しずつ進めることができた。

また、Ubuntuの場合は、ユーザー・グループもwww-dataなので、ファイル、ディレクトリの権限などを変更する必要もなかった。ユーザーは/etc/nginx/nginx.confの一行目にuser www-data;と指定されていた。

Welcoma

まずはNginxのWelcome画面は以下のような感じで表示できた。3

/etc/nginx/sites-available/example.f5.si

server {
    listen 80;
    listen [::]:80;
    server_name example.f5.si;
}

# Default server configuration
#
server {
    listen 443 default_server;
    listen [::]:443 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.nginx-debian.html index.html index.htm;

    server_name example.f5.si;

    ssl on;
        ssl_certificate /etc/letsencrypt/live/example.f5.si/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.f5.si/privkey.pem;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
}

Airsonic

いよいよ Airsonicの設定。 まず、ぶち当ったのが、多くの例は一サーバーに一設定ファイルのような記述をしているために、同じサーバーに載るアプリの設定を同じように書くと、設定項目が重複して、警告が出てしまうこと。

2021/10/09 00:13:44 [warn] 20698#20698: conflicting server name "example.f5.si" on 0.0.0.0:80, ignored
2021/10/09 00:13:44 [warn] 20698#20698: conflicting server name "example.f5.si" on [::]:80, ignored

default_server_などにしてもエラーになってしまう。

2021/10/09 10:28:45 [error] 959#959: *1 rewrite or internal redirection cycle while processing "/nextcloud/index.php/nextcloud/status.php", client: 192.168.0.241, server: _, request: "GET /nextcloud/status.php HTTP/1.1", host: "example.f5.si"
2021/10/09 02:00:57 [warn] 23848#23848: conflicting server name "default_server" on 0.0.0.0:443, ignored
2021/10/09 02:00:57 [warn] 23864#23864: conflicting server name "default_server" on 0.0.0.0:443, ignored

ファイルを分割する際はこうしたそもそもhostname項目などは書かなきゃいいのだろうけど、Airsonic用、Nextcloud用と分けていると、エラーが出たときに調査しにくい。

airsonic.confnextcloud.conf とファイルを分けずに、 example.f5.si にまとめて追記することにした。

ともあれ、基本 Setting up Nginx - Airsonicの設定どおりにやれば何とか起動した。

    location /airsonic {
        root /var/airsonic;
        proxy_set_header X-Real-IP     $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Host          $http_host;
        proxy_max_temp_file_size       0;
        proxy_pass             http://127.0.0.1:8080;
        proxy_redirect             http:// https://;
    }

を足しただけ。設定例と異なるのはroot /var/airsonic;を追記したぐらい。ただ、この一行を追記するということに辿りつくまでに難儀したのだが、これで Airsonicは無事、動くようになった。例によって長くなったので 続く。


  1. 過去の記事では Jpsonicを使い始めたと書いたが、やはりバージョンアップするとDBスキャンでエラーになるのでAirsonicを常用することにした。 ↩︎

  2. ついてでにDDNSの無料サービスであるieServerがいつのまにかサービス終了していたので、 DDNS Now - 無料ダイナミックDNSサービスに移行した。 ↩︎

  3. Welcome画面とAirsonicの起動では上手くいったが、 次の記事に記載したとおり、root /var/www/html;がNextcloudで問題となる。 ↩︎