質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • CentOS

    2700questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • nginx

    837questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • yum

    153questions

    yumコマンドは、UNIX系OSのRPMパッケージのインストールなどを行うためのプログラムのことです。

  • KVM

    28questions

    KVM【Kernel-based Cirtual Machine】は、 Linux上で仮想化環境を利用するためのソフトウェアです。 1台のPC上で複数のOSを同時に動作させるために必要な制御を行う 仮想化環境の仕組みを提供します。

  • rpm

    27questions

    rpmコマンドは、UNIX系OSのroot権限でのみ利用可能なコマンドで、 RPMパッケージのインストールなどができます。

オフライン状態でnginxを組み込む方法について

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 350

sekkati

score 16

 前提・実現したいこと

前提:

新人のプログラマです。常駐先で環境構築の業務をお願いされました。
私自身WordpressをVPSにデプロイするような本を少し読んだ程度の知識しかありません。
お手柔らかにお願いします!

現在Apacheで動いているシステムに、nginxをリバースプロキシサーバとして差し込むことになりました。その際に本番環境(RHEL6.6)は外部ネットワークから切り離されてるらしく、CDに必要ファイルを焼いてインストールする方法の手順書を纏めなければならなくなりました。そのためにテストで使っていいと与えられたKVMの仮想マシン(CentOS6.7)で試行錯誤して頑張っています。

以前の質問:外部ネットワークに接続できない状態でのWebサーバーインストールについて

①KVMで作成した仮想マシンAでnginxをyum downloadする(オンライン状態)

# yumdownloader --resolve --destdir=/repo/packages_nginx/ nginx

② ①で取得したrpmファイルをWinSCPでwindows側に移動し、DVDに格納

GeoIP-1.6.5-1.el6.x86_64.rpm
GeoIP-GeoLite-data-2018.04-1.el6.noarch.rpm
GeoIP-GeoLite-data-extra-2018.04-1.el6.noarch.rpm
gd-2.0.35-11.el6.x86_64.rpm
geoipupdate-2.2.1-2.el6.x86_64.rpm
nginx-1.10.2-1.el6.x86_64.rpm
nginx-all-modules-1.10.2-1.el6.noarch.rpm
nginx-filesystem-1.10.2-1.el6.noarch.rpm
nginx-mod-http-geoip-1.10.2-1.el6.x86_64.rpm
nginx-mod-http-image-filter-1.10.2-1.el6.x86_64.rpm
nginx-mod-http-perl-1.10.2-1.el6.x86_64.rpm
nginx-mod-http-xslt-filter-1.10.2-1.el6.x86_64.rpm
nginx-mod-mail-1.10.2-1.el6.x86_64.rpm
nginx-mod-stream-1.10.2-1.el6.x86_64.rpm

③DVDをマウントし、仮想マシンAでyum localinstallを実行(オフライン状態)

# yum localinstall /media/UDF\ Volume/nginx-1.10.2-1.el6.x86_64.rpm

実現したいこと:

ネットワークから切り離された(オフライン)状態の仮想マシンにnginxをインストールしたいです。以前の質問で教えていただいたyum localinstallコマンドを実行したのですが、うまくインストールされません。

 発生している問題・エラーメッセージ

(略)
--> 依存性解決を終了しました。
エラー: パッケージ: nginx-1.10.2-1.el6.x86_64 (/nginx-1.10.2-1.el6.x86_64)
             要求: nginx-all-modules = 1.10.2-1.el6
            利用可能: nginx-all-modules-1.10.1-1.el6.noarch (epel)
                nginx-all-modules = 1.10.1-1.el6
エラー: パッケージ: nginx-1.10.2-1.el6.x86_64 (/nginx-1.10.2-1.el6.x86_64)
             要求: nginx-filesystem = 1.10.2-1.el6
            インストールしています: nginx-filesystem-1.10.1-1.el6.noarch (epel)
                nginx-filesystem = 1.10.1-1.el6
エラー: パッケージ: nginx-1.10.2-1.el6.x86_64 (/nginx-1.10.2-1.el6.x86_64)
             要求: nginx-filesystem = 1.10.2-1.el6
            利用可能: nginx-filesystem-1.10.1-1.el6.noarch (epel)
                nginx-filesystem = 1.10.1-1.el6
 問題を回避するために --skip-broken を用いることができません
 これらを試行できます: rpm -Va --nofiles --nodigest

 試したこと

追記(over様):

本番環境はRHEL6.6らしいのですが、私に与えられている実験用の環境はKVM上のクローンでCentOS6.7です。
そちらでarchコマンドを入力すると、x86_64でした。同環境でネットワークをオンオフしテストをしています。

# yum localinstall /media/UDF\ Volume/*.rpm
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
ローカルパッケージ処理の設定をしています
/media/UDF Volume/GeoIP-1.6.5-1.el6.x86_64.rpm を調べています: GeoIP-1.6.5-1.el6.x86_64
/media/UDF Volume/GeoIP-1.6.5-1.el6.x86_64.rpm をインストール済みとして設定しています
Loading mirror speeds from cached hostfile
エラー: Cannot retrieve metalink for repository: epel. Please verify its path and try again

追記(2018/07/27)

参考:インターネットと疎通がないマシンに yum で RPM をインストールする

上記サイトを参考にし、

# yum install nginx --downloadonly --downloaddir=/repo

コマンドを実行しても、/repoに落ちるrpmファイルはまったく同じでした。

GeoIP-1.6.5-1.el6.x86_64.rpm
GeoIP-GeoLite-data-2018.04-1.el6.noarch.rpm
GeoIP-GeoLite-data-extra-2018.04-1.el6.noarch.rpm
gd-2.0.35-11.el6.x86_64.rpm
geoipupdate-2.2.1-2.el6.x86_64.rpm
nginx-1.10.2-1.el6.x86_64.rpm
nginx-all-modules-1.10.2-1.el6.noarch.rpm
nginx-filesystem-1.10.2-1.el6.noarch.rpm
nginx-mod-http-geoip-1.10.2-1.el6.x86_64.rpm
nginx-mod-http-image-filter-1.10.2-1.el6.x86_64.rpm
nginx-mod-http-perl-1.10.2-1.el6.x86_64.rpm
nginx-mod-http-xslt-filter-1.10.2-1.el6.x86_64.rpm
nginx-mod-mail-1.10.2-1.el6.x86_64.rpm
nginx-mod-stream-1.10.2-1.el6.x86_64.rpm

 補足情報(FW/ツールのバージョンなど)

テスト用の仮想マシン:CentOS6.7
本番のマシン:RHEL6.6

# arch
x86_64

そもそも環境が違うから大丈夫なのかと思っています・・・

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sekkati

    2018/07/27 16:09

    over様 無事nginxをインストールすることが出来ました。ありがとうございました!

    キャンセル

  • over

    2018/07/27 16:12

    良かったです。

    キャンセル

  • sekkati

    2018/07/27 16:23

    yumdownloaderコマンドを教えていただいたkazuto様をベストアンサーにさせていただきました。over様、mkgrei様、umd0621様、ご協力していただきありがとうございました。

    キャンセル

回答 4

checkベストアンサー

+1

環境構築を行うマシンとは別に、インターネットにつながるCentOSがあると、作業が楽になります。
yumdownloaderを使うと、依存関係を解決しつつパッケージのダウンロードだけやってくれます。

https://access.redhat.com/ja/solutions/395763

yumdownloader --resolve --destdir=./packages/ nginx

(関係ありませんが、コードセグメントの解釈変だな・・・)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/25 16:45 編集

    kazto様 ご解答ありがとうございます。

    > インターネットにつながるCentOS

    これは踏み台になるサーバってことでしょうか?本番環境は良くわからないですが、仮想で使っているマシンのdbサーバとwebサーバ一緒っぽいです。マネージャーに確認したところ踏み台に出来るサーバやNAT等はないっぽいです(泣)

    キャンセル

  • 2018/07/25 16:50 編集

    追記:すみません。ちょっと変なな認識をしました!現在のテストで使っている環境はネットワークのオンオフ自在なので一度教えていただいたコマンドを実行し、パッケージを収集してみます。

    キャンセル

  • 2018/07/25 17:31 編集

    kazuto様 失敗してしまいました(泣) 詳細は追記(kazto様)に書かせていただきました!なんだかおC気がします。(エラーの数が減りました)

    キャンセル

  • 2018/07/27 10:00

    微妙に依存パッケージのバージョンが違っているんですね。。。
    ダウンロードした環境とインストールする環境のOSバージョンが異なるのがやはりネックになっている気がします。。。

    キャンセル

  • 2018/07/27 10:02

    kazuto様 ご解答ありがとうございます。
    なるほどです。もう一度試してみます。出来なそうな場合はOSのディスクからインストールする方法を考えてみたいと思います。

    キャンセル

+1

https://unix.stackexchange.com/questions/259640/how-to-use-yum-to-get-all-rpms-required-for-offline-use

参考になるとよいのですが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/27 09:14

    mkgrei様 返信が遅くなり申し訳ないです。
    お回答ありがとうございます。日本語訳かけてみて参考にさせていただきます!

    キャンセル

+1

  1. nginxをインストールしようとします。
  2. このパッケージが必要ですという依存関係のエラーが出ると思うので、そのパッケージをダウンロードしてきます。
  3. ダウンロードしてきたパッケージをインストールしようとします。
  4. 依存関係のエラーが出たら、そのパッケージをダウンロードしてきます。
  5. ダウンロードしてきたパッケージをインストールしようとします。

といった感じで、依存関係のエラーが出なくなるまで3~5の手順を繰り返せば依存関係のパッケージの洗い出しはできるかと。
かなり手間ですが、依存関係のエラーは再帰的に出力されないと思いますのでこれが確実だと思います。

最後にマニュアル化する際に、きれいにまとめればいいのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/27 16:13

    umd0621様 ご解答ありがとうございます。
    yumコマンドの偉大さを知りました。前回のご解答で教えていただいてた「RHELのOSのインストールディスク」の方が安全そうではあるので、そちらをまず聞いてみることにします。

    キャンセル

  • 2018/07/27 16:20

    先ほどインストール時につかったコマンド# rpm -ivh /media/UDF\ Volume/*.rpmでのインストールではすべての依存関係を解決できていないような気がします。(ここら辺が知識不足) なので洗い出し作業が必要になるということでしょうか?今回のエラーで言えば、要求: nginx-all-modules = 1.10.2-1.el6と要求: nginx-filesystem = 1.10.2-1.el6の二つをSearch the RPM repository on rpmfind.netで検索しそのパッケージを入れてインストールをすればよいという感じでしょうか。

    キャンセル

  • 2018/07/27 16:41

    インストール成功していたんですね。失礼しました。
    インストール成功して、正常に動作しているならパッケージの不足は無いかと。

    overさんが書いているように、yumコマンドはリポジトリの問題がありましたね。
    そう考えると、最初からrpmコマンドをお勧めするべきでしたね。

    キャンセル

  • 2018/07/27 16:46 編集

    umd0621様 ありがとうございます。本番環境がRHELなので、そこでアーキテクチャの違いやら何やらでまた苦労しそうです。また質問させていただくことがあるかもしれません。そのときは是非アシストお願いします(泣)

    キャンセル

  • 2018/07/27 16:54

    今回は検証用のCentOSで成功したということだったんですね。
    RHELの検証環境は無いとのことなので、本番時にもしもうまくいかなかったら今回のパッケージ洗い出し方法は役に立つかも。
    よっぽどそんなことは無いと思いますが。

    キャンセル

  • 2018/07/27 17:06

    umd0621様 おそらくアーキテクチャが違うんじゃないかなと思っています。そのアーキテクチャで、かつネットワークに繋がるマシンがなければ、洗い出し作業は必須になりそうですね・・・

    キャンセル

+1

 オフラインでnginxをインストールした手順

①RPMファイルをダウンロードするためディレクトリを作成

# mkdir /repo

②yumdownloderコマンドを使って必要になるRPMファイルをダウンロード

# yumdownloader --resolve --destdir=/repo/packages_nginx/ nginx

※yumdownloaderコマンドが実行できない場合下記コマンドでyum-utilsをインストール

# yum -y install yum-utils

③packagesの中に落ちたrpmファイルをDVDに入れる

windowsならwinscpを使ってローカルに落としてくる。又はscpコマンドを使用する。

④DVDをマウントしyum localinstallを使ってインストール(ここからオフライン前提)

# yum localinstall /media/UDF\ Volume/nginx-1.10.2-1.el6.x86_64.rpm

※yum localinstallコマンドでエラーが出る場合下記コマンドでnginxをインストール

# rpm -ivh /media/UDF\ Volume/*.rpm

依存性の欠如が起きた時の処理手順について調べてみたいと思います。
参考:yumもしくはrpmインストール時の依存性解決手順

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • CentOS

    2700questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • nginx

    837questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • yum

    153questions

    yumコマンドは、UNIX系OSのRPMパッケージのインストールなどを行うためのプログラムのことです。

  • KVM

    28questions

    KVM【Kernel-based Cirtual Machine】は、 Linux上で仮想化環境を利用するためのソフトウェアです。 1台のPC上で複数のOSを同時に動作させるために必要な制御を行う 仮想化環境の仕組みを提供します。

  • rpm

    27questions

    rpmコマンドは、UNIX系OSのroot権限でのみ利用可能なコマンドで、 RPMパッケージのインストールなどができます。