久々に正月に仕事が無いので、ゆっくり自宅サーバーのリフレッシュをしました。
今回は結構ちゃんとやったのでメモ。
使用しているマシンについて
うちのサーバはマウスコンピュータの「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 <> /etc/nginx/conf.d/virtual.conf 2>&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(後で消す)
echo "<?php phpinfo();" > /home/web/public_html/index.php
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 &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 > /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
その他ツッコミなどありましたらどうぞ。
コメント