[Linux] CentOS 6サーバ構築メモ

  • このエントリーをはてなブックマークに追加

久々に正月に仕事が無いので、ゆっくり自宅サーバーのリフレッシュをしました。
今回は結構ちゃんとやったのでメモ。

使用しているマシンについて

うちのサーバはマウスコンピュータの「Lm-mini20」です。コレ↓
ウルトラスモールPC新登場! | BTOパソコンの通販ショップ マウスコンピューター

いわゆるネットトップ機でLCDの背面にマウントできるので省スペース。ION搭載なのでGPUもそこそこ使えます。
現在はもう販売してませんが、購入当時OS無しで25000円くらいとすごくお得でした。

今回は今まで載せていたCentOS 5から6へとバージョンアップする作業をしました。
とりあえずダダーっと手順を載せていきます。詳しくは説明しません。なお最後のシステム再起動を持って完結するので、サービスの起動は手順に含んでいません。

OSのインストール

普通にCentOS 6.2をDVDからインストールをします。x64版を使用しています。
smbの共有で使っているパーティション(/share)を除いたパーティションはext4でフォーマット。
デスクトップ最小構成でインストールしました。(とくにデスクトップとしては使わないけども…)

インストール完了後はファイアウォールを切ってSSHでrootログインして作業を進めます。

service iptables stop

変数定義

今後登場する変数を設定します。スクリプトとしてまとめる場合に便利なだけで必ずしも定義する必要は無いです。

# サーバーのIP
IP_ADDRESS=192.168.0.200

# SSHの待受ポート
SSH_PORT=22222

# インストール時に作成したローカルユーザ名、パスワード
LOCAL_USER=hogeuser
LOCAL_USER_PASSWORD=hogepassword

# XdebugリモートデバッグのホストIP
X_DEBUG_REMOTE_HOST=192.168.0.100

# NetBIOS用ホスト名
NETBIOS_NAME=HOGESERVER

yumリポジトリの準備

rpmforge、EPEL、remiを導入します。

# update
yum update -y

# rpmforge
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
sed -i -e "s/enabled=1/enabled=0/" /etc/yum.repos.d/rpmforge.repo

# EPEL
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm
sed -i -e "s/enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo

# remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

GUIリソースモニタ

全然要らないと思いますが、気分的に。

yum -y install xrestop

SELinuxの停止

使いこなすのが難しいし、自宅サーバ程度のものにとっては邪魔者でしかないので使わないように設定。

setenforce 0
sed -i -e "s/^SELINUX=enforcing/SELINUX=disabled/" /etc/sysconfig/selinux

※4/8追記 いつの間にかこの設定ファイルのパスが /etc/selinux/config に変更されていました。その為、現在はこのファイルを編集しても無意味のようです。

SSHを鍵認証にする

パスワード認証をやめて鍵認証にします。

# RSA鍵の生成(authorized_keys.secretをリモートPCにコピーして使う)
mkdir /home/${LOCAL_USER}/.ssh
chown ${LOCAL_USER}.${LOCAL_USER} /home/faces/.ssh
sudo -u ${LOCAL_USER} ssh-keygen -t rsa -N "" -f /home/${LOCAL_USER}/.ssh/authorized_keys
mv /home/${LOCAL_USER}/.ssh/authorized_keys /home/${LOCAL_USER}/.ssh/authorized_keys.secret
mv /home/${LOCAL_USER}/.ssh/authorized_keys.pub /home/${LOCAL_USER}/.ssh/authorized_keys
chmod 600 /home/${LOCAL_USER}/.ssh/*

# SSHを鍵認証に設定
sed -i -e "s/^#\(RSAAuthentication yes\)/\1/" /etc/ssh/sshd_config
sed -i -e "s/^#\(PubkeyAuthentication yes\)/\1/" /etc/ssh/sshd_config
sed -i -e "s/^#\(AuthorizedKeysFile[ \t]\+\.ssh\/authorized_keys\)/\1/" /etc/ssh/sshd_config
sed -i -e "s/^\(PasswordAuthentication\) yes/\1 no/" /etc/ssh/sshd_config

# ポートの変更とファイアウォールの設定
sed -i -e "s/#Port 22/Port ${SSH_PORT}/" /etc/ssh/sshd_config
sed -i -e "s/-dport 22/-dport ${SSH_PORT}/" /etc/sysconfig/iptables

vinoでリモートデスクトップ

あんま使わないけどVNCが使えるiPod Touchからいじりやすいので。
パスワードの暗号化はまだわからないのでひとまずパス。

gconftool-2 -s -t bool /desktop/gnome/remote_access/enabled true
gconftool-2 -s -t bool /desktop/gnome/remote_access/view_only false
gconftool-2 -s -t bool /desktop/gnome/remote_access/prompt_enabled false

# ファイアウォール
sed -i -e "s/\(^-A INPUT -j REJECT\)/-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5902 -j ACCEPT\n\1/" /etc/sysconfig/iptables

いつでもリモートデスクトップできるようにGDMを自動でログインするようにします。

# GDM自動ログイン(vncでいつでもリモートできるように)
sed -i -e "s/^\(\[daemon\]\)$/\1\nTimedLoginEnable=true/" /etc/gdm/custom.conf
sed -i -e "s/^\(\[daemon\]\)$/\1\nTimedLogin=${LOCAL_USER}/" /etc/gdm/custom.conf
sed -i -e "s/^\(\[daemon\]\)$/\1\nTimedLoginDelay=15/" /etc/gdm/custom.conf

Samba

ファイルサーバとして/shareを共有します。smbpasswdのみっともない標準入力はどうにかならんのか…
このへんはまだ一部曖昧。

yum -y install samba
echo -e ${LOCAL_USER_PASSWORD}\\n${LOCAL_USER_PASSWORD} | smbpasswd -a ${LOCAL_USER} -s

sed -i -e "s/^\([^#]\+workgroup = \).\+/\1HOGEGROUP/" /etc/samba/smb.conf
sed -i -e "s/^;\([^#]\+hosts allow = \).\+/\1127. 192.168.0./" /etc/samba/smb.conf
sed -i -e "s/^;\([^#]\+netbios name = \).\+/\1${NETBIOS_NAME}/" /etc/samba/smb.conf
sed -i -e "s/^\(\[global\]\)$/\1\nunix password sync = yes/" /etc/samba/smb.conf
sed -i -e "s/^\(\[global\]\)$/\1\nsocket address = ${IP_ADDRESS}/" /etc/samba/smb.conf

cat << _EOS_ >> /etc/samba/smb.conf 2>&1

comment = Share Directry
valid users = ${LOCAL_USER}
writable = yes
browsable = no
path = /share
printable = no
_EOS_

sed -i -e "s/\(^-A INPUT -j REJECT\)/-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT\n\1/" /etc/sysconfig/iptables
sed -i -e "s/\(^-A INPUT -j REJECT\)/-A INPUT -m state --state NEW -m udp -p udp --dport 137:138 -j ACCEPT\n\1/" /etc/sysconfig/iptables

chkconfig smb on
chkconfig nmb on

IONグラフィックスドライバ

nVidiaのサイトにあるドライバをインスコしてGPGPUを有効にします。ただし、カーネルをアップデートする度にやりなおす必要があります。
dkms版ならその必要は無いですが、なぜかGPGPUが使えません…
インタラクティブなセットアップが立ち上がります。

yum -y install gcc kernel-devel
cd /tmp
wget http://jp.download.nvidia.com/XFree86/Linux-x86_64/290.10/NVIDIA-Linux-x86_64-290.10.run
chmod +x NVIDIA-Linux-x86_64-290.10.run
init 3
./NVIDIA-Linux-x86_64-290.10.run

Dropbox

Samba共有してるディレクトリを同期して使っています。
こちらはGUIでの設定作業が入るのでデスクトップ上の端末から行います。

yum -y --enablerepo=rpmforge install dropbox
echo DROPBOX_USERS=${LOCAL_USER} >> /etc/sysconfig/dropbox
dropbox

BOINC

アイドル時間がもったいないし、GPGPUも使えるのでBOINCクライアントを入れます。
メインPCからリモートするのでマネージャは入れません。
/var/lib/boinc/gui_rpc_auth.cfgがリモート用パスワードです。

yum --enablerepo=epel -y install boinc-client
sed -i -e "s/^#\(BOINCOPTS=\"--allow_remote_gui_rpc\"\)$/\1/" /etc/sysconfig/boinc-client
chkconfig boinc-client on

# ファイアウォール
sed -i -e "s/\(^-A INPUT -j REJECT\)/-A INPUT -m state --state NEW -m tcp -p tcp --dport 31416 -j ACCEPT\n\1/" /etc/sysconfig/iptables

PHP-FPM

NginxのためのPHP-FPMを入れます。最低限のパッケージで設定は今はとくにしない。

yum -y --enablerepo=remi install php-cli php-fpm

# Xdebugとバッティングしないよう為にポートを9001に変更
sed -i -e "s/^\(listen = 127.0.0.1:\)9000$/\19001/" /etc/php-fpm.d/www.conf

chkconfig php-fpm on

Nginx

設定はテスト程度に。webユーザを作り、そのホームの下に公開ディレクトリを作ります。

yum -y --enablerepo=epel install nginx
cat &lt;&gt; /etc/nginx/conf.d/virtual.conf 2&gt;&amp;1
upstream app_php {
    server 127.0.0.1:9001;
}

server {
    listen 80;
    server_name hoge.example.com
    index index.php;
    root /home/web/public_html;

    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_pass app_php;
    }

    location ~ /\.ht {
        deny all;
    }
}
_EOS_

adduser -d /home/web -s /sbin/nologin web
chmod 755 /home/web
mkdir /home/web/public_html

動作確認用phpinfo(後で消す)

[shell]
echo “<?php phpinfo();” > /home/web/public_html/index.php
[/shell]

sambaで読み書き出来るように

chmod g+w /home/web
useradd -G web ${LOCAL_USER}

ファイアウォール

sed -i -e "s/\(^-A INPUT -j REJECT\)/-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT\n\1/" /etc/sysconfig/iptables

chkconfig nginx on

Xdebug & APC

PECLからインスコ。
最低限の設定だけ。XdebugはこれでEclipseのPDTからリモートデバッグできるのを確認しました。

# APCはconfigureの時にプロンプト出るのでとりあえず全部Enter
yum -y --enablerepo=remi install php-pear php-devel pcre-devel
pecl install xdebug APC

cat &amp;1
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable=true
xdebug.remote_host=${X_DEBUG_REMOTE_HOST}
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
_EOS_

echo extension=apc.so &gt; /etc/php.d/apc.ini

# ファイアウォール
sed -i -e "s/\(^-A INPUT -j REJECT\)/-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT\n\1/" /etc/sysconfig/iptables

再起動

再起動しておわり。

shutdown -r now

以上!
…あれ、mysqlとpostfixの設定忘れてた/(^o^)\あとで追記します。
続編記事書きました⇛CentOS 6サーバ構築メモ その2
その他ツッコミなどありましたらどうぞ。

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。




コメントを残す