EC2にyumでNginxをインストールしようとしたらできなかった話


EC2インスタンスを作成したときにをNginxをインストールしようとしたら
インストール方法が思ってたのと違ったというお話になります。

3行で

  • Amazon Linux 2(AL2)だったからyumでNginxが提供されてなかった
  • Extrasリポジトリで提供されるNginxをインストールした
  • Nginxを起動しブラウザ表示できた

Nginxをインストールする

linuxならyumでインストールだよなって事でインストールを試みる

$ sudo yum update
$ sudo yum install nginx
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
パッケージ nginx は利用できません。
エラー: 何もしません


nginx is available in Amazon Linux Extra topic "nginx1.12"

To use, run
# sudo amazon-linux-extras install nginx1.12

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras

なんだ…と…!?
どうやら、AL2だとyum向けパッケージが提供されていないようです。

ということでエラーメッセージにもある通りExtrasレポジトリで提供されるNginxをインストールしましょう

$ sudo amazon-linux-extras install nginx1.12

完了しました!
  0  ansible2                 available  [ =2.4.2 ]
  1  emacs                    available  [ =25.3 ]
  2  memcached1.5             available  [ =1.5.1 ]
  3  nginx1.12=latest         enabled    [ =1.12.2 ]
  4  postgresql9.6            available  [ =9.6.6  =9.6.8 ]
  5  postgresql10             available  [ =10 ]
  6  python3                  available  [ =3.6.2 ]
  7  redis4.0                 available  [ =4.0.5  =4.0.10 ]
  8  R3.4                     available  [ =3.4.3 ]
  9  rust1                    available  \
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2 ]
 10  vim                      available  [ =8.0 ]
 11  golang1.9                available  [ =1.9.2 ]
 12  ruby2.4                  available  [ =2.4.2  =2.4.4 ]
 13  nano                     available  [ =2.9.1 ]
 14  php7.2                   available  [ =7.2.0  =7.2.4  =7.2.5 ]
 15  lamp-mariadb10.2-php7.2  available  \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5 ]
 16  libreoffice              available  [ =5.0.6.2_15 ]
 17  gimp                     available  [ =2.8.22 ]
 18  docker=latest            enabled    [ =17.12.1  =18.03.1 ]
 19  mate-desktop1.x          available  [ =1.19.0  =1.20.0 ]
 20  GraphicsMagick1.3        available  [ =1.3.29 ]
 21  tomcat8.5                available  [ =8.5.31 ]

nginx1.12がenabledになってますね。
(dockerは入れたつもりがないですがenabledとなってますけどまぁ良いでしょう)

バージョンの確認も問題なくできますね。

$ nginx -v
nginx version: nginx/1.12.2

Nginxの起動確認

Nginxを起動しデフォルトページをブラウザで確認します

Nginxを起動

Nginxを起動しましょう。念の為に起動確認もします。

# 起動前確認
$ ps aux | grep nginx
ec2-user 32469  0.0  0.0 119484   980 pts/0    S+   02:52   0:00 grep --color=auto nginx

# 起動
$ sudo service nginx start
Redirecting to /bin/systemctl start nginx.service

# 起動を確認
$ ps aux | grep nginx
root     32491  0.0  0.2 123740  2184 ?        Ss   02:52   0:00 nginx: master process /usr/sbin/nginx
nginx    32492  0.0  0.3 124196  4000 ?        S    02:52   0:00 nginx: worker process
ec2-user 32494  0.0  0.0 119484   936 pts/0    S+   02:53   0:00 grep --color=auto nginx

起動後にnginxが表示されてるのでokですね。

Nginxのデフォルトページをブラウザで確認

AWSのEC2コンソール > インスタンスを開いて起動中のインスタンスの「IPv4 パブリック IP」をコピーします。

ブラウザからインスタンスのパブリックIPにアクセスして下記のような画面が表示されれば確認完了
http://自分のインスタンスパブリックIP

おまけ

インスタンス立ち上げるたびにNginxを起動するのは面倒なので自動起動させると楽です

$ sudo chkconfig nginx on