Edited at

Ubuntuに最新のnginxをインストールする

More than 1 year has passed since last update.

ubunutの初期リポジトリからapt-getでnginxをインストールすると、残念ながらだいぶ遅れたnginxがインストールされます。


2016/3/12 本稿の手順をansibleで書いた場合の参考例を追加しました。



マニュアルインストール編

最新版をインストールするには、以下の3つがあります。


  1. ソースからコンパイル

  2. PPAからインストール

  3. 公式nginxをリポジトリに追加

1はconfigureとか色々とやることが多いので2か3を使いたいところです。

また、PPAは正直何が混入されているかわからないので、最終的には3の公式の最新版を使いたい訳です。

ということで、今回は、3の方法でインストールする方法です。

# (1) nginxサイトが配布するPGPキーを追加

curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -

# (2) リポジトリを一覧に追加
VCNAME=`cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2` && sudo -E sh -c "echo \"deb http://nginx.org/packages/ubuntu/ $VCNAME nginx\" >> /etc/apt/sources.list"
VCNAME=`cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2` && sudo -E sh -c "echo \"deb-src http://nginx.org/packages/ubuntu/ $VCNAME nginx\" >> /etc/apt/sources.list"

# (3) アップデート後、nginxをインストール
sudo apt-get update
sudo apt-get install nginx


NOTE

(2)のリポジトリを追加するコマンド内にある"trusty"はお使いのOSに応じ、下表を参考に任意のOSコード名を設定してください。

上記コマンドでOSコード名を自動取得するように修正しました。OSのバージョンを気にせず、コピペでご利用いただけます。


OSバージョン
コード名

10.04
lucid

12.04
precise

14.04
trusty

14.10
Utopic

15.04
vivid

15.10
wily

16.04
xenial

16.10
Yakkety

17.04
Zesty


Ansible編

ansibleを使うとOSの情報が取得できるので以下のようなYMLファイルでインストールできます。ANYHOSTのところはよしなに書き換えてください。

ansible便利ですね。

- hosts: ANYHOST

become: yes
vars:
nginx_pgp_url: http://nginx.org/keys/nginx_signing.key
nginx_repository_url: http://nginx.org/packages/ubuntu/
tasks:
- name : Add official nginx PGP key
apt_key: url={{nginx_pgp_url}} state=present
- name : Add official nginx repository
lineinfile : >
dest=/etc/apt/sources.list
line='{{item}} {{nginx_repository_url}} {{ansible_distribution_release}} nginx'
with_items:
- deb
- deb-src
- name : Run apt-get update
apt: update_cache=yes
- name : Install nginx
apt : name=nginx state=present