yumサーバの構築


Fedoraのインストールのページに書いたことだけど、Fedoraにはyumと呼ばれるプログラム管理をするシステムがあります。プログラムのアップデートを怠っていると、セキュリティー上好ましくないので、時々、yumを使ってプログラムのアップデートを行います。(yumはアップデート以外に新規インストールやプログラムの削除も行なえます。)
PCクラスタでは、それぞれのPCでアップデートをする必要があり、私の構築したPCクラスタでは、masterサーバのみ外部インターネットと繋がっているので、salveクライアントからは、修正されたプログラムを入手できません。そこで、materサーバが外部からダウンロードしてきた修正プログラムをクライアントに受け渡すyumサーバとしての役割も果たせるようにしました。

詳しくは、こちらのページを見て下さい。

マスターサーバにFTPサーバの役割を与えます。


 

パッケージマネージャー(Pirut)を用いるか、コマンド上でか「vsftpd」というプログラムをインストールします。
yum install vsftpd
インストール後、サービスの設定で起動時にvsftpdデーモンが立ち上がるように設定することをお忘れなく。コマンド上では
chkconfig vsftpd on
vsftpdのプログラム(デーモン)は、FTPサーバーとしてのサービスを提供するものです。計算した結果をFTP経由で自分のコンピュータにダウンロードしたりするのにも便利ですので、インストールすると良いでしょう。しかしながら、便利であることは、反面、危険を伴うことを意味します。インターネットを経由して、他のコンピュータから不正なアクセスを受ける危険性をはらんでいるのです。セキュリティーを考慮して(?)vsftpdの設定を行なっていきましょう。

vsftpdの設定ファイルは/etc/vsftpd/vsftpd.confに存在するので、このファイルの修正していきます。今回、使用した設定のポイントのみを抽出しますと

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
#
#以下の設定は、書き加えたものです。
use_localtime=YES
no_anon_password=YES
anon_root=/pub

yumサーバとして機能させるには、anonymous匿名でFTPを使える必要があり、anonymousでは/pubディレクトリーのみにアクセスできるようにしています(anon_root=/pubの部分)。通常のFTP(計算結果をダウンロード)する際は、パスワードを要求するようにno_anon_password=YESとも設定しています。
FTPサーバの設定は危険を伴いますので、一つの情報源だけの設定を信じないで、様々なページを見て、各自の自己責任での構築をお願いいたします。こちらへもどうぞ


では、yumのダウンロード先も変更して下さい。
例えば/etc/yum.repos.de/fedora-core.repoの設定は、
[core]
name=Fedora Core $releasever - $basearch
baseurl=ftp://master.localdomain/fedora/core/$releasever/$basearch/os/
[core-debuginfo]
name=Fedora Core $releasever - $basearch - Debug
baseurl=ftp://master.localdomain/fedora/core/$releasever/$basearch/debug/
[core-source]
name=Fedora Core $releasever - Source
baseurl=ftp://master.localdomain/fedora/core/$releasever/source/SRPMS/
などのように変更しました。master.localdomainの部分は、各自のマスターサーバのIPアドレス(192.168.1.1)かホスト名に変更して下さい。ポイント:yumのデータは/pub/fedora/core/5/x86_64/の中にダウンロードしているのですが、anonymousでFTPログインすると/pubの下に直接ルートされるので、master.localdomain/pub/fedora…と記述するのではなくmaster.localdomain/fedora…となります。


最後にインターネットで公開されているサイトからFedoraのアップデートファイルなどをダウンロードしてきます。この作業は定期的に行い、いつも最新の(セキュリティーホールの無い)プログラムを使うように心がけましょう。rsyncを使ってファイルのミラーリングができるはずなのですが、私はうまく使いこなせなかったので、lftpを使って行ないました。そのスクリプトファイルを紹介しておきます。パソコン初心者の自分が書いたスクリプトを公開することは、ある意味恥をさらしているような気もする(無知さを暴露すること)のですが、参考にしたり、コピー&ペーストでそのままつかってもらっても構いません。

#!/bin/sh

echo
echo "lftp automatic mirroring for Fedora"
echo
releasever=5
basearch=x86_64

PS3='which ftp server ? '
select lftphost in riken kdd jaist iij
do case $lftphost in
  riken)
   lftpserv="ftp.riken.jp"
   prelftp="/Linux/fedora";;
  kdd)
   lftpserv="ftp.kddilabs.jp"
   prelftp="/Linux/packages/fedora";;
  jaist)
   lftpserv="ftp.jaist.ac.jp"
   prelftp="/pub/Linux/Fedora";;
  iij)
   lftpserv="ftp.iij.ad.jp"
   prelftp="/pub/linux/fedora";;
  *)
   echo "invalid number, the script is finished"
   exit 1
 esac
 break
done

echo

PS3='Which packages do you want to mirror ? '
select packages in minimum normal all
 do case $packages in
  minimum)
   echo
   echo "The minimum packages are selected."
   echo
lftp <<END
open ${lftpserv}
cd ${prelftp}/core/${releasever}/${basearch}
lcd /pub/fedora/core/${releasever}/${basearch}
mirror -e -x iso/* -x debug/*
cd ${prelftp}/core/updates/${releasever}/${basearch}
lcd /pub/fedora/core/updates/${releasever}/${basearch}
mirror -e -x debug/*
exit
END
   ;;
  normal)
   echo
   echo "The packages without extra are selected."
   echo
lftp <<END
open ${lftpserv}
cd ${prelftp}/core/${releasever}/${basearch}
lcd /pub/fedora/core/${releasever}/${basearch}
mirror -e -x iso/*
cd ${prelftp}/core/updates/${releasever}/${basearch}
lcd /pub/fedora/core/updates/${releasever}/${basearch}
mirror -e
exit
END
   ;;
  all)
   echo
   echo "The all packages are selected."
   echo
lftp <<END
open ${lftpserv}
cd ${prelftp}/core/${releasever}/${basearch}
lcd /pub/fedora/core/${releasever}/${basearch}
mirror -e -x iso/*
cd ${prelftp}/core/updates/${releasever}/${basearch}
lcd /pub/fedora/core/updates/${releasever}/${basearch}
mirror -e
cd ${prelftp}/extras/${releasever}/${basearch}
lcd /pub/fedora/extras/${releasever}/${basearch}
mirror -e
exit
END
   ;;
  *)
   echo "invalid number. terminated."
   exit 1
 esac
 break
done

echo "mission completed!"
echo




back home next

inserted by FC2 system