hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

2010-09-25

CentOS: PostgreSQLインストール

PostgreSQLは以前はPostgreSQL: Linux packagesの通りレポジトリを追加してインストールしていましたが、8.4ならupdatesレポジトリにあったのでそちらから入れてみました。

# yum install postgresql84-server
# /sbin/service postgresql initdb
# /etc/init.d/postgresql start
# /sbin/chkconfig postgresql on
# /sbin/chkconfig postgresql --list
postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off

PostgreSQLのユーザとデータベース作成

# sudo su - postgres
-bash-3.2$ createuser -DRSEP user
Enter password for new role:
Enter it again:
-bash-3.2$ createdb -E utf8 -O user userdb

# vi /var/lib/pgsql/data/pg_hba.conf

127.0.0.1のidentの前の行にmd5メソッドを追加

host    all         all         127.0.0.1/32          md5
host    all         all         127.0.0.1/32          ident

# /etc/init.d/postgresql restart

接続テスト

$ psql -h localhost -U user -W userdb
Password for user user:
psql (8.4.4)
Type "help" for help.

userdb=>

CentOS: screen設定メモ

# yum install screen

$ mkdir ~/log
$ vi ~/.screenrc

escape ^Zz
autodetach on
logfile "/home/hnakamur/log/screen-%H-%Y%m%d-%n.log"
deflog on

$ vi ~/.bash_profile

以下の1行を追加

screen

参考:screenで覚えたことメモ - 半無限長キープ

CentOS: keychainでssh-agentを管理

# yum install keychain

ログイン時に実行するコマンドを設定

$ vi ~/.bash_profile

以下の2行を追加

/usr/bin/keychain ~/.ssh/id_rsa
source ~/.keychain/$HOSTNAME-sh

一旦ログアウトしてログインしてみる(PuTTYの例)。

login as: hnakamur
Authenticating with public key "imported-openssh-key" from agent
Last login: Sat Sep 25 15:49:51 2010 from 192.168.11.2

 * keychain 2.7.0 ~ http://www.funtoo.org
 * Found existing ssh-agent: 3594
 * Adding 1 ssh key(s): /home/hnakamur/.ssh/id_rsa
Enter passphrase for /home/hnakamur/.ssh/id_rsa: パスワードを入力
 * ssh-add: Identities added: /home/hnakamur/.ssh/id_rsa

[hnakamur@sunshine12 ~]$ ssh vm01
Last login: Sat Sep 25 15:47:14 2010 from 192.168.122.1
[hnakamur@vm01 ~]$ パスワード入力せずにログインできた

参考:keychain: Set Up Secure Passwordless SSH Access For Backup Scripts

virt-cloneでvmをコピー

例としてvm01からvm02にコピーするとします。

libvirtのネットワーク設定を編集します。

# vi /etc/libvirt/qemu/networks/default.xml

vm02用の固定IPのエントリを追加します。

<network>
  <name>default</name>
  <uuid>bdb361fe-cea5-45a0-b6d9-b862ab49ad07</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' forwardDelay='0' />
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.99' />
      <host mac='52:54:00:43:62:2F' name='vm01' ip='192.168.122.101' />
      <host mac='52:54:00:43:62:30' name='vm02' ip='192.168.122.102' />
    </dhcp>
  </ip>
</network>

編集した内容を反映させます。

# virsh net-define /etc/libvirt/qemu/networks/default.xml
# virsh net-destroy default
# virsh net-start default

状態確認

# ps ww -C dnsmasq
  PID TTY      STAT   TIME COMMAND
 3096 ?        S      0:00 /usr/sbin/dnsmasq --strict-order --bind-interfaces
 --pid-file=/var/run/libvirt/network/default.pid --conf-file=
  --listen-address 192.168.122.1 --except-interface lo
 --dhcp-range 192.168.122.2,192.168.122.99 --dhcp-lease-max=98
 --dhcp-host 52:54:00:43:62:2F,vm01,192.168.122.101
 --dhcp-host 52:54:00:43:62:30,vm02,192.168.122.102

コピー

# virt-clone --original vm01 --name vm02 --file /var/lib/libvirt/images/vm02.img --mac 52:54:00:43:62:30

ホストの/etc/hostsに作成したvmのエントリ追加

# vi /etc/hosts

以下の行を追加

192.168.122.102         vm02

2010-09-18

CentOS5.5でkvm

qemuを入れずにkvm-qemu-imgを入れる。
# yum install kvm-qemu-img kvm libvirt virt-manager
# modprobe kvm-amd
# /etc/init.d/libvirtd start
# virt-install --connect qemu:///system -n vm01 -r 512 --vcpus=1 \
 --disk path=/var/lib/libvirt/images/vm01.img,size=10 \
 --os-type linux --accelerate \
 --os-variant=virtio26 \
 --network network:default \
 --location='http://ftp.riken.jp/Linux/centos/5.5/os/i386' \
 --extra-args='console=tty0 console=ttyS0,115200n8'

http://www.centos.org/modules/newbb/viewtopic.php?topic_id=25077&forum=41
http://www.listware.net/201007/centos-virt/101980-centos-virt-virt-install-error-on-centos-54-64bit-and-kvm.html

virt-install \
 --connect qemu:///system \
 --name vm02 \
 --ram 512 \
 --vcpus=1 \
 --file /var/lib/libvirt/images/vm02.img \
 --file-size=10 \
 --nographics \
 --os-type=linux \
 --os-variant=virtio26 \
 --network network:default \
 --accelerate \
 --location='http://ftp.riken.jp/Linux/centos/5.5/os/x86_64' \
 --extra-args='ks=http://192.168.122.1/vm02-ks.cfg console=tty0 console=ttyS0,115200n8'

2010-09-17

CentOS5.5でnginx

参考:http://serverfault.com/questions/114895/why-is-nginx-more-popular-than-lighttpd
nginxは軽量級のウェブサーバーで、ロードバランサーとしてもリバースプロキシーとしても使えるそうです。


http://articles.slicehost.com/2008/12/17/centos-installing-nginx-via-yum
によるとEPELにもパッケージがあるそうなのですが、
http://download.fedora.redhat.com/pub/epel/5/x86_64/repoview/nginx.html
バージョン0.6.39と古いのでnginxホームページからソースを落としてインストールすることにします。

NginxHttpSslModuleによるとSSLを使うにはconfigureで--with-http_ssl_moduleオプションを指定しておく必要があります。

$ wget http://sysoev.ru/nginx/nginx-0.8.50.tar.gz
$ sudo yum install openssl-devel pcre-devel
$ tar zxf nginx-0.8.50.tar.gz
$ cd nginx-0.8.50
$ ./configure --with-http_ssl_module
$ make
$ sudo /usr/local/sbin/checkinstall
Requiresにopenssl, pcreを追加
$ sudo rpm -i /usr/src/redhat/RPMS/x86_64/nginx-0.8.50-1.x86_64.rpm

http://articles.slicehost.com/2009/2/20/centos-nginx-configuration
http://503.mydns.jp/2010/06/nginx/
を参考にしつつ設定。

iptables設定

# /sbin/iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# /sbin/iptables -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# /etc/init.d/iptables save
# /etc/init.d/iptables restart

グループとユーザ作成

# /usr/sbin/groupadd -g 201 nginx
# /usr/sbin/useradd -u 201 -g nginx -d / -s /sbin/nologin nginx

# mkdir /usr/local/nginx/conf.d
# mkdir /var/log/nginx
# vi /usr/local/nginx/conf/nginx.conf

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types      text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /usr/local/nginx/conf.d/*.conf;

    server {
        listen 80;
        server_name sunshine12;
        location / {
            root /usr/local/nginx/html;
            index index.html index.htm;
        }
    }
    server {
        listen 443 ssl;
        ssl_certificate /usr/local/nginx/conf/server.crt;
        ssl_certificate_key /usr/local/nginx/conf/server.key;
        server_name sunshine12;
        location / {
            root /usr/local/nginx/html;
            index index.html index.htm;
        }
    }
}

# vi /etc/init.d/nginx

#!/bin/bash
#
# nginx        Startup script for the nginx Web Server
#
# chkconfig: - 85 15
# description: nginx is a World Wide Web server.  It is used to serve \
#              HTML files and CGI.
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Path
nginx='/usr/local/nginx/sbin/nginx'
prog=nginx
RETVAL=0

start() {
        echo -n $"Starting $prog: "
        daemon $nginx
        RETVAL=$?
        echo
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc $nginx
        RETVAL=$?
        echo
        return $RETVAL
}

reload() {
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
    return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  reload)
        reload
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|reload}"
        exit 1
        ;;
esac

exit $RETVAL


# chmod +x /etc/init.d/nginx

CentOSでcheckinstallを使う

$ sudo yum install gcc make gettext rpm-build
$ wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz

$ tar zxf checkinstall-1.6.2.tar.gz
$ cd checkinstall-1.6.2
$ make
$ sudo make install
$ sudo ln -s /usr/local/lib/installwatch.so /usr/local/lib64/installwatch.so
$ sudo /usr/local/sbin/checkinstall

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.

The checkinstallrc file was not found at:
/usr/local/sbin/../checkinstallrc

Assuming default values.

The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]: y

Preparing package documentation...OK

Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R
...
$ sudo rpm -i /usr/src/redhat/RPMS/x86_64/checkinstall-1.6.2-1.x86_64.rpm

パッケージとしてインストールされたことを確認

$ rpm -qi checkinstall

参考:http://d.hatena.ne.jp/massat/20100817/1282044839

CentOSでselinuxをオフにする

# sed -i -e '/^SELINUX=/s/=.*/=disabled/' /etc/selinux/config
# reboot

2010-09-11

CentOS5.5のクリーンインストール

今まではKVMを使うときにホストをUbuntuでゲストをCentOSにしていたのですが、CentOS5.5も出たことだし、ホストもCentOSに変えようと思い立ちクリーンインストールしました。そのときのメモです。

  • ネットワークインストールのISOイメージをダウンロード。
  • http://ftp.riken.jp/Linux/centos/5.5/isos/x86_64/CentOS-5.5-x86_64-netinstall.iso
  • CD-Rに焼く。Windows 7だとダウンロードしたファイルをエクスプローラで選びポップアップメニューの[ディスクイメージの書き込み]でOK。
  • CD-Rで起動して、パッケージインストール元は以下のように設定。場所は別マシンでブラウザで開いて確認しておきます。
  • タイプ:ftp、ホスト:ftp.riken.jp、ディレクトリ:/Linux/centos/5.5/os/x86_64/
  • パッケージ選択ではBaseも含めて全てのチェックを外して回る。全部外しても起動できます(今まで知らなかった)。必要なものはあとから随時インストールするということで。→kvmのゲストOSセットアップ時にDHCPでうまくいかないので結局yum install @baseでベースはインストールした。
  • ネットワークの設定。IPv6はオフに。IPv4で固定アドレスを設定するときは一旦DHCPで進んでから戻って設定するとゲートウェイとネットマスクが入力済みになっていて楽。
  • インストールが終わって起動したらログインして不要なサービスを停止

まず現状を確認
# chkconfig --list
haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
kudzu 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mcstrans 0:off 1:off 2:on 3:on 4:on 5:on 6:off
messagebus 0:off 1:off 2:off 3:on 4:on 5:on 6:off
multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
netplugd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
restorecond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
tcsd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

不要なサービス停止
# chkconfig haldaemon off;
chkconfig kudzu off;
chkconfig lvm2-monitor off;
chkconfig mcstrans off;
chkconfig messagebus off;
chkconfig netfs off;
chkconfig rawdevices off;
chkconfig restorecond off

変更後の状態確認
# chkconfig --list
haldaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
kudzu 0:off 1:off 2:off 3:off 4:off 5:off 6:off
lvm2-monitor 0:off 1:on 2:off 3:off 4:off 5:off 6:off
mcstrans 0:off 1:off 2:off 3:off 4:off 5:off 6:off
messagebus 0:off 1:off 2:off 3:off 4:off 5:off 6:off
multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netplugd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
rawdevices 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
tcsd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
あとはiptablesやsshdの設定などをするのですが、ここでは記述を省略。

ちなみにディスクの使用量はこんな感じでした。合計86MB使用。
# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                     141376216    845368 133233416   1% /
/dev/sda1               101086     12635     83232  14% /boot
tmpfs                  4089468         0   4089468   0% /dev/shm
追加でインストールするパッケージ

  • vim-common
  • sudo
  • man
  • which

ブログ アーカイブ