Skip to content

Linuxmisc

andyceo edited this page Aug 28, 2024 · 4 revisions

Перенести папку /boot с отдельного дискового раздела на корневую файловую систему (root fs):

Если установка изначально была произведена на отдельный раздел для /boot (который при загрузке монтируется в /boot), а теперь нужно удалить этот раздел, а /boot держать на главной файловой системе /, то нужно сделать следующее:

  • загрузиться обычной загрузкой
  • sudo umount /boot
  • проверить, что папка /boot пустая на корневой файловой системе: ls -lha /boot
  • sudo mkdir /mnt/boot
  • примонтировать бывший раздел /boot: sudo mount /dev/sdXX /mnt/boot
  • sudo cp -a /mnt/boot/ /boot
  • закомментировать запись в /etc/fstab, которая монтирует старый раздел /boot: nano /etc/fstab
  • sudo update-grub
  • sudo grub-install --recheck /dev/sda (откуда грузиться, важно выполнить после update-grub)
  • перезагрузится и все должно работать: sudo reboot

Если пришлось грузиться с загрузочной флешки, то починиться можно используя chroot:

  • sudo mkdir /mnt/rootfs
  • sudo mount /dev/sda1 /mnt/rootfs (примонтировать корневую файловую систему в /mnt/rootfs)
  • примонтировать /dev, /proc, /sys: sudo mount --bind /dev /mnt/rootfs/dev и т.д.
  • sudo chroot /mnt/rootfs
  • sudo grub-install /dev/sda и/или sudo grub-install --recheck /dev/sda

Устанавливаем нужные модули: ##Защита от DDOS

  • На уровне Apache: sudo apt-get install libapache2-mod-evasive Модуль включится, затем нужно будет сделать след. настройки в apache2:

      # added by andyceo
      # tuning mod_evasive module
      <IfModule mod_evasive20.c>
          DOSHashTableSize 3097
          DOSPageCount 2
          DOSSiteCount 20
          DOSPageInterval 1
          DOSSiteInterval 1
          DOSBlockingPeriod 30
          DOSEmailNotify andyceo@yandex.ru
      </IfModule>
    

полезные ссылки:
http://www.lissyara.su/?id=1602
http://dd0s.blogspot.com/2008/03/flood-ddos-http-moddosevasive.html
http://blog.mironovs.com/2009/01/zashhita-ot-legkoj-flood-i-ddos-ataki-po-http-protokolu-ispolzuya-mod_dosevasive/
http://www.linuxcenter.ru/lib/articles/networking/apache_secure.phtml

APF

  1. Качнуть скрипт: wget http://www.rfxn.com/downloads/apf-current.tar.gz (можно почитать саму страницу: http://www.rfxn.com/projects/advanced-policy-firewall/)

  2. Установить:

     cd ~
     wget http://www.r-fx.ca/downloads/apf-current.tar.gz
     tar -xvf ./apf-current.tar.gz
     cd apf-9.6-5 - заменить версию на свою!
     sudo ./install.sh
    
  3. затем:

     cd ~
     удалить apf-9.6-5 - заменить версию на свою!
     запустить скрипт:
     apf -s
    
  4. Разрешить протокол SSH

Ссылки:

Установить imap для Atrium

  • sudo aptitude install php5-imap

  • Далее, в файле php.ini проверим, чтобы IMAP загрузился нормально:

    ; install APC extension=apc.so

    ; install IMAP (for Atrium) extension=imap.so

  • Затем, перезапускаем веб-сервер: sudo /etc/init.d/apache2 restart

  • Некоторые утверждают, что на этом этапе - все. Но можно было внести еще настройки:

    [imap] IMAP c-Client Version => 2004 SSL Support => enabled Kerberos Support => enabled

  • Источник: http://drupalhigh.onsugar.com/2188455

##Мониторинг дисков HDD S.M.A.R.T.

  • Ставим пакет утилит: sudo apt-get install smartmontools
  • Посмотреть SMART - статистику: sudo smartctl --all /dev/hda

Баги и проблемы

Отсутствует иконка скайпа в панелях Unity. Решение:

gsettings get com.canonical.Unity.Panel systray-whitelist
# ['JavaEmbeddedFrame', 'Wine', 'scp-dbus-service', 'Update-notifier'] добавьте Skype:
gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Wine', 'scp-dbus-service', 'Update-notifier', 'Skype']"
nohup unity --replace &
# или рестарт сеанса

Источники:

Стандартная установка Ubuntu 12.04

Установка через стандартный установщик

  1. Язык установки - English
  2. Страна, территория или зона: other
  3. Европа
  4. Россия
  5. United States:en_US.UTF-8
  6. Detect Keyboard: no
  7. Country of origin keyboard: Russian
  8. Keyboard layout: Russian
  9. Keyboard toggling method: Alt+Shift

Установка Ubuntu Desktop 12.04

Для моего ультрабука:

  1. swap: /etc/sysctl.conf
#!conf

vm.swappiness=1
vm.vfs_cache_pressure=50

Установка драйверов: sudo aptitude install linux-backports-modules-cw-3.5-precise-generic

Установка Ubuntu 13.04 на ультрабук DNS

  1. Создать загрузочную флешку с Ubuntu 13.04

  2. Поставить в Bios загрузку “только UEFI”

  3. Загрузиться с флешки. Если при загрузке появляется выбор, как зарузиться с флешки (EFI или Legacy) - то это значит, что п.2 не выполнен. Можно загрузиться через UEFI, выполнив загрузку с помощью EFI “Try Ubuntu”

  4. Открыть gparted и разметить диски (см. картинки)

  5. Открыть терминал и разметить диски с lvm

     #!bash
    
     sudo pvcreate /dev/sda1
     sudo pvcreate /dev/sdb3
     sudo vgcreate hddlvg /dev/sda1
     sudo vgcreate ssdlvg /dev/sdb3
     sudo lvcreate -L 1G -n lvswap hddlvg
     sudo lvcreate -l 100%FREE -n lvrootfs ssdlvg
     sudo lvcreate -L 100G -n lvhome hddlvg
     sudo lvcreate -L 100G -n lvvar hddlvg
    
  6. Установить систему, используя штатный графический установщик, не забыв правильно прописать точки монтирования для /, /home, /var, swap, небольшой раздел для BIOS и загрузочную запись.

Обновление Ubuntu 13.04 на ультрабуке DNS до Ubuntu 14.04 LTS

  1. Штатно обновляем систему

  2. Затем убираем одно fail-сообщение при загрузке (boot.log) - Samba стартует дважды (подробнее см. здесь):

     echo manual | sudo tee /etc/init/samba-ad-dc.override
    

Настройка ПО

  1. Установить etckeeper и git и настроить etckeeper (тут)
  2. Произвести тонкий тюнинг настроек:
    1. fstab: ext4 и параметры: defaults,noatime,nodiratime,discard,errors=remount-ro - для всех разделов на ssd-дисках
    2. /etc/rc.local добавить строчку до exit 0: echo deadline > /sys/block/sdb/queue/scheduler - для всех ssd-дисков
    3. убрать заставку при загрузке ubuntu и сделать меню видимым:
      1. sudo nano /etc/default/grub
      2. закомментировать все что с HIDDEN
      3. убрать splash
      4. GRUB_TIMEOUT=1
      5. sudo update-grub
  3. Установить все программы, не требующие настройки (тут)
  4. Установить Dropbox (тут)
  5. Установить Google Chrome
  6. Установить Skype через Центр приложений
  7. Установил Steam из менеджера приложений
  8. Включить поддержку команды TRIM (это уже поддерживается в Ubuntu 14.04:
    1. указать параметр discard у разделов ext4 в /etc/fstab

    2. запланировать работу через планировщик cron: sudo nano /etc/cron.daily/trim

       #!/bin/sh
       LOG=/var/log/trim.log
       echo "*** $(date -R) ***" >> $LOG
       fstrim -v / >> $LOG
       fstrim -v /home >> $LOG
      
    3. Вместо пункта 2) можно периодически запускать sudo fstrim -v /

Установка сервера

Порядок установки

  • Заказать KVM в техподдержке
  • Затем, через KVM установить Ubuntu 12.04 Server стандартным установщиком (см. [Типичная установка Ubuntu 12.04 на сервер](Ubuntu Installation)). Язык системы везде выбирал как English, раскладку клавиатуры - русскую.

Комментарий перед установкой

Самая сложная часть - это первоначальная настройка сети при установке и разбиении дисков для использования RAID-1. Также, не выбирайте шифрование домашней папки - это повлияет на вход по ssh по ключу, а также и просто на то, что файлы внутри шифрованной домашней директории, будут недоступными до тех пор, пока вы не залогинитесь на сервер - а логинится придется через пароль. Забегая вперед, можно конечно хранить ключи в одном файле в /etc/ssh/authorized_keys, но раздельно для пользователей - безопасней и гибче. Если же надо что-то хранить в зашифрованном виде, то для этого можно создать отдельную папку и монтировать ее с файловой системой Ecryptfs.

После этого, настройка сервера становится тривиальной - установить и настроить нужный софт и наслаждаться.

Настройка сети при установке

Настройку сети надо было производить вручную. После применения этих параметров, cat /etc/network/interfaces выдает следующее:

#!bash

andyceo@hyperion:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
 address 46.165.205.79
 netmask 255.255.255.192
 network 46.165.205.64
 broadcast 46.165.205.127
 gateway 46.165.205.126
 # dns-* options are implemented by the resolvconf package, if installed
 dns-nameservers 178.162.151.41 217.20.116.1 217.20.115.1 8.8.8.8 8.8.4.4
 dns-search leaseweb.com
andyceo@hyperion:~$
#!bash

andyceo@hyperion:~$ cat /etc/hostname
hyperion
andyceo@hyperion:~$
#!bash

andyceo@hyperion:~$ hostname
hyperion
andyceo@hyperion:~$
#!bash

andyceo@hyperion:~$ cat /etc/hosts
127.0.0.1 localhost
46.165.205.79 hyperion.leaseweb.com hyperion

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
andyceo@hyperion:~$

При настройке нового сервака можно/нужно использовать аналогичные параметры (имею в виду собственно сетевые параметры, а также hostname, домен сервера и т.д.). Когда я запросил параметры сети, поддержка дала мне одни параметры, а когда я устанавливал операционку через админку - другие. Вот письмо от поддержки:

#!bash

Main IP:
IP: 46.165.205.79
network: 46.165.205.64
netmask: 255.255.255.192
gateway: 46.165.205.126
broadcast: 46.165.205.127

As DNS servers you can use:
DNS1: 217.20.115.1
DNS2: 217.20.116.1

The network details for your additional IPs are the same as for the main
IP: 46.165.205.105 / 46.165.205.106
network: 46.165.205.64
netmask: 255.255.255.192
gateway: 46.165.205.126
broadcast: 46.165.205.127

Please note that you only need to set the gateway once, unless you
do use VServers on your server. If you simply use your additional
IPs on the same OS, then you only need to set one gateway, the one
for the main IP. Setting more than one gateway can lead to the server
being unreachable.

После установки ОС из админки:

#!bash

andyceo@hyperion:~$ cat /etc/network/interfaces
auto eth0
iface eth0 inet static
address 46.165.205.79
netmask 255.255.255.192
network 46.165.205.69
broadcast 46.165.205.126
dns-nameservers 178.162.151.41 217.20.116.1 217.20.115.1
dns-search leaseweb.com
andyceo@hyperion:~$
#!bash

andyceo@hyperion:~$ cat /etc/hostname
hyperion
andyceo@hyperion:~$
#!bash

andyceo@hyperion:~$ cat /etc/hosts
127.0.0.1 localhost
46.165.205.79 hyperion.leaseweb.com hyperion
andyceo@hyperion:~$

В админке в разделе Manage сервера при конфигурации IP-адресов в качестве адресов Reverse Lookup надо задать hyperion.leaseweb.com.

Полезной ссылкой при настройке сети является: Настройка сети вручную

Добавляем несколько IP на тот же сетевой интерфейс: Настройка сети вручную: FAQ по сетям, ищем на этой странице "Как присвоить два IP-адреса одной сетевой карте?"

Для прописывания статического IP в системе, правим файл /etc/network/interfaces:

#!bash


iface eth0 inet static
address 192.168.12.222
netmask 255.255.255.0
gateway 192.168.12.1
dns-search vseinstrumenti.ru
dns-nameservers 192.168.12.250 192.168.12.251
# dns-nameservers 195.94.224.4 195.94.224.3
auto eth0

Настройка Raid-1 при установке

Разбиение дисков на разделы и создание RAID-1 очень подробно и понятно описано здесь: Расширенная установка. Я делал полностью по нему.

Также из полезных ссылок на ту же тему я бы заметил:

Состояние массива в работающей системе можно посмотреть командой: cat /proc/mdstat

Установка и настройка прикладного ПО общего назначения

  1. Dropbox. Сначала мы устанавливаем и настраиваем Dropbox, чтобы синхронизировать различные настройки пользователя - это нужно, чтобы потом все команды выполнялись раскрашенными, появились все нужные алиасы и настройки. После установки и настройки по статье, нужно доделать следующие вещи:

    1. Добавим почти все папки в игнор-лист (все, кроме Dropbox/home):

       ./dropbox.py exclude add Dropbox/2Delete Dropbox/Apps Dropbox/Backups Dropbox/Books Dropbox/Business "Dropbox/Camera Uploads" Dropbox/Develop Dropbox/Documentation Dropbox/Documents Dropbox/Photos Dropbox/Public Dropbox/SavedGames Dropbox/Shared Dropbox/Torrents Dropbox/Work "Dropbox/Linux Programs" "Dropbox/Windows Programs"
      
    2. После того как Dropbox окончательно синхронизируется (т.е. когда ./dropbox.py status выдаст Idle), нужно создать симлинки из моей папки Dropbox/home на соответствующие файлы и папки в своей домашней директории ~, а также удалить этот скрипт dropbox.py, т.к. в папке Dropbox/home он уже есть, и его можно вызывать просто: dropbox.

  2. whoopsie. В Ubuntu 12.04 как в серверной, так и в десктопной редакции есть пакет whoopsie. Он собирает и отсылает информацию о различных падениях. Можно его просто удалить: sudo aptitude purge whoopsie

    Полезные ссылки:

  3. monit. Настройка мониторинга: monit [cacti | munin]

  4. cacti. Настройка мониторинга: cacti

    @todo: написать про установку и настройку monit-сервера и, возможно, cacti или munin.

  5. AwStats. Настройка анализатора логов AwStats

    Для анализа логов также можно использовать консольные утилиты apachetop, visitors, wtop (нет в репозитории), etc.

    Установим AwStats: sudo aptitude install awstats.

    Для каждого хоста, для которого нужна статистика, делаем:

    cp /etc/awstats/awstats.conf /etc/awstats/awstats.yourdomain.ext.conf
    

    Затем делаем следующие изменения в этом файле nano /etc/awstats/awstats.yourdomain.ext.conf

    LogFile="/var/log/apache2/access.log"
    
    SiteDomain="yourdomain.ext"
    HostAliases="localhost 127.0.0.1 yourdomain.ext"
    

    Генерируем первоначальную статистику: /usr/lib/cgi-bin/awstats.pl -config=yourdomain.ext -update

    @todo - решить вопрос с кронтабом и конфигурацией apache2

    Полезные ссылки:

Установка программ для работы mlb, с базой данных Oracle под Ubuntu 11.04

  • понадобятся следующие пакеты:

    sudo aptitude install alien python-dev libaio-dev
    

    python-dev является виртуальным пакетом и под Ubuntu 11.04 указывает на python2.7-dev Также потребуется утилита cx-oracle из Python Packages index (pypi), но чтобы ее поставить, нам необходимо произвести все следующие действия.

  • Скачать Oracle Instant Client: на странице выбрать свою архитектуру, например, Instant Client for Linux x86-64, затем скачать следующие rpm-пакеты:

    • oracle-instantclient11.2-basic-11.2.0.2.0.x86_64.rpm (58,296,106 bytes) (cksum - 2478810042) - это Instant Client Package - Basic (могут быть различия в номере версии, выбирайте последнюю)
    • oracle-instantclient11.2-devel-11.2.0.2.0.x86_64.rpm (608,014 bytes) (cksum - 2458530753) - это Instant Client Package - SDK (могут быть различия в номере версии, выбирайте последнюю)
  • затем, с помощью утилиты alien конвертировать rpm-пакеты в deb-пакеты:

    sudo alien --scripts oracle-instantclient*.rpm
    

    (нужно быть в папке, где лежат скачанные rpm-пакеты)

  • установить deb-пакеты. При установке может возникнуть предупреждение, в котором будет сказано, что пакеты плохого качества, обычно это бывает из-за некорректно проставленной почты. Игнорировать предупреждение и поставить пакеты.

  • далее, необходимо настроить переменную окружения ORACLE_HOME, которая будет указывать на папку с установленными пакетами Instant Client'а. Для начала, посмотрим информацию об установленных пакетах:

    dpkg -L oracle-instantclient11.2-basic
    dpkg -L oracle-instantclient11.2-devel
    

    В случае 64-битной системы, нас будет интересовать папка наподобие /usr/lib/oracle/11.2/client64. Нужно задать переменную ORACLE_HOME=/usr/lib/oracle/11.2/client64, так, чтобы она была видна и из-под текущего пользователя, и из под root. Для этого нужно:

    • создать файл в /etc/profile.d:

        cd /etc/profile.d
        touch oraclesucks.sh
        cat oraclesucks.sh
        export ORACLE_HOME=/usr/lib/oracle/11.2/client64
      
    • в файле /etc/sudoers прописать сохранение переменной ORACLE_HOME при выполнении команды sudo директивой env_keep:

        sudo visudo
          Defaults env_keep = "ORACLE_HOME PATH"
      
  • далее, нужно прописать настройки доступа к базам данных, к которым планируется доступ через Oracle Instant Client:

    • создать папку в $ORACLE_HOME:

        mkdir -p network/admin/
      
    • положить туда файл tsnames.ora:

        network/admin/tsnames.ora
      

      файл следующего содержания:

        YOURNAME1 =
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.xxx.xxx) (PORT = 1521))
            )
            (CONNECT_DATA =
              (SID = YOURNAME1)
              (SERVICE_NAME = YOURNAME1)
              (SERVER = DEDICATED)
            )
          )
        
        YOURNAME2 =
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP) (HOST = yyy.yyy.yyy.yyy) (PORT = 1521))
            )
            (CONNECT_DATA =
              (SID = YOURNAME2)
              (SERVICE_NAME = YOURNAME2)
              (SERVER = DEDICATED)
            )
          )
      
  • поставить пакет cx-Oracle, для работы Python с Oracle:

    sudo pip install cx-Oracle
    

    Должно все успешно скомпилироваться, и можно запускать mlb.

  • после установки, возможно, придется вручную прописывать пути до некоторых оракловых библиотек. Для этого надо добавить файлы с описанием путей в /etc/ld.so.conf.d/:

    cd /etc/ld.so.conf.d/
    touch oraclesucks.conf
    cat oraclesucks.conf
      /usr/lib/oracle/11.2/client64/lib
    

Посмотреть текущий реестр динамических библиотек: ldconfig -p

Информация о лог-файлах в Linux

Создание загрузочного диска Windows/Ubuntu из Ubuntu с помощью WoeUSB

  1. Скачать образ винды локально, пусть это будет Win10_21H2_Russian_x64.iso
  2. Установить WoeUSB из PPA
  3. Если он меньше версии 5.1.3, пропатчить в соответствии с https://github.com/WoeUSB/WoeUSB/pull/83/commits/1be22083bcdf42f49cb73bfd024c0f2d2093c669
  4. Вставить флешку. Допустим она определиться как /dev/sdx
  5. Сделать загрузочную флешку командой: sudo woeusb --target-filesystem NTFS --device Win10_21H2_Russian_x64.iso /dev/sdc

Sidebar is under construction

Clone this wiki locally