3 min read

鯖をDebianに移行した

初期設定のメモ書き。

今までLinux Mintを使っていたが、GUIはいらないしHDDも食われたくないと考えていた。
ある時Twitterで鯖沼の人から「ならDebian使えばいいのでは」ということを言われ、はっと気付いた。
なんで今まで気付かなかったんだろう。
素因数分解の問題を解いてる時に2で割れることを忘れていた時のような感情だった

環境

  • VMware ESXi 6.0 update2
  • Debian 8.7

Debianのインストール

公式からisoをDLしてそこからインストール
私はSSHサーバのみインストールで他のチェックを外しました

初期設定

最初はsudoも入ってないのでrootでいろいろ設定をする

apt update && apt install -y sudo ufw bash-completion open-vm-tools
usermod -G sudo USER
visudo  #if need
ufw allow 22/tcp
ufw enable

rootでの作業はここまで。

ただしこのままではSSHでrebootなどする時にハングしてしまうので余裕があればこれらも一緒に入れちゃう

bash-completion

そのままだとbash completionが使えないのでbashの設定をいじる

/etc/bash.bashrc
コメントアウトを外す
#if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
#fi

Script

start=`grep "#if ! shopt -oq posix; then" -n /etc/bash.bashrc | sed -e 's/:.*//g'`
end=`expr $start + 6`
sudo sed -e "$start,$end s/^#//g" -i /etc/bash.bashrc

PS1の変更

Linux MintのPS1に慣れているのでそっちに変更する

/etc/bash.bashrc
コメントアウト
PS1='${debian_chroot:+($debian_chroot)}u@h:w$ '

追記
if [[ ${EUID} == 0 ]] ; then
  PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
else
  PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
fi

Script

sudo su
sed -e 's/^PS1=/#PS1=/' -i /etc/bash.bashrc
echo -e "\n" >> /etc/bash.bashrc
echo 'if [[ ${EUID} == 0 ]] ; then' >> /etc/bash.bashrc
echo '  PS1='"'"'${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '"'" >> /etc/bash.bashrc
echo 'else' >> /etc/bash.bashrc
echo '  PS1='"'"'${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '"'" >> /etc/bash.bashrc
echo 'fi' >> /etc/bash.bashrc
exit

ユーザーの.bashrcも編集してあげないとちゃんと反映されない
ついでにaliasの開放(?)をしてあげる
Script

start=`grep '# set a fancy prompt (non-color, unless we know we "want" color)' -n ~/.bashrc | sed -e 's/:.*//g'`
end=`expr 1 + $(grep 'unset color_prompt force_color_prompt' -n ~/.bashrc | sed -e 's/:.*//g')`
sed -e "${start},${end}d" -i ~/.bashrc
sed \
-e "s/#alias grep='grep --color=auto'/alias grep='grep --color=auto'/" \
-e "s/#alias fgrep='fgrep --color=auto'/alias fgrep='fgrep --color=auto'/" \
-e "s/#alias egrep='egrep --color=auto'/alias egrep='egrep --color=auto'/" \
-e "s/#alias ll='ls -l'/alias ll='ls -al'/" \
-e "s/#alias la='ls -A'/alias la='ls -A'/" \
-e "s/#alias l='ls -CF'/alias l='ls -CF'/" \
-i ~/.bashrc

IP固定

/etc/network/interfaces
Sample

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-servers 192.168.1.1
dns-nameservers 192.168.1.1

全スクリプト

bash-completionとPS1変更のスクリプト

sudo su
start=`grep "#if ! shopt -oq posix; then" -n /etc/bash.bashrc | sed -e 's/:.*//g'`
end=`expr $start + 6`
sed -e "$start,$end s/^#//g" -i /etc/bash.bashrc

sed -e 's/^PS1=/#PS1=/' -i /etc/bash.bashrc
echo -e "\n" >> /etc/bash.bashrc
echo 'if [[ ${EUID} == 0 ]] ; then' >> /etc/bash.bashrc
echo '  PS1='"'"'${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '"'" >> /etc/bash.bashrc
echo 'else' >> /etc/bash.bashrc
echo '  PS1='"'"'${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '"'" >> /etc/bash.bashrc
echo 'fi' >> /etc/bash.bashrc
exit

start=`grep '# set a fancy prompt (non-color, unless we know we "want" color)' -n ~/.bashrc | sed -e 's/:.*//g'`
end=`expr 1 + $(grep 'unset color_prompt force_color_prompt' -n ~/.bashrc | sed -e 's/:.*//g')`
sed -e "${start},${end}d" -i ~/.bashrc
sed \
-e "s/#alias grep='grep --color=auto'/alias grep='grep --color=auto'/" \
-e "s/#alias fgrep='fgrep --color=auto'/alias fgrep='fgrep --color=auto'/" \
-e "s/#alias egrep='egrep --color=auto'/alias egrep='egrep --color=auto'/" \
-e "s/#alias ll='ls -l'/alias ll='ls -al'/" \
-e "s/#alias la='ls -A'/alias la='ls -A'/" \
-e "s/#alias l='ls -CF'/alias l='ls -CF'/" \
-i ~/.bashrc

SSHでのハング

SSHでsudo rebootsudo poweroffするとSSHがハングする場合の対処法

sudo apt install libpam-systemd dbus
sudo service ssh restart

おわり

IP固定を書いたあとにsudo service networking restartをするとIPが即変更されるが、一時的なものなので注意。 永続的に固定したいならsudo reboot必須