ubuntuにaptでインストールしたnginxをstableからmainlineに切り替える

公開:2016-12-23 16:53
更新:2017-07-29 13:18
カテゴリ:web,nginx

ガラクタIT創作活動へのモチベーションも回復してきたので、私が活動の場としているサイトやブログ・SNSの再構築に取り掛かることにした。

まずはWebサーバーのnginxをstableからmainlineのバージョンにアップデートすることにした。

作業はaptでバイナリインストールすることにした。すでに私はstableの1.10.1をインストールしている環境での作業になる。

nginxのバイナリパッケージのインストールは以下のサイトの手順に従った。

http://nginx.org/en/linux_packages.html#distributions

ubuntuでの手順は以下のとおりである。

  1. http://nginx.org/keys/nginx_signing.keyをダウンロード
  2. sudo apt-key add nginx_signing.key
  3. /etc/apt/sources.listに以下を追加
    deb http://nginx.org/packages/mainline/ubuntu/ codename nginx
    deb-src http://nginx.org/packages/mainline/ubuntu/ codename nginx
    (codenameには使用中のバージョンのものを入れる)
  4. apt-get update
  5. apt-get upgrade
  6. apt-get install nginx

これでmainlineバージョンのインストールができるはずなのだが、なぜかコケる。

.../nginx_1.11.7-1~trusty_amd64.deb を展開する準備をしています ...
nginx (1.11.7-1~trusty) で (1.10.1-3+trusty2 に) 上書き展開しています ...
dpkg: アーカイブ /var/cache/apt/archives/nginx_1.11.7-1~trusty_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/etc/default/nginx' を上書きしようとしています。これはパッケージ nginx-common 1.10.1-3+trusty2 にも存在します
dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました
処理中にエラーが発生しました:
 /var/cache/apt/archives/nginx_1.11.7-1~trusty_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

どうも前のバージョンが悪さしているようなので、以下の操作を実行。

  1. apt-get remove nginx-common
  2. apt-get autoremove

これで再度apt-get install nginxを実行したらインストールができた。

これで念のためHTTP/2 Testを実行したところALPN未サポートとメッセージ表示。これは確か前に経験したな。。

https://blog.sfpgmr.net/entry/2016/05/21/170719

なので、ソースパッケージからインストールすることした。その時に使ったconfigureのコマンドラインは以下の通り。--with-openssl=../openssl-1.0.2hが肝となる。ああ、opensslも最新バージョンにしとけばよかったな。。

./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed' --with-openssl=../openssl-1.0.2h

これでmainlineバージョンに変更することができた。