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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

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

nginx

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

yum

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

rpm

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

KVM

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

Q&A

解決済

4回答

2329閲覧

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

sekkati

総合スコア24

CentOS

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

nginx

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

yum

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

rpm

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

KVM

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

0グッド

0クリップ

投稿2018/07/25 07:11

編集2018/07/27 06:24

前提・実現したいこと

前提:

新人のプログラマです。常駐先で環境構築の業務をお願いされました。
私自身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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

over

2018/07/27 05:48

リポジトリ作成した上で実施しているのでしょうか?依存関係解決でインターネットを参照しているようなエラーですが。
sekkati

2018/07/27 05:52 編集

over様 エラー内容の貼り付けが間違えていました。申し訳ございません。
over

2018/07/27 05:54

本番と検証でアーキテクチャが違うとかありませんか?
sekkati

2018/07/27 05:59 編集

その点もわけがありまして、すぐに本文に追記いたします。言葉足らずで申し訳ないです。しばしお待ちください。
over

2018/07/27 06:05

yumdownloaderコマンドを実行したサーバとオフラインサーバのアーキテクチャは同一でしょうか?
sekkati

2018/07/27 06:10 編集

over様 はい、KVM上で作成したクローン上でネットワークをオフライン状態にして実験しているため、実行しているマシン自体は同じです。具体的にはオンライン状態でyumdownloaderして、取得したrpmファイルをscpでwindows側に引っ張ってきてDVDに移動。そのDVDをマウントし、ネットワークオフライン状態にしてyum locallinstall [rpmファイルパス]としています。
over

2018/07/27 06:16

後述コマンドで実行するとどうなります? > yum localinstall /media/UDF\ Volume/*.rpm
sekkati

2018/07/27 06:19 編集

over様 本文に追記いたします。
over

2018/07/27 06:29

やはり、外部にあるepelリポジトリが参照できないためエラーになっているようです。パッケージダウンロード後、リポジトリは作成しましたか?でも、rpmコマンドで全パッケージを指定してインストールした方が楽のような気がします。
sekkati

2018/07/27 06:34

over様 リポジトリは作成していません。rpmコマンドで全パッケージを指定してインストールするにはどのようにしたらいいでしょうか?
over

2018/07/27 06:37

本番環境への準備段階ですよね?であれば聞くより調べて理解すべきと考えます。「rpm コマンド」で調べれば、コマンドの内容は確認できます。パッケージの指定は*.rpmで指定すれば良いと思います。(ちゃんと意味は調べてください)
sekkati

2018/07/27 06:41

over様 調べもせず頼ってしまい申し訳ないです。自分的には # rpm -ivh /media/UDF\ Volume/*.rpmだと思っています。
sekkati

2018/07/27 07:09

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

2018/07/27 07:12

良かったです。
sekkati

2018/07/27 07:23

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

回答4

0

オフラインで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インストール時の依存性解決手順

投稿2018/07/27 07:30

編集2018/07/27 07:52
sekkati

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

投稿2018/07/27 07:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sekkati

2018/07/27 07:13

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

2018/07/27 07: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 07:41

インストール成功していたんですね。失礼しました。 インストール成功して、正常に動作しているならパッケージの不足は無いかと。 overさんが書いているように、yumコマンドはリポジトリの問題がありましたね。 そう考えると、最初からrpmコマンドをお勧めするべきでしたね。
sekkati

2018/07/27 07:58 編集

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

退会済みユーザー

2018/07/27 07:54

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

2018/07/27 08:06

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

0

投稿2018/07/25 22:41

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sekkati

2018/07/27 00:14

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

0

ベストアンサー

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

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

Bash

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

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

投稿2018/07/25 07:23

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sekkati

2018/07/25 07:46 編集

kazto様 ご解答ありがとうございます。 > インターネットにつながるCentOS これは踏み台になるサーバってことでしょうか?本番環境は良くわからないですが、仮想で使っているマシンのdbサーバとwebサーバ一緒っぽいです。マネージャーに確認したところ踏み台に出来るサーバやNAT等はないっぽいです(泣)
sekkati

2018/07/25 07:50 編集

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

2018/07/25 08:37 編集

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

2018/07/27 01:00

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

2018/07/27 01:02

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問