Linux/RHEL6

Top/Linux/RHEL6

RHEL6を入れる

  • 基本サーバ構成にWebとかDBとかFTPとか入れた程度

NW設定

  • 原因がよくわからないけどeth0が立ち上がってこないので手動で設定をごりごりした
    • /etc/sysconfig/network とか /etc/sysconfig/network-scripts/ifcfg-ethX がそもそもできてなかったのでnetworkサービスが立ち上がらないかんじ
  • udevでhdaddrつかった管理が集約できるようなのでifcfgには書かなくていいっぽい
  • NetworkManagerというものがデスクトップ環境を入れると入っちゃうらしい。ifcfgでifに対して無効化はできる

  1. そもそもデバイスは生きてるの?
    cat /etc/udev/rules.d/70-persistent-net.rules
    
    • ここ見たらMACアドレスは拾えてたのでどうにかなりそう。名前はeth0になってた
  2. 設定ファイルかこう
    • 新規作成: /etc/sysconfig/network
       NETWORKING=yes
       HOSTNAME=mx130s1
       GATEWAY=192.168.1.1
      
    • 新規作成: /etc/sysconfig/network-scripts/ifcfg-eth0
       DEVICE=eth0
       #NM_CONTROLLED=no
       ONBOOT=yes
       BOOTPROTO=dhcp 
       #BOOTPROTO=static
       #IPADDR=192.168.1.100
       #NETMASK=255.255.255.0
      
      • のちのち使いそうな設定もコメントアウトで書いておく
  3. 再起動
     service network restart
    
  4. あっさりつながったのでコメントアウト行をコメントじゃなくしてBOOTPROTOをstaticにしてもういちど再起動して完了

無事に動き出したあと

  • ユーザ追加
  • sudoersいじる
  • sshでrootログイン不可に
    • /etc/ssh/sshd_config
       PermitRootLogin no
      
  • iptables編集
    • 80と443解放
  • DNS設定(これ手動でやらなきゃだめなんだっけ? 名前解決が一切できなかったので調べたらこれが真っ白だった)
    • /etc/resolv.conf
       nameserver 192.168.1.1
      
  • ntpクライアント設定
    • まず合わせる
       ntpdate ntp.nict.jp
      
    • /etc/ntp.conf
       server ntp.nict.jp
       server ntp.jst.mfeed.ad.jp
       server ntp-tk01.ocn.ad.jp
      
    • 起動する
       chkconfig ntpd on
       service ntpd start
      
  • httpdの設定
    • /var/www/htdocs と /var/www/ssldocs にした
  • squidいれた
  • podcatcherをcronでぶんまわす設定
  • DiCEによるダイナミックDNSの自動設定
  • hostsに自分追加しとく
     192.168.1.100   mx130s1
    

yumリポジトリの設定(DVDの中身を使う)

  1. 適当なところに/dev/dvdをマウント
  2. 中身をコピー。どのrepodataからもディスク直下のPackageにリンクが貼られてるだけのようなのでPackageさえコピーすればrpmは全部はいる。時間かかる
  3. 付録DVDのPackageの中にも少しあるのでつっこもう
  4. createrepoしてrepodata作らせて、設定ファイルをつくればおわり

yumリポジトリの設定(CentOSのやつをむりくり)

  • まともにいろいろインストールしようとするとこれやらないとほしいのぜんぜん引っ張ってこられないのでやりましょう
  • 設定ファイルはこんなん。
    • /etc/yum.repo.d/CentOS-Base.repo
       [base]
       name=CentOS-6 - Base
       mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os
       #baseurl=http://mirror.centos.org/centos/6/os/$basearch/
       gpgcheck=1
       gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
       
       #released updates
       [updates]
       name=CentOS-6 - Updates
       mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=updates
       #baseurl=http://mirror.centos.org/centos/6/updates/$basearch/
       gpgcheck=1
       gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
       
       #packages used/produced in the build but not released
       #[addons]
       #name=CentOS-6 - Addons
       #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=addons
       ##baseurl=http://mirror.centos.org/centos/6/addons/$basearch/
       #gpgcheck=1
       #gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
       
       #additional packages that may be useful
       [extras]
       name=CentOS-6 - Extras
       mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=extras
       #baseurl=http://mirror.centos.org/centos/6/extras/$basearch/
       gpgcheck=1
       gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
      
      • 基本的にはCentOSのをそのまま。ただし $releasever はそのままだと『6Server』って評価されてミラーリストが見つからなくなるので、そこだけ決め打ち。RHEL5を入れた場合は5にしないとだめ

yumリポジトリの設定(他のサービスを使う)

  • rpmfusion、epel、rpmforgeくらい?
  • だいたいどこのリポジトリも、リポジトリ追加用のrpmを配布してるのでwgetしてくるなり何なりすればすぐできる
  • 追加しすぎるとアレかも。このへんまだよくわかんない
  • epelはRedHatさんがやってるからだいじょうぶかな。rpmfusionとrpmforgeはどこがやってるのかちゃんと調べてない
  • マニアックなことをやらなければだいたい上のCentOSのリポジトリの中身で事足りるので、全部enabled=0にするのがいいんじゃないかしら。必要なときに yum --enablerepo=hoge するかんじで

yum系のとりあえずいれとけ的アレ

  • ミラーリストで複数のミラーがあるときにいちばん早いところからとってきてくれるようにする
     yum install yum-fastestmirror
    
    • これ入れないとたまたま遅いミラーにあたったときに不幸になる

repoいじったら

  • 一回全部消してから再取得する
     yum clean all
     yum list hoge
    

参考

podcatcherいれる

  • rhelのリポジトリにあるとは思わなんだ
     yum install podcatcher
    
    • 一緒にrubyも入ってくるよ

termtterいれる(というかまずgemを入れる)

  • どういう順番でいれたかわすれたけどだいたいこんなかんじ。CentOSのリポジトリちゃんを追加済みなら引っ張ってこられそう。rhelリポジトリのみでがんばろうとしてgemのsetup.rb走らせるとかしちゃったけどリポジトリ追加すれば大丈夫です
     yum install ruby-devel #いらないかも
     yum install irb #いらないかも
     yum install rubygems
     gem install rdoc-data #いらないかも 
     rdoc-data --install
     gem install termtter
    

samba入れる

  • インストールする
     yum install samba
    
  • 設定ファイルをいじる
    • http://centossrv.com/samba.shtml
    • ホームディレクトリへのスクリプトはぼくの環境(ユーザ数1)では必要なかったので走らせてない
    • ごみばこも別に要らないや
  • iptablesいじる。rejectの前に追加しないと意味がない。445は必要か不明
     -A INPUT -p udp -m udp --dport 137 -j ACCEPT
     -A INPUT -p udp -m udp --dport 138 -j ACCEPT
     -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
     -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT
    
  • サービス起動
     service smb start
    
  • windowsからアクセス
     \\192.168.1.100
    
  • 見えたけど書きこめない。ディレクトリによっては開けない……
  • setenforce 0 してみると問題なく動く。SELinuxか!!!11 このやろう!!1
    • でもdisabledにして使うのは屈辱なので設定をがんばる
    • 設定項目を眺める
       getsebool -a | grep samba
      
    • それっぽいのをonにする。-Pつけないと再起動したときデフォルトに戻る
       setsebool -P samba_enable_home_dirs 1
      
    • これで ~/samba へは正常にアクセスできた。でも /home/samba(publicのやつ)がまだ
    • ラベルみる。今は home_root_t だって。あとマニュアルとかみる
       ls -Z /home
       man selinux
      
    • samba_selinuxっていう項目があるみたいなのでみてみる
       man samba_selinux
      
    • If you want to share files other than home directories, those files must be labeled samba_share_t. ってかいてある。これだヽ( ・∀・)ノ
       chcon -t samba_share_t /home/samba
      
    • ここまでで動くようにはなった。manにはあといろいろしろみたいなこと書いてあるけどとりあえずこれでいいや。たぶんすでにファイルを置いてある場合、これらのファイルも同じポリシにするにはrestoreconが必要なんだろう。たぶん。で、restoreconで呼ばれるポリシを設定しておかないといけないってことかな。
    • 一応手順だけメモしとく。
       yum install policycoreutils-python
       #semanageコマンドはこれ入れないと使えなかった。手動で /etc/selinux/targeted/contexts/files/file_contexts.homedirs をいじってもよさそうだけど楽そうなのでsemanageを入れる。
       semanage fcontext -a -t samba_share_t "/home/samba(/.*)?"
       # file_contexts.local に /home/samba(/.*)? system_u:object_r:samba_share_t:s0 が追加される
       restorecon -R -v /home/samba/
      
  • samba-swat っていうのが便利らしい。ブラウザからsambaの設定いじれるそうな。yumで入る。
     yum install samba-swat
    
    • ポートは901番を使うようなのであける。

VNC環境

  • リモートでGNOMEのデスクトップ環境が使えるようにする
  • 意味はあるのかは謎。でもKVMのマネージャとかはGUIのが楽そうだし……
  • ポートフォワードしないとVNCの接続は暗号化されない。このままの設定で使うならリモートサイトからはつなげないほうがよい
  • ひとまずいんすこ
     yum install vnc-server
    
  • ルートユーザのVNC環境をつくる(あぶない)
     su -
     vncserver
    
    • VNC接続用のパスワード入れる
  • ポートあける。5900+ディスプレイ番号が使用ポート。:1なら5901。
  • SELinuxはそのままで平気だった
  • windowsからつなぐ
    • クライアントはてきとうにこれ: http://www.realvnc.com/
    • 接続先は [<ip addr>:<display num>]
    • チェックボックスだけ並んだへんな画面がでてくればとりあえず疎通確認は完了
  • GNOMEのデスクトップ環境使えるようにする
     yum groupinstall "X Window System" "Desktop" "Japanese Support"
    
    • どのリポジトリを参照するかにもよるけど、centosのmirrorが有効な場合はそっちからとってきちゃうっぽく、壁紙やらアイコンやらがcentos仕様になる
  • 一緒にインストールされるNetworkManagerを殺す(サーバ用途には適さない)
     service NetworkManager stop
     chkconfig NetworkManager off
    
    • /etc/resolv.confが初期化されるっぽいのでnameserver再指定必要かも
    • ifcfg-eth0に NM_CONTROLLED=no を記述するとインタフェイス単位でNM無効化できるけどなんとなく悪さしそうで邪魔なので全部殺すことにした
  • 設定するよ。解像度とか
    • /etc/sysconfig/vncservers
       VNCSERVERS="1:root"
       VNCSERVERARGS[1]="-geometry 1280x960"
      
  • 接続時にGNOMEデスクトップが立ち上がるようにするよ
    • /.vnc/xstartup

       #twm &           #この行をコメントアウト
       exec gnome-session   # 追加
      
  • 日本語環境にする
    • LANG環境変数にしたがってローカライズされるので.bashrcあたりにLANGを放り込めば良い
       export  LANG=ja_JP.UTF-8
      
    • ただし通常の環境でも日本語になっちゃって、フォント設定を変えないと化けるようになるよ

フォント

  • /usr/share/fonts 配下に入ってる
    • ユーザ単位のは ~/.fonts 配下
  • フォントキャッシュのクリア
     fc-cache -fv
    
  • サービス再起動させて接続確認。英語環境だけどね!
     service vncserver restart
    
    • 日本語にするならxstartupに言語情報わたす
       #twm &
       LANG=ja_JP.utf-8
       export LANG
       exec gnome-session
      
  • 必要に応じてchkconfigで自動起動に登録

KVM環境とか

  • コマンドラインでやる方法もあるんだろうけどまずは触ってみることを目標にVNC環境からマネージャ立ち上げて追加する
  • 仮想マシンつくるのは簡単なので割愛。ネットワークもまずは適当でいいや
  • ひとまずUbuntu 11.04 Serverをぶちこむ。インストール時にOpenSSHだけは追加するようにしないと詰むので注意
  • 起動後、ifconfigでIPを見て、ホストOSからSSHする
    • ゲストOSを直接触ろうとしてもキーマップがおかしくてアンダスコアとかパイプとか打てない。コロンはなぜかShift+7。もはや英字キーボードでもない……
      • キーマップ変えるのはこれでも可能なはずなんだけど変更されないのであきらめた
         sudo apt-get console-data
         # この後、いちばん上(化けてる)→qwerty→Japanese→PC100と選択
         # 設定やりなおすときは sudo dpkg-reconfigure console-data
         # dpkg-reconfigure console-setupでキーボードの設定出るはずなんだけど出ないし。なんだこれ
        
      • うぶんつはインストール時につくったユーザはsudoが何もしなくても使えるよ(仕様)
    • デフォルトだと仮想ネットワークは 192.168.122.0/24に入る
  • 一般ユーザから su - できるようにrootにパスワード設定する(デフォルトだと設定されていないので一般ユーザからいきなり su - できない)
     sudo su -
     passwd
    
  • ネットワーク設定いじる。固定IPにする
    • /etc/network/interfaces
       auto eth0
       #iface eth0 inet dhcp
       iface eth0 inet static
       address 192.168.122.100
       netmask 255.255.255.0
       gateway 192.168.122.1
      
    • 再起動
       /etc/init.d/networking restart
      
  • rootログインやめる
    • /etc/ssh/sshd_config
       PermitRootLogin no #すでにyesの行があるのでnoに変える
      
  • 192.168.122.0/24 から 192.168.1.0/24 へのルーティングはどこでやるんかね。仮想ブリッジとか使うっぽいけどまだよくわかってないので調べる。192.168.1.0/24から直接仮想マシンにsshはれると便利だからそうしたい

NFSでもつくる

  • ホストOSにリポジトリを立てて、ゲストOSからそこにアクセスさせる
  • rhel6でcreaterepoしたリポジトリにrhel5からアクセスしたらchecksumエラー出た。互換性の問題があるとかいう話
    • httpでアクセスさせると外部にも公開されちゃってアクセス制限がめんどうくさいし、ゲスト側からcreaterepoもできない
    • 仮想環境だしNFSでも問題は少なそうなのでそうする。せっかくなのでv4を導入
  • /etc/idmapd.conf
    • NFSv4のデーモンの設定ファイルらしい。サーバ側とクライアント側で同じ設定にする必要があるらしい
    • 中でしか使わないから適当に。rhel6側では下をコメントアウトしてドメインを変更。rhel5側ではデフォルトでいろいろ書いてあったのでひとまずそのまま。ドメイン名だけ統一させる
       Domain = local.domain.edu
       Nobody-User = nobody
       Nobody-Group = nobody
      
  • exportさせる
    • /etc/exports
       /var/yum   192.168.1.1/24(rw,no_root_squash,fsid=0)
      
      • rootでもいじりたかったのでno_root_squash
      • fsid=0はnfs4固有の。クライアントからマウントポイントがルートとして見えるようになる。上の例では、サーバの/var/yumがクライアントから見ると<server>:/ に対応する
    • 反映
       exportfs -r
      
  • サービスを走らせる
     service rpcidmapd restart
     chkconfig rpcidmapd on
     service nfs restart
     chkconfig nfs on
    
  • ポートあける
    • NFSv4は使うポートが固定でTCPの2049
       iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
      
  • マウントする
     mkdir /var/yum
     mount -t nfs4 <server>:/ /var/yum
    

P2V して ESXi に乗せる

  • Converter 5 で活性 P2V
    • 非サポートだし 99% で失敗するけど気にしない
      • http://kb.vmware.com/kb/2007355
      • これまでの Linux と違って /etc/modprobe.conf がないからバッチでいじれなくて落ちてる
      • modprobe.conf いじって initrd を作りなおす(mkinitrd)のがこれまでの Linux P2V の定石。RHEL 6 はいろいろおりこうになって、その必要がなくなった。udev ベースで勝手にいろいろ認識してうまいことやってくれる
  • P2V 後の処理
    • SELinux を無効にしていた場合は何もしないでも動く…… と思う
    • SELinux が有効な場合、relabel しないとログインできない?(ログイン画面までは起動するけど root でも誰でも入れない)
      • シングルユーザモードで起動して /etc/sysconfig/selinux の中を disabled に変更、再起動して、変更を元に戻して、再起動したら勝手に relabel が走ってログインできるようになった
      • setenforce で無効化して有効化して再起動でも良いのかも。fixfiles relabel コマンドでも良いのかもしれない。試してない

P2V 後に失敗する場合の確認部分

  • grub.conf の kernel 行に rd_LVM_LV で LVM のボリュームが指定されていないか
    • Converter の場合は LVM がほぐされるので指定してあるままだと kernel panic
  • fstab に LVM をマウントする行が残っていないか
    • Converter の場合は LVM がほぐされるので UUID 指定(blkid /dev/hoge で確認可)やら /dev/hoge 直接指定やらに書き換える

NIC の入れ替え

元の物理サーバで eth0 が動いていたとして、それを Converter の P2V で持ってくると、新しい仮想 NIC は eth1 にくっついてくる。要するに物理のときのインタフェイスがゴミのまま残ってきもちわるい。eth1 の設定ファイルを書けばいいんだけど、eth0 の設定ファイルをそのまま流用したいので直す。

RHEL 6 は modprobe.conf でのモジュール読み込みではなくて udev がいろいろ勝手にがんばる。/etc/udev/rules.d/ 配下の設定ファイルで自動認識されて eth* に割り当てられるので、そこをいじる。いじったらモジュールを再読み込みさせる。

  • /etc/udev/rules.d/70-persistent-net.rules
    • 変更前
      # PCI device 0x14e4:0x1692 (tg3)
      SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:19:99:a4:f3:3e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
      
      # PCI device 0x8086:0x100f (e1000)
      SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ea:f1:dc", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
      
      # PCI device 0x15ad:0x07b0 (vmxnet3)
      SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:b3:e9:50", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
      
  • 変更後
    # 要らないデバイスをコメントアウトか削除
    ## PCI device 0x14e4:0x1692 (tg3)
    ##SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:19:99:a4:f3:3e", ##ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    ##
    ## PCI device 0x8086:0x100f (e1000)
    ##SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ea:f1:dc", ##ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
    
    # NAME を eth0 に書き換え
    # PCI device 0x15ad:0x07b0 (vmxnet3)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:b3:e9:50", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    
  • モジュールの再読み込みとサービスの再起動
    # サービスの停止
    service network stop
    
    # モジュールのアンロード
    rmmod vmxnet3
    
    # モジュールのロード
    modprobe vmxnet3
    
    # サービスの開始
    service netework start
    

Last-modified: 2012-06-03 (日) 15:43:52