CentOS6 を VMware Fusion5 で構築した際の作業まとめ
このエントリーの内容
- VMware Fusion5 を使用して Mac 上に CentOS6 の開発環境を構築
- そこに Mac の terminal.app から ssh 接続
- 開発環境における最低限の設定まわりを行う
1. CentOS 6.3(64bit 版) の取得
まずは、独立行政法人 理化学研究所 のミラーサイトから CentOS をダウンロード。
URL: http://ftp.riken.jp/Linux/centos/6.3/isos/x86_64/
2. VMware で新規仮想環境作成
今回は VMware Fusion5 で仮想環境を作成した。
上記でダウンロードした DVD1.iso をディスクイメージとして指定。
※ インストール時に作成するユーザーアカウント名を amaneshi1119 にしたと仮定して話を進める。
3. CentOS 最初期設定
a. 何はともあれソフトウェアを最新に
[amaneshi1119@localhost ~]$ su - [root@localhost ~]# yum update
b. SELinux 無効化
無効化
[root@localhost ~]# setenforce 0
無効化されたことを確認
[root@localhost ~]# getenfore Permissive
SELinux 設定ファイルで SELINUX の値を disabled に変更
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=disabled
c. セキュリティ対策
仮想環境上ではあるが通常の VPS でのサーバー構築時の備忘録として下記のセキュリティ対策を行った。
c-1. ssh のポート番号変更(ブルート・フォースアタック対策)
とりあえず 10022 に変更
[root@localhost ~]# vim /etc/ssh/sshd_config
Port 10022
c-2. 公開鍵認証設定(RSA暗号方式)
ホストOS(mac)で ssh-keygen を用いて作成
amaneshi1119-no-MacBook-Pro:~ amaneshi1119$ ssh-keygen -t rsa
生成された公開鍵(~/.ssh/id_rsa.pub)の中身をコピーし、
ゲストOS(CentOS)の /home/amaneshi/.ssh/ の下に authorized_keys というファイル名で公開鍵を保存
[amaneshi1119@localhost ~]# vim ~/.ssh/authorized_keys
chmod でファイルのパーミッションを変更
[amaneshi1119@localhost ~]# chmod 600 ~/.ssh/authorized_keys
c-3. 公開鍵認証以外でのログインを無効化
下記に記した各項目を設定していく
[root@localhost ~]# vim /etc/ssh/sshd_config
# 公開鍵認証設定 PubkeyAuthentication yes # 公開鍵認証許可 RSAAuthentication yes # RSA暗号方式での認証許可 AuthorizedKeyFile .ssh/authorized_keys # 秘密鍵ファイル名指定 # 禁止設定 PermitRootLogin no # root ログイン禁止 RhostsRSAAuthentication no # rhosts 認証禁止 PasswordAuthentication no # パスワード認証禁止 PermitEmptyPasswords no # 空文字列パスワード認証禁止 UsePam no # PAM 禁止 ChallengeResponseAuthentication no # チャレンジレスポンス認証禁止
sshd を再起動して設定反映
[root@localhost ~]# service sshd restart
c-4. iptables でファイアウォール設定
[root@localhost ~]# vim /etc/sysconfig/iptables
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
iptables を再起動して設定を反映
[root@localhost ~]# service iptables restart
c-5. su コマンドが使えるユーザーの限定化
# 作業ユーザーを wheel グループに属させる [root@localhost ~]# usermod -G wheel amaneshi1119 # wheel グループユーザーのみ su コマンドを使えるように設定 [root@localhost ~]# vim /etc/pam.d/su # 下記一行のコメントアウトを外して有効化 auth required pam_wheel.so use_uid # shadow パスワード機能設定ファイルにも wheel グループユーザーのみ su コマンドを使えるように設定 [root@localhost ~]# vim /etc/login.defs # 下記一行追加 SU_WHEEL_ONLY yes
c-6. wheel グループのユーザーに sudo 権限付与
[root@localhost ~]# visudo # 下記一行のコメントアウトを外して有効化 %wheel ALL=(ALL) ALL
4. CentOS タイムゾーン・時刻合わせ
a. タイムゾーンを日本に変更
[root@localhost ~]# cp -p /usr/share/zoneinfo/Japan /etc/localtime
b. ntp サーバーを設定
[root@localhost ~]# vim /etc/ntp.conf server -4 ntp.nict.jp server -4 ntp1.jst.mfeed.ad.jp server -4 ntp2.jst.mfeed.ad.jp # ntpd を再起動して設定を反映 [root@localhost ~]# service ntpd restart # chkconfig で自動起動の設定 [root@localhost ~]# chkconfig ntpd on # date コマンドで設定変更を確認 [root@localhost ~]# date
5. CentOS 日本語化
a. 日本語関連パッケージグループのグループインストール
[root@localhost ~]# yum -y groupinstall "Japanese Support"
b. システム文字セット変更
[root@localhost ~]# vim /etc/sysconfig/i18n # 変更 LANG="ja_JP.UTF-8"
c. MacBook が日本語キーボードなのでキーボード設定も変更
[root@localhost ~]# vim /etc/sysconfig/keyboard KEYTABLE="jp106" LAYOUT="jp"
d. 再起動して設定反映
[root@localhost ~]# reboot
6. CentOS ネットワーク設定
a. プライベートIPアドレスの固定
ホストOSの VMware の vmnet8(NAT通信用仮想ルータ)の dhcpd.conf 確認
amaneshi1119-no-MacBook-Pro:~ amaneshi1119$ vim /Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf
subnet 192.168.136.0 netmask 255.255.255.0 { range 192.168.136.128 192.168.136.254; option broadcast-address 192.168.136.255; option domain-name-servers 192.168.136.2; option domain-name localdomain; default-lease-time 1800; # default is 30 minutes max-lease-time 7200; # default is 2 hours option netbios-name-servers 192.168.136.2; option routers 192.168.136.2; }
仮に上記の場合だと、NAT で DHCP が自動で割り当てるレンジが
192.168.136.128〜192.168.136.254 とされているのでその範囲を避けて固定IPを決めればOK。
※ 下記 PDF の p.179 にある
「ホストオンリーネットワーク または NAT 構成で IP アドレスを指定」に詳細説明あり。
http://www.vmware.com/jp/pdf/server_vm_manual.pdf
今回は下記の設定で行ってみる
固定プライベートIP(末尾を好きなもので) | 192.168.136.11 |
---|---|
サブネットマスク | 255.255.255.0 |
デフォルトゲートウェイ(VMware の NAT デバイス) | 192.168.136.2 |
DNS(ルーターのIPアドレス) | 192.168.11.1 |
b. ゲストOS(CentOS)のネットワーク設定変更
# ifcfg-eth0 の内容を変更 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" TYPE="Ethernet" UUID="*******************" HWADDR="**:**:**:**:**:**" IPV6INIT="yes" NM_CONTROLLED="yes" ONBOOT="yes" BOOTPROTO="static" IPADDR="192.168.136.11" NETMASK="255.255.255.0" GATEWAY="192.168.136.2" DNS1="192.168.11.1"
※上記の変更点は下記2点
1. BOOTPROTO を dhcp から static に変更
2. それに伴い、それ以下 IPADDR, NETMASK, GATEWAY, DNS1 の設定を追加
# network を再起動して変更を反映 [root@localhost ~]# service network restart
以上で、以降ホストOSからゲストOSに ssh接続する際は、192.168.136.11 固定でアクセスできる。
これにて基本的な設定は完了。
7. 開発環境の基本的なパッケージインストールと設定まわり
a. gcc インストール
[root@localhost ~]# yum -y install gcc
b. tmux インストール
tmux が依存している libevent も併せてインストール
※ 最新の libevent を入れるためソースコンパイルで行う
まずは libevent
[root@localhost ~]# cd /usr/local/src/ [root@localhost ~]# wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz [root@localhost ~]# tar xvzf libevent-2.0.21-stable.tar.gz [root@localhost ~]# cd libevent-2.0.21-stable [root@localhost ~]# ./configure [root@localhost ~]# make & make install
次に tmux
[root@localhost ~]# cd /usr/local/src [root@localhost ~]# wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.7/tmux-1.7.tar.gz [root@localhost ~]# tar xvzf tmux-1.7.tar.gz [root@localhost ~]# cd tmux-1.7 [root@localhost ~]# ./configure [root@localhost ~]# make & make install
これで tmux を入れたので tmux を実行してみると下記のエラーが出た。
[root@localhost ~]# tmux tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
libevent-2.0.so.5 が無いと言われている。実際に ldd すると確かに not found 。
[root@localhost ~]# ldd /usr/local/bin/tmux linux-vdso.so.1 => (0x00007fff680a2000) libutil.so.1 => /lib64/libutil.so.1 (0x000000317b600000) libncurses.so.5 => /lib64/libncurses.so.5 (0x000000317ba00000) libevent-2.0.so.5 => not found librt.so.1 => /lib64/librt.so.1 (0x0000003170e00000) libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003172200000) libc.so.6 => /lib64/libc.so.6 (0x000000316fa00000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x000000317a200000) libdl.so.2 => /lib64/libdl.so.2 (0x000000316fe00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003170200000) /lib64/ld-linux-x86-64.so.2 (0x000000316f600000)
これを解決するためには、tmux の共有ライブラリパス設定ファイルを作成し、
libevent のライブラリが置かれているディレクトリのパスを明記。
[root@localhost ~]# vim /etc/ld.so.conf.d/tmux-x86_64.conf # 下記一行をファイル内に記述 /usr/local/lib # ldconfig して有効化 [root@localhost ~]# ldconfig # not found が解消されているか確認 [root@localhost ~]# ldd /usr/local/bin/tmux
あとは、適当にその他いくつか初めに入れたい物たちをインストールしていく作業。
あとで、諸々インストール&初期設定のスクリプトを作成して github 上で用意しておく。
2012年も今日から後半
昨年は、個人的にも本当にいろいろありまして、あの大地震のなか、転職したり子供が生まれたり、家を購入したりと、ばたばたしましたが、そんな昨年のばたばたを整理できずに始まったような感じの2012年。
その2012年も気づけば今日から後半の半年が始まりますね。
先月からは会社の開発チームのリーダーなどを任せられることになり、自分なりに必死にやっているわけですが、特に技術力の向上に力を入れたいですし、自分の開発に時間は取りにくくなっていますが、それでも少しでも時間を確保して作っていこうと思っています。