Конспект установки Debian на сервер

Февраль 21st, 2012 Рубрики: HOWTO, Linux, основы Linux

установка DebianЗа последние несколько лет работы с Linux, я могу с уверенностью сказать, что пристрастился к Debian-дистрибутивам. Нравиться мне их некий консерватизм и свободность. Некоторое время пытался работать на RedHat, да и обучался, собственно, на RedHat-based, иногда приходилось сталкиваться с FreeBSD, который мне тоже симпатичен, как UNIX-платформа. Всем начинающим однозначно могу посоветовать к изучению Видеокурс "Базовый курс Linux" от Евгения Коноплева. Если есть желание вложить деньги в свое обучение, то видеокурсы этого автора - это идеальное решении цена/качество. Кроме того, для новичков превосходно написана книга Практическое руководство по Red Hat Linux, единственный недостаток книги - это полное ориентирование на RedHat. После появления определенного понимания что к чему, можно углубиться, почитав Запускаем Linux, которая дает более глубокие и общие понятия, без ориентира на разновидность дистрибутива. Ну, собственно, я отошел от темы... Данный пост - скорей заметка на память, нежели инструкция. Со временем будет наполняться при появлении новых пожеланий.

Итак, что нужно сделать при типовой установке Debian на сервер:

0. Собственно - установка:

  1. Если интернет хороший, то установка из netinstall
  2. Если интернет никакой, то из CD/DVD
  3. Локаль/имя машины/пароль рута/создание пользователя/настройка времени - по вкусу.
  4. Во время установки разбивка диска по вкусу, но:
    1. Для тестовой машины можно все в 1 раздел (ну кроме свопа)
    2. Для сервера с логированием - отделить /var, возможно еще некоторые каталоги для служб (например /var/spool/squid3 - для кэша). Это на случай переполнения раздела, чтобы сервер остался живой. Своп для сервер обычно делаю по размеру ОЗУ, но не более 1-1,5 Гб. Файловая система - ext4. Для разделов, создаваемых для расшариваемых ресурсов SAMBA можно задать атрибуты noatime для ускорения и noexec для безопасности.
    3. LVM (???) -  в перспективе попробую
  5. Устанавливаемые компоненты никогда не выбираю - только Стандартные системные утилиты.

1. Установка и удаление необходимого/недостающего ПО 

  1. После установки дистрибутива, с  помощью утилиты netselect-apt можно выбрать наиболее производительный репозиторий, но как показывает практика, при использовании "быстрых" репозиториев постоянно возникают проблемы с PGP-ключами.
  2. Поэтому оставляем репозиторий по умолчанию и выполняем:
     debian ~ # aptitude update
  3. Отключаем службы установленные по-умолчанию:
    debian ~ # update-rc remove portmap # или rpcbind
    debian ~ # update-rc remove nfs-common
  4. Устанавливаем недостающее:
    debian ~ # aptitude install  vim  lynx tcpdump arping nethogs
  5. Удаляем ненужные пакеты:
    debian ~ # aptitude remove  portmap nfs-common nano tasksel tasksel-data # exim4 (???)
    debian ~ # aptitude purge portmap nfs-common nano tasksel tasksel-data # exim4 (???)

2. Правим конфиги

1. Украшаем консоль

Рутовый:

gw ~ # cat  ~/.vimrc
syntax on
set wildmenu
set laststatus=2
set statusline=%<%f\ [%Y%R%W]%1*%{(&modified)?'\ [+]\ ':''}%*%=%c%V,%l\ %P\ [%n]
" Color scheme
color desert
gw ~ # cat  ~/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
 eval "`dircolors`"
 alias ls='ls $LS_OPTIONS'
 alias ll='ls $LS_OPTIONS -l'
 alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
 alias rm='rm -i'
 alias cp='cp -i'
 alias mv='mv -i'

В пользовательском раскомментировать в .bashrc:

mc-sim@gw:~$ diff .bashrc /etc/skel/.bashrc
39c39
< force_color_prompt=yes
---
> #force_color_prompt=yes
72,73c72,73
< alias dir='dir --color=auto'
< alias vdir='vdir --color=auto'
---
> #alias dir='dir --color=auto'
> #alias vdir='vdir --color=auto'
75,77c75,77
< alias grep='grep --color=auto'
< alias fgrep='fgrep --color=auto'
< alias egrep='egrep --color=auto'
---
> #alias grep='grep --color=auto'
> #alias fgrep='fgrep --color=auto'
> #alias egrep='egrep --color=auto'
81,83c81,83
< alias ll='ls -l'
< alias la='ls -A'
< alias l='ls -CF'
---
> #alias ll='ls -l'
> #alias la='ls -A'
> #alias l='ls -CF'

Показать гентушный красивый /etc/bash.bashrc »

gw ~ # cat /etc/bash.bashrc
# /etc/bash/bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output.  So make sure this doesn't display
# anything or bad things will happen !

# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.

if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi

# Bash won't get SIGWINCH if another process is in the foreground.
# Enable checkwinsize so that bash will check the terminal size when
# it regains control.  #65623
# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
shopt -s checkwinsize

# Enable history appending instead of overwriting.  #139609
shopt -s histappend

# Change the window title of X terminals
case ${TERM} in
         xterm*|rxvt*|Eterm|aterm|kterm|gnome*|interix)
                 PROMPT_COMMAND='echo -ne "33]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}07"'
                 ;;
         screen)
                 PROMPT_COMMAND='echo -ne "33_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}33\"'
                 ;;
esac

use_color=false

# Set colorful PS1 only on colorful terminals.
# dircolors --print-database uses its own built-in database
# instead of using /etc/DIR_COLORS.  Try to use the external file
# first to take advantage of user additions.  Use internal bash
# globbing instead of external grep binary.
safe_term=${TERM//[^[:alnum:]]/?}   # sanitize TERM
match_lhs=""
[[ -f ~/.dir_colors   ]] && match_lhs="${match_lhs}$(<~/.dir_colors)"
[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(</etc/DIR_COLORS)"
[[ -z ${match_lhs}    ]] 
        && type -P dircolors >/dev/null 
        && match_lhs=$(dircolors --print-database)
[[ $'n'${match_lhs} == *$'n'"TERM "${safe_term}* ]] && use_color=true

if ${use_color} ; then
        # Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
        if type -P dircolors >/dev/null ; then
                if [[ -f ~/.dir_colors ]] ; then
                        eval $(dircolors -b ~/.dir_colors)
                elif [[ -f /etc/DIR_COLORS ]] ; then
                        eval $(dircolors -b /etc/DIR_COLORS)
                fi
        fi

        if [[ ${EUID} == 0 ]] ; then
                PS1='[33[01;31m]h[33[01;34m] W $[33[00m] '
        else
                PS1='[33[01;32m]u@h[33[01;34m] w $[33[00m] '
        fi

        alias ls='ls --color=auto'
        alias grep='grep --colour=auto'
else
        if [[ ${EUID} == 0 ]] ; then
                # show root@ when we don't have colors
                PS1='u@h W $ '
        else
                PS1='u@h w $ '
        fi
fi

if [ -f /etc/bash_completion ]; then
  . /etc/bash_completion
fi
# Try to keep environment pollution down, EPA loves us.
unset use_color safe_term match_lhs

Дополнительно, для сохранения истории команд добавляю следующее в bashrc:

# увеличиваем допустимый размер файла истории команд:
export HISTFILESIZE=10000
# увеличиваем количество хранимых команд:
export HISTSIZE=10000
# устанавливаем переменную, указывающую дописывать команды в историю (не перезаписывать файл)
shopt -s histappend
# устанавливаем переменную, указывающую сохранять многострочные команды одной строкой
shopt -a cmdhist 
# изменяя переменную, указываем оболочке сохранять команды в файл при старте сессии (не только при логауте)
PROMPT_COMMAND="history -a; ${PROMPT_COMMAND}"

2. Отключить ipv6

3. Исправление ошибок на консоли при загрузке:

  1. Driver ‘pcspkr’ is already registered, aborting…
    gw ~ # grep snd /etc/modprobe.d/blacklist.conf
    blacklist snd-pcsp
  2. piix4_smbus 0000:00:07.0: SMBus base address uninitialized - upgrade BIOS or use force_addr=0xaddr
    gw ~ # grep piix /etc/modprobe.d/blacklist.conf
    blacklist i2c_piix4
    gw ~ # update-initramfs -u -k all # ????

4. Настройка сети

  1. /etc/networking/interfaces
  2. /etc/hostname
  3. /etc/resolv.conf
  4. /etc/hosts
  5. .....

5. Для шлюза:

gw ~ # grep forward /etc/sysctl.conf
net.ipv4.ip_forward=1

6. Установка необходимых серверов Linux

Ссылки:

кое-что можно взять тут: http://wiki.debian.org/ru/Step-by-step

Upd 2012.09.13: подправил гентушный баш, чтобы корректно работал bash completion
Upd 2012.09.19: добавил пакет nethogs, а так же ссылку
Upd 2013.11.14: добавил в bashrc модификацию истории сохранения команд

С Уважением, Mc.Sim!




Теги: , , ,

4 комментария к “Конспект установки Debian на сервер”

  1. Илья
    Март 2nd, 2012 at 05:13
    1

    >>После появления определенного понимания что к чему, можно углубиться,
    >>почитав Запускаем Linux, которая дает более глубокие и общие понятия,
    >>без ориентира на разновидность дистрибутива.

    Честно, не в восторге от это книги, информация разрозненная читать неудобно, в основном об пользовательских программах, вроде рабочего стола тестовых редакторах, на сервере это не особо нужно. Сам советую «Unix и Linux. Руководство системного администратора» тем более, что недавно вышло новое издание http://goo.gl/0zhHA. А далее специализированную литературу по стеку протоколов TCP/IP, DNS, Postfix и т.д.

    • Март 2nd, 2012 at 09:34
      2

      да, запускаем линукс малость устарела и она дает те знания, которые необходимы для шага от пользователя к администратору. И большой плюс у этой книги — полученные в ней знания и понимания можно применить на любом дистрибутива linux, не важно бубунта это или редхат или сюзе. А вот за «Unix и Linux. Руководство системного администратора» спасибо. Месяц выхода — январь 2012 — определенно говорит о свежести книги. Полистать бы ее в руках и пожалуй я бы ее купил :) Пожалуй
      Без понимания TCP/IP ох как тяжело линукс админить — это да…

  2. Kernel Kiddy
    Октябрь 4th, 2012 at 19:56
    3

    /etc/networking/interfases — опечаточка

    • Октябрь 4th, 2012 at 21:40
      4

      точняк, спасибо!

Написать комментарий