私がDebian構築時に使用する処理のまとめ
※一つのshellを実行したら、環境構築が完了となるように調整は必須です
※設定は別ファイルにまとめてください
■よく使用する処理について
- 実行したshllのディレクトリを取得
# /tmp/test/test.sh を実行した場合、DIR_CURに /tmp/test/ を設定ます
DIR_CUR=$(dirname "${BASH_SOURCE:-$0}")"/"
# 実行したshellと同じディレクトリの variables.sh を読み込む場合
source ${DIR_CUR}variables.sh
- 複数行の文字列をファイルに出力
{ \
echo '一行目'; \
echo '二行目'; \
} > /tmp/aaa.txt
■設定
- 日本語周りの設定(他にもありますので、自身の環境の合わせてください)
{ \
echo 'case $TERM in'; \
echo ' linux)LANG=C ;;'; \
echo ' *)LANG=ja_JP.UTF-8 ;;'; \
echo 'esac'; \
} >> /etc/bash.bashrc
- viの設定(好みによると思います)
echo 'set nocompatible' >> ~/.vimrc
- Debianの設定
# サスペンドさせない
{ \
echo 'HandleLidSwitch=ignore'; \
} >> /etc/systemd/logind.conf
# Debian GUI環境にのみ存在
WORK_FILE=/etc/gdm3/greeter.dconf-defaults
if [ -f ${WORK_FILE} ]; then
sed -i \
-e 's/^# \(sleep-inactive-ac-timeout=\).\+$/\10/' \
-e 's/^# \(sleep-inactive-battery-timeout=\).\+$/\10/' \
${WORK_FILE}
fi
# GUIがある場合はCUIに切り替え
systemctl set-default multi-user.target
- VirtualBoxにDebianをインストール後、固定IPに変更にする
# ネットワーク
INTERFACES_VB_ADDR=192.168.1.10
INTERFACES_VB_NETWORK=192.168.1.0
INTERFACES_VB_NETMASK=255.255.255.0
INTERFACES_VB_GATEWAY=192.168.1.1
# ネットワークのデバイス名を取得
DEVICE_NAME=$(ip route | sed -n 1P | sed 's/^.\+dev\s\([a-z0-9]\+\).\+/\1/')
sed -i \
-e "s/\(iface ${DEVICE_NAME} inet dhcp\)/#\1/" \
/etc/network/interfaces \
&& { \
echo "auto ${DEVICE_NAME}"; \
echo "iface ${DEVICE_NAME} inet static"; \
echo " address ${INTERFACES_VB_ADDR}"; \
echo " network ${INTERFACES_VB_NETWORK}"; \
echo " netmask ${INTERFACES_VB_NETMASK}"; \
echo " gateway ${INTERFACES_VB_GATEWAY}"; \
echo " dns-nameservers 8.8.8.8 ${INTERFACES_VB_GATEWAY}"; \
} >> /etc/network/interfaces.d/local
■アプリケーションの設定
- Cronの設定を変更
# 設定(基本的に設定は共通設定ファイルから読込)
MAIL_SYSTEM=system@test.local
WORK_MAIL_SYSTEM=$(echo ${MAIL_SYSTEM} | sed -e 's/\./\\\./g')
sed -i \
-e "s/^\(PATH=.\+\)$/\1\nMAILTO=\"${WORK_MAIL_SYSTEM}\"/" \
/etc/crontab
- ユーザの設定(SSHはOSインストール時に有効)
# OS作成時のユーザ
USER_ID_DEFAULT=vb-user
# グループ
USER_GROUP_DEVELOPER=developer
sed -i \
-e 's/^#\(PermitRootLogin\s\).\+$/\1forced-commands-only/' \
/etc/ssh/sshd_config \
&& groupadd ${USER_GROUP_DEVELOPER} \
&& usermod -aG ${USER_GROUP_DEVELOPER} ${USER_ID_DEFAULT}
- Postfixをインストール
# header_checks で外にメールが出ていかないようにします
# その他設定は各自の環境に合わせます
apt-get install -y \
libsasl2-modules \
postfix \
syslog-ng \
&& mv /etc/postfix/main.cf /etc/postfix/main.cf.bk \
&& { \
echo '/^To:.*@test.local/ OK'; \
echo '/^To:.*/ REDIRECT system@test.local'; \
} > /etc/postfix/header_checks \
&& { \
echo 'alias_database = hash:/etc/aliases'; \
echo 'alias_maps = hash:/etc/aliases'; \
echo 'command_directory = /usr/sbin'; \
echo 'daemon_directory = /usr/lib/postfix/sbin'; \
echo 'data_directory = /var/lib/postfix'; \
echo 'header_checks = regexp:/etc/postfix/header_checks'; \
echo 'html_directory = no'; \
echo 'inet_interfaces = localhost'; \
echo 'inet_protocols = ipv4'; \
echo 'mail_owner = postfix'; \
echo 'mailq_path = /usr/bin/mailq'; \
echo 'manpage_directory = /usr/share/man'; \
echo 'mydestination = localhost'; \
echo 'myhostname = test.local'; \
echo 'newaliases_path = /usr/bin/newaliases'; \
echo 'queue_directory = /var/spool/postfix'; \
echo 'sendmail_path = /usr/sbin/sendmail'; \
echo 'setgid_group = postdrop'; \
echo 'unknown_local_recipient_reject_code = 550'; \
} > /etc/postfix/main.cf
- VirtualBoxの設定
# mount
DIR_MOUNT_ROOT=/media/
DEBIAN_FRONTEND=noninteractive \
apt-get install -y \
build-essential \
module-assistant \
&& echo Y | m-a prepare \
&& mount ${DIR_MOUNT_ROOT}cdrom
# VBox -> 共有フォルダ設定
sh ${DIR_MOUNT_ROOT}cdrom/VBoxLinuxAdditions.run
# VBox -> 共有フォルダ設定でrebootは必須
/sbin/reboot