Virtual Machine基本設定
==Dockerコンテナの場合は、第6.5章のみ実行すること。==
1.CentOS6.6(Final)のインストール
1.1 Minimal Instration Discを使う。
/Users/soushi/OneDrive/ISO/CentOS-6.6-x86_64-
minimal.iso
2.ネットワーク周辺設定
2.0 VMWareの設定画面で、ネットワークをShare with my Macにする。
2.0.1 VMWare->Preferences

2.0.2 Share with my Macを選択

2.1 各VMのネットワーク設定画面で、ネットワークをShare with my Macにする。
2.1.1
2.1 Network Managerをオフにする。
※エラーが出るはず。この場合、追加の設定は不要。
chkconfig --list NetworkManager
# > error reading information on service NetworkManager: No such file or directory
設定が必要な場合、下記コマンドを実行
service NetworkManager stop
chkconfig NetworkManager off
service network restart
cat /etc/sysconfig/network-scripts/ifcfg-eth0 | sed -i 's/NM_CONTROLLED=no/NM_CONTROLLED=yes/g'
2.2 IPアドレス/ホスト名/ドメイン名の設定
/etc/sysconfig/network-scripts/ifcfg-eth0を編集する。
DEVICE=eth0
ONBOOT=yes
HWADDR=VMのネットワーク設定->Advanced option
IPADDR=131.113.102.219
NETMASK=255.255.255.128
GATEWAY=131.113.102.129
NAMESERVER=131.113.102.130
BROADCASTADDR=131.113.102.255
HOSTNAME=g2vm1
DOMAINNAME=yamanaka.ics.keio.ac.jp
sed -i -e '/BOOTPROTO=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "BOOTPROTO=static" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/BOOTPROTO=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "BOOTPROTO=static" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/IPADDR=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "IPADDR=$IPADDR" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/NETMASK=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "NETMASK=$NETMASK" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/GATEWAY=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "GATEWAY=$GATEWAY" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/BROADCAST=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "BROADCAST=$BROADCASTADDR" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/IPV6INIT=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/PEERDNS=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "PEERDNS=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/DOMAIN=.*/d' /etc/sysconfig/network-scripts/ifcfg-eth0;
echo "DOMAIN=$DOMAINNAME" >> /etc/sysconfig/network-scripts/ifcfg-eth0;
sed -i -e '/domain.*/d' /etc/resolv.conf;
sed -i -e '/search.*/d' /etc/resolv.conf;
echo "search $DOMAINNAME" >> /etc/resolv.conf;
sed -i -e '/nameserver.*/d' /etc/resolv.conf;
echo "nameserver $NAMESERVER" >> /etc/resolv.conf;
sed -i -e '/NETWORKING=.*/d' /etc/sysconfig/network;
echo "NETWORKING=yes" >> /etc/sysconfig/network;
sed -i -e '/HOSTNAME=.*/d' /etc/sysconfig/network;
echo "HOSTNAME=$HOSTNAME.$DOMAINNAME" >> /etc/sysconfig/network;
sed -i -e '/127\.0\.0\.1.*/d' /etc/hosts;
echo "127.0.0.1 $HOSTNAME.$DOMAINNAME $HOSTNAME localhost.localdomain localhost" >> /etc/hosts
sed -i -e '/\:\:1.*/d' /etc/hosts
echo "::1 $HOSTNAME.$DOMAINNAME $HOSTNAME localhost.localdomain localhost" >> /etc/hosts
reboot;
3 設定値の確認
3.1 ホスト名・ドメイン名を確認
※domainnameは(none)でOK。この設定値は不要となった。
hostname
# >vm1.soushi.jp
hostname -d
# >soushi.jp
ifconfig
4 OpenSSHの導入
4.1 yumのアップデート
yum update
yum check-update
yum -y install openssh-clients
4.2 ユーザーsoushiを追加する
こちらのマニュアルを参照
4.2.2 鍵認証接続をテストします。
※ローカル端末で実行
ssh soushi@$server
exit
4.4 SSHでのログインを鍵認証のみ許可する
SSH2による接続のみ許可
sudo sed -i -e 's/^Protocol/#Protocol/g' /etc/ssh/sshd_config
sudo sed -i -e '/^#Protocol/a Protocol 2' /etc/ssh/sshd_config
#### RSA公開鍵による認証
sudo sed -i -e 's/^RSAAuthentication/#RSAAuthentication/g' /etc/ssh/sshd_config
sudo sed -i -e '/^#RSAAuthentication/a RSAAuthentication yes' /etc/ssh/sshd_config
#### rhostsでの認証を禁止
sudo sed -i -e 's/^RhostsRSAAuthentication/#RhostsRSAAuthentication/g' /etc/ssh/sshd_config
sudo sed -i -e '/^#RhostsRSAAuthentication/a RhostsRSAAuthentication no' /etc/ssh/sshd_config
#### パスワードでの認証を禁止(公開鍵による認証のみにする)
sudo sed -i -e 's/^PermitEmptyPasswords/#PermitEmptyPasswords/g' /etc/ssh/sshd_config
sudo sed -i -e '/^#PermitEmptyPasswords/a PermitEmptyPasswords no' /etc/ssh/sshd_config
sudo sed -i -e 's/^PasswordAuthentication/#PasswordAuthentication/g' /etc/ssh/sshd_config
sudo sed -i -e '/^#PasswordAuthentication/a PasswordAuthentication no' /etc/ssh/sshd_config
#### チャレンジ/レスポンス認証を無効化する
sudo sed -i -e 's/^ChallengeResponseAuthentication/#ChallengeResponseAuthentication/g' /etc/ssh/sshd_config
sudo sed -i -e '/^#ChallengeResponseAuthentication/a ChallengeResponseAuthentication no' /etc/ssh/sshd_config
#### 設定を反映
sudo service sshd restart
(オプション)VMware ESXi上の仮想マシンの場合、下記を実行してMACアドレスの値を適切な値に書き換えること。
1 ローカルで実行します。
scp ~/OneDrive/Scripts/ConfigureMACaddressForVMsOnESXi.sh root@$IPADDR:~/vmwarenetrewrite
2 VMに接続します。
ssh -i ~/OneDrive/.ssh/id_rsa root@$IPADDR
3 設定を書き込みます。
==(次回の再起動時に適切なMACアドレスが設定されます。)==
chmod +x /root/vmwarenetrewrite
echo "/root/vmwarenetrewrite" >> /etc/rc.d/rc.local
(オプション)必要に応じて、rootでのログインを禁止します。
#### rootでの認証を禁止
sudo sed -i -e 's/^PermitRootLogin/#PermitRootLogin/g' /etc/ssh/sshd_config
sudo sed -i -e '/^#PermitRootLogin/a PermitRootLogin no' /etc/ssh/sshd_config
5 実験用設定
5.2 ipv6, iptables, SELINUXを無効にする。
sudo echo 'options ipv6 disable=1' > /etc/modprobe.d/disable-ipv6.conf
sudo service iptables stop
sudo chkconfig iptables off
sudo chkconfig ip6tables off
sudo sed -i -e 's/^SELINUX=/#SELINUX=/g' /etc/selinux/config;
sudo sed -i -e '/^#SELINUX/a SELINUX=disabled' /etc/selinux/config;
sudo setenforce 0
6 開発環境の導入
==※rootユーザーで行う。==
6.1 環境変数を設定
※/etc/profileに、LANGとLC_ALLの環境変数を書き込んでおく。
sudo sed -i "s/^\(LANG.*\)/#\1/g" /etc/sysconfig/i18n
sudo echo 'LANG=en_US.utf8' >> /etc/sysconfig/i18n
sudo echo 'LC_CTYPE=en_US.utf8' >> /etc/sysconfig/i18n
sudo echo 'LC_NUMERIC="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_TIME="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_COLLATE="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_MONETARY="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_MESSAGES="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_PAPER="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_NAME="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_ADDRESS="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_TELEPHONE="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_MEASUREMENT="en_US.utf8"' >> /etc/sysconfig/i18n
sudo echo 'LC_IDENTIFICATION="en_US.utf8"' >> /etc/sysconfig/i18n
6.2 Cコンパイラおよびその他ツールを導入
-
IPv6のSingle Request Reopenを有効にします。理由はこちら
-
最新バージョン以外のCentOSでは、下記を行うこと。
sudo sed -i -e "s|mirror\.centos\.org/centos/\$releasever|vault\.centos\.org/6.6|g" /etc/yum.repos.d/CentOS-Base.repo
sudo sed -i -e "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo
echo 'options single-request-reopen' >> /etc/resolv.conf
yum -y update
- カーネルのアップデートが含まれていた場合、一旦ここで再起動。
shutdown -r now
LANG=C yum -y groupinstall "Development tools"
yum -y install man man-pages man-pages-overrides man-pages-ja
yum -y check-update
yum -y install gcc*
yum -y install gcc gcc-c++
yum -y install which
yum -y install tcpdump
yum -y install uuid*
yum -y install e2fsprogs*
yum -y install libuuid*
yum -y install libtool*
yum -y install tree
yum -y install wget
yum -y install git
yum -y install unzip
yum -y install python
yum -y install perl
yum -y install tar
yum -y install ruby
yum -y install traceroute
yum -y install nmap
yum -y install man
yum -y install jq
yum -y install nc
yum -y install screen
yum -y install openssh
yum -y install openssh-server
yum -y install openssh-clients
yum -y install nethogs
yum -y install openssl-devel
yum -y install readline-devel zlib-devel
yum -y install libffi-devel
yum -y --enablerepo=epel,remi,rpmforge install libxml2 libxml2-devel
yum -y --enablerepo=epel,remi,rpmforge install libxslt libxslt-devel
mkdir /usr/local/download
cd /usr/local/download
wget http://launchpad.net/byobu/trunk/3.16/+download/byobu_3.16.orig.tar.gz
tar zxvf byobu_3.16.orig.tar.gz
cd byobu-3.16
./configure --prefix="/usr/local/byobu"
make
make install
echo 'export PATH=$PATH:/usr/local/byobu/bin' >> /etc/profile
export PATH=$PATH:/usr/local/byobu/bin
6.3 ntpdを導入
yum -y install ntp
chkconfig ntpd on
echo "restrict 133.243.238.163 mask 255.255.255.255 nomodify notrap noquery" >> /etc/ntp.conf
echo "restrict 133.243.238.164 mask 255.255.255.255 nomodify notrap noquery" >> /etc/ntp.conf
echo "restrict 133.243.238.243 mask 255.255.255.255 nomodify notrap noquery" >> /etc/ntp.conf
echo "restrict 133.243.238.244 mask 255.255.255.255 nomodify notrap noquery" >> /etc/ntp.conf
echo "server ntp.nict.jp" >> /etc/ntp.conf
service ntpd restart
ntpq -p
echo "# 毎朝5時にソフトウェアクロックがハードウェアクロックに反映" >> /etc/crontab
echo "0 5 * * 0 root /sbin/hwclock -w > /dev/null 2>&1" >> /etc/crontab
6.4 Fedora EPEL, remi, RPMForgeのリポジトリをyumに追加する。
6.4.1 ダウンロード(CentOS6の場合)
mkdir /usr/local/download
cd /usr/local/download
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
6.4.2 インストール
rpm -Uvh epel-release-6-8.noarch.rpm remi-release-6.rpm rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
6.4.3 設定
リポジトリが追加できたら、それぞれのリポジトリをいったん無効化します。
具体的に言うと、設定ファイルのenabledという項目を0に変更し、yum実行時に明示的に指定されない限り、新たに追加したリポジトリが利用されないようにします。
ちなみに、remiはもともとenabled=0となっているので、Fedora EPELとRPMForgeのみviコマンドで編集します。
※意図せず、標準外のリポジトリ(今回追加したリポジトリ)が使われないための対策です。
6.4.3.1 /etc/yum.repos.d/epel.repoのenabledを0に変更。
sed -i -e 's/^enabled/#enabled=/g' /etc/yum.repos.d/epel.repo
sed -i -e '/^#enabled/a enabled=0' /etc/yum.repos.d/epel.repo
6.4.3.2 [rpmforge]のenabledを0に変更。
sed -i -e 's/^enabled/#enabled=/g' /etc/yum.repos.d/rpmforge.repo
sed -i -e '/^#enabled/a enabled=0' /etc/yum.repos.d/rpmforge.repo
6.4.4 リポジトリを使うとき
yum -y --enablerepo=remi,epel,rpmforge install <<パッケージ名>>
6.5 tmuxをインストールします。
yum -y --enablerepo=rpmforge install tmux
6.6 その他便利ツールをインストールします。
# pythonのパッケージ管理ソフトpip
yum -y --enablerepo="epel" install python-pip
# カラーリングが行えるcat、Pygments
sudo yes | pip install pygments
echo "alias ccat='pygmentize -g'" >> /etc/profile
6.7 Ruby on Railsをインストールします。
- rbenvのインストール(システムワイドにインストールする必要があります)
- まず sudoers を設定します。
- デフォルトで PATH が参照しない場所にインストールしますので、sudo がそれを認識しないと困ります。.profile 等で操作ユーザの PATH を変更しても通常は sudo はそれを認識してくれませんので、操作ユーザの PATH を sudo が引き継げるように sudoers を設定します。
sudo visudo
# :/usr/local/rbenv/bin:/usr/local/rbenv/shimsの2つを追記する
Defaults secure_path=<現在secure_pathに設定されている値>:/usr/local/rbenv/bin:/usr/local/rbenv/shims
Defaults env_keep += "PATH RBENV_ROOT"
- /usr/local/rbenv に rbenv および rbenv のプラグインとして ruby-build をインストールします。
- 以後、バージョンアップする場合はそれぞれのディレクトリに移動して sudo git pull すれば簡単に最新版にできるようになります。
export RBENV_ROOT=/usr/local/rbenv
export PATH=${RBENV_ROOT}/bin:${PATH}
sudo git clone git://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
sudo git clone git://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build
- 配置ができたら rbenv の初期設定(ディレクトリ作成等)を行います。rbenvのマニュアルだと .profile に記述することで自動化してますが、今回の環境では root 権限がないとエラーになりますので、予め手動で実行する必要があります。
sudo rbenv init -
- 最後に、rbenv を自分の環境から呼べるよう、.profile に設定を追加します。
su - vagrant
bash -c 'cat <<\__EOT__ >> ~/.bash_profile
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
__EOT__'
su -
bash -c 'cat <<\__EOT__ >> ~/.bash_profile
export RBENV_ROOT="/usr/local/rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
__EOT__'
- 設定を追加したらシェルを再起動します。
exec ${SHELL} -l
sudo rbenv install -l
- Rubyの最新版(2.2.3)をインストール
- Ruby のバージョンをインストールする場合は、sudo を通して renv install を実行します。
sudo rbenv install 2.2.3
sudo rbenv versions
sudo rbenv global 2.2.3
sudo rbenv version
sudo rbenv rehash
- Railsのインストール
sudo gem install nokogiri -- --use-system-libraries
sudo gem update --system
sudo gem install --no-ri --no-rdoc rails
sudo gem install bundler
sudo gem install compass-rails
sudo rbenv rehash
sudo rails -v
- postgresqlのインストール
- こちらで最新バージョンを確認後、PostgreSQL Yum Repositoryの項目を実行。
- ==RPMリポジトリをONにすること!==
su
yum -y remove postgresql*
yum -y install yum install postgresql-devel.x86_64 --enablerepo=rpmforge
yum -y install http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm --enablerepo=rpmforge
yum -y install postgresql94-server postgresql94-contrib --enablerepo=rpmforge
yum -y install nodejs npm --enablerepo=epel
service postgresql-9.4 initdb
chkconfig postgresql-9.4 on
su - vagrant
sudo gem install pg
- postgresqlを調整
sudo find / -name pg_hba.conf
sudo vi /var/lib/pgsql/9.4/data/pg_hba.conf
- 下記のように変更
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# ↓ 下記の通り書き換える(trustは無条件,md5が推奨)
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 10.0.0.0/8 md5
host all all 172.16.0.0/12 md5
host all all 192.168.0.0/16 md5
sudo /etc/rc.d/init.d/postgresql-9.4 start
sudo -u postgres psql
- ここまででpostgresqlのセットアップは完了。Railsで使う場合は追加の設定が必要。続きはRailsTechnics.mdを参照
6.7(オプション)VMware toolsをインストールする。
==VMware ESXi上にあるVMの場合、ESXiホストから電源オン/オフなどの操作を行えるようにするため==、VMware toolsをインストールする必要があります。
6.5 第6章以降の全コード
[Virtual Machine Setup.md.sh](/Users/soushi/OneDrive/Scripts/Virtual Machine Setup.md.sh)に全てのコマンドを記載
7 開発環境の構築完了
Apache Stormを実行したい。
こちらの[マニュアルを参照](/Users/soushi/OneDrive/Manuals/Apache Storm.md)