Archive

Posts Tagged ‘linux’

Еще один неплохой Yum-репозиторий для СentOS

March 29th, 2011

Расположен здесь http://www.webtatic.com/.
Добавляем в систему:

rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm

linux ,

Замена диска в Raid на linux md

March 28th, 2011

Если вдруг ваш RAID1 поломался и
cat /proc/mdstat говорит:

md2 : active raid1 sda3[2] sdb3[1]
      726266432 blocks [2/1] [_U]

Т.е. один диск в зеркале U – up, а другой вылетел.

Смотрим более подробнаю информацию о raid:

mdadm -D /dev/md2

То надо менять винт. Для этого выключаем сервер, меняем винт, включаемся и затем:
Смотрим dmesg |grep sda, что новый винт на месте (в моем случае вылетел sda).
Иногда саппорт дата-цента просит сказать серийный номер винта, который надо заменить. Вот так смотрим подробную инфорамацию по жесткому диску:

hdparm -I /dev/sda

Затем копируем информацию о разделах со старого рабочего винта на новый (не ошибитесь в источнике и назначении!):

sfdisk -d /dev/sdb | sfdisk /dev/sda

В моем случае винты были разбиты на три раздела каждый и каждый из них был собран в md-зеркало с соответствующим разделом на другом винте. Теперь подключаем разделы с sda в существующие md-рэйды:

mdadm --manage /dev/md2 --add /dev/sda3

Не ошибитесь с разделами!
И наблюдаем в cat /proc/mdstat как идет синхронизация.

linux ,

Скрипт синхронизации баз, сайтов и конфигов

November 24th, 2010

С помощью данного скрипта можно синхронизировать папки сайтов, базы MySQL и конфиги виртуал-хостов апача и nginx с одного сервера на другой. Синхронизация баз происходит без остановку мускула.

#!/bin/bash

param=" --progress -plzuogthr --compress-level=9 --delete-after"
sitesfromserver1="site1.ru site2.ru site3.ru"
basesfromserver1="basesite1 basesite2 basesite3"

### Apache vhosts - Not need "update" parametr
rsync -e "ssh -p222"  --progress -plzogthr --compress-level=9 --delete-after /etc/httpd/vhosts root@server2.domain.com:/etc/httpd

### Nginx vhosts - Not need "update" parametr
rsync -e "ssh -p222"  --progress -plzogthr --compress-level=9 --delete-after /etc/nginx/vhosts root@server2.domain.com:/etc/nginx

### Sites sync
for site in $sitesfromserver1
    do
    rsync -e "ssh -p222" $param /usr/local/www/$site root@server2.domain.com:/usr/local/www
done

### MySQL bases sync
echo "Lock bases on Server1 and Server2"
echo "FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;" | /usr/bin/mysql -u backup -pPasWord
ssh -p222 root@server2.domain.com 'echo "FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;" | /usr/bin/mysql -u backup -pPasWord'

echo "Sleep 15s"
sleep 15s

# Bases from Server1
for base in $basesfromserver1
    do
    rsync -e "ssh -p222" $param /var/lib/mysql/$base root@server2.domain.com:/var/lib/mysql
done

echo "Unlock bases"
echo "SET GLOBAL read_only = OFF; UNLOCK TABLES;" | /usr/bin/mysql -u backup -pPasWord
ssh -p222 root@server2.domain.com 'echo "SET GLOBAL read_only = OFF; UNLOCK TABLES;" | /usr/bin/mysql -u backup -pPasWord'

/etc/init.d/mysqld restart
ssh -p222 root@server2.domain.com /etc/init.d/mysqld restart

linux ,

Действие при превышении Load Average

September 4th, 2010

Простой скрипт рестартящий апач при превышении LA определенного значения (в данном примере 5):

#!/bin/sh

a=`uptime | awk -F "load average: " '{ print $2 }' | cut -d, -f1 | sed "s/[,.]//g"`;
if [ "$a" -lt 500 ]; then
    echo ALLOK;
    echo $a;
else
    echo $a;
    /etc/init.d/httpd restart;
fi

linux

Увеличение conntrack таблицы в Linux

October 16th, 2009

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

Oct 16 21:40:24 my-host kernel: ip_conntrack: table full, dropping packet.
Oct 16 21:40:29 my-host kernel: printk: 817 messages suppressed.

Посмотрим какое ограничение у нас прописано сейчас:

sysctl -a|grep net.ipv4.netfilter.ip_conntrack_max

И сколько физически используется сейчас:

sysctl -a|grep net.ipv4.netfilter.ip_conntrack_count

Решением этой проблемы является увеличение данного лимита:

sysctl net.ipv4.netfilter.ip_conntrack_max=631072

Не лишне данный параметр записать в sysctl.conf

linux , ,

Пересылка всей исходящей почты через smarthost в Linux (CentOS)

September 17th, 2009

В /etc/mail/sendmail.mc добавляем:

define(`SMART_HOST', `mail.domain.com')

Ставим пакет для sendmail и апдейтим конфигурацию:

yum install sendmail-cf
make -C /etc/mail
/etc/init.d/sendmail restart

почта ,

Базовая установка LAMP в Debian

June 7th, 2009

Ставим апач:

apt-get install apache2 php5 libapache2-mod-php5 php5-curl

Конфиги в /etc/apache2/
Для добавления виртуалхоста создаем его конфиг (domain.com) в /etc/apache2/sites-available/ и:

a2ensite domain.com

Для выключения:

a2dissite domain.com

Для включения модулей апача:

a2enmod rewrite

Ставим мускул:

apt-get install mysql-server mysql-client php5-mysql

Конфиги в /etc/mysql/

Ставим nginx:

apt-get install nginx

linux , , , ,

Изменение media для сетевухи под linux

June 3rd, 2009

Меняем:

ethtool --change eth0 autoneg off speed 10 duplex full

Чтобы действовало после перезагрузки добавляем в файл /etc/sysconfig/network-scripts/ifcfg-eth0:

ETHTOOL_OPTS="autoneg off speed 10 duplex full"

linux ,

Базовая настройка IPtables, защита sshd от перебора пароля

April 1st, 2009
chkconfig iptables on
service iptables start
iptables -F
iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
/etc/init.d/iptables save

На 5 минут будет установлена блокировка ip-адреса подбирающего пароли к sshd через 3 попытки .

linux , ,

Перенаправление почты root-а на внешний ящик (linux)

March 30th, 2009

Правим /etc/aliases (или /etc/mail/aliases, смотря какая система), пишем:

root: address@domain.com

Выполняем команду newaliases и все.

linux, почта ,

Заметка о работе с Yum

March 16th, 2009
yum upgrade #Обновить все пакеты
yum install package #Установить пакет
yum remove package #Удалить пакет
yum update package #Обновить пакет
yum --enablerepo=remi update package #Обновить с приоритетом реп-я remi
yum search package #Поиск пакета по имени и описанию
yum list package #Поиск пакета по имени
yum list installed #список всех установленных пакетов
yum info package #Подробная информация о пакете
yum deplist package #Посмотреть зависимости пакета
yum localinstall path_to_package #Установить пакет с диска
yum clean all #часто помогает при глюках yum-а
yum --noplugins install package #отключить плагины на время операции. Использовать когда мало памяти

linux ,

Оптимизация sysctl в linux

March 6th, 2009
net.core.somaxconn=16384
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.core.wmem_max=8388608
net.core.rmem_max=8388608
net.core.netdev_max_backlog=2500
net.ipv4.conf.all.arp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.tcp_fin_timeout=25
net.ipv4.tcp_timestamps=0
net.core.rmem_default=262144
net.core.wmem_default=262144
net.ipv4.tcp_keepalive_time=1800
net.ipv4.netfilter.ip_conntrack_max = 131072

Чтобы применить на лету:

sysctl -p

Необходимо учесть, что с таким кипаливом через полчаса будут рваться неактивные tcp-соединения. Например, ssh-сессии.

linux ,

Установка RAID1 на работающей Linux-системе

March 6th, 2009

Установка OpenVPN на Linux (в OpenVZ контейнер)

March 2nd, 2009

Ставим openvpn из yum-а или из RPM http://dag.wieers.com/rpm/packages/openvpn/

yum install openvpn lzo-devel
chkconfig openvpn on

Если ставится версия 2.0 то лучше поставить поверх из исходников последнюю версию (2.1 или старше) и переписать бинарник /usr/local/sbin/openvpn -> /usr/sbin/openvpn

На хост машине для контейнера надо разрешить tun-устройства и модули ната для iptables:

vzctl set 900 --save --devnodes net/tun:rw
vzctl stop 900
vzctl set 900 --save --iptables "ip_conntrack iptable_filter iptable_mangle ipt_state iptable_nat ip_nat_ftp ip_conntrack_ftp"
vzctl start 900

Затем подготавливаем папки конфигов:

cp -R /usr/share/openvpn/easy-rsa/2.0 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
chmod 777 *
mkdir /etc/openvpn/keys

Для версии 2.2 и старше будет чуть по другому:

cp -R /usr/share/doc/openvpn-2.2.0/easy-rsa /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa/2.0
chmod 777 *
mkdir /etc/openvpn/keys
touch /etc/openvpn/keys/index.txt
echo "01" > /etc/openvpn/keys/serial

в vars-файле в /etc/openvpn/easy-rsa/2.0 заменяем строку:

export KEY_DIR=...

на

export KEY_DIR=/etc/openvpn/keys

Генерируем все сертификаты:

cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh
openvpn --genkey --secret /etc/openvpn/keys/ta.key
./build-key client1
./build-key client2

В процессе генерации сертификатов можно ничего не вводить. Все оставить по дефолту.
Последняя строчка делается столько раз, сколько надо ключей для клиентов.
Не забыть, что если дата на клиенте меньше чем дата на сервере в момент генерации сертификата – подключение не пройдет.

Включаем роутинг:

echo 1 > /proc/sys/net/ipv4/ip_forward

и правим соотвествующую строчку в sysctl.conf

Конфиг для сервера /etc/openvpn/server.conf:

proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
client-to-client
duplicate-cn
keepalive 10 60
ping-timer-rem
comp-lzo
user nobody
group nobody
persist-key
persist-tun
verb 4
mute 10
log /var/log/openvpn/openvpn.log
status /var/log/openvpn/openvpn-status.log
push "dhcp-option DNS 208.67.222.222"

Ставим, включаем и делаем роутинг в iptables:

yum install iptables
# делаем автостарт файрволу
chkconfig iptables on
# правило для нат-а, VE_IP_ADDRESS заменить на IP, который будет у вас "исходящим" для впн-трафика
iptables -t nat -A POSTROUTING -s 10.10.10.0/255.255.255.0 -o venet0 -j SNAT --to-source VE_IP_ADDRESS
# сохраняем правила
/etc/init.d/iptables save
# еще раз смотрим на сохраненные правила и проверяем
iptables -t nat -L
mkdir /var/log/openvpn
chmod 777 /var/log/openvpn
service openvpn start

Конфиг одного клиента (будет работать для Windows XP, Windows Vista и Windows 7):

dev tun
proto tcp
remote vpn.domain.com
client
resolv-retry infinite
redirect-gateway def1
ca ca.crt
cert client1.crt
key client1.key
tls-client
tls-auth ta.key 1
cipher BF-CBC
ns-cert-type server
comp-lzo
persist-key
persist-tun
verb 4
route-metric 1
route-method exe
route-delay 2

Для Windows Vista, Windows 7 запускать клиента надо с админскими правами через батник:

cd c:\vpn\
"c:\program files\openvpn\bin\openvpn.exe" c:\vpn\client1.ovpn
pause

ЗЫ. На хостовой ноде может быть не загружен модуль ядра tun. Тогда:

modprobe tun
modprobe -l |grep tun

linux , ,

Включение/отключение SELinux

February 27th, 2009

Посмотреть статус selinux:

/usr/sbin/sestatus -v

Для отключения надо прописать строчку:

SELINUX=disabled

в /etc/selinux/config и перезагрузить систему

linux ,

Включение и переинициализация квот (linux)

February 11th, 2009
yum install -y quota
/sbin/quotaoff -a
/sbin/quotacheck -avugm
/sbin/quotaon -a

ЗЫ. Это помогает если в DirectAdmin не создаются пользователи с руганью: “Error with system Quotas sh: /usr/sbin/setquota: No such file or directory”

linux , ,

Установка Python 2.5 в CentOS

January 31st, 2009

К сожалению, Python 2.5 до сих пор не присутствует ни в одном из популярных репозиториев. Поэтому прийдется устанавливать его из исходников:

wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tgz
tar fxz Python-2.5.2.tgz
cd Python-2.5.2
./configure
make
make install

Таким образом в системе будет два Питона: 2.4 – имеющийся по дефолту (/usr/bin/python) и новый 2.5 (/usr/local/bin/python).

Если потом надо еще установить pysqlite, то:

yum install sqlite-devel
wget http://oss.itsystementwicklung.de/download/pysqlite/2.5/2.5.1/pysqlite-2.5.1.tar.gz
tar fxz pysqlite-2.5.1.tar.gz
cd pysqlite-2.5.1
/usr/local/bin/python setup.py build
/usr/local/bin/python setup.py install

А вообще я нифига не понимаю, почему такой довольно популярный язык так плохо поддерживается в репозиториях .. ?

linux , , ,

Обновление php на Linux через yum

January 16th, 2009

добавляем репозиторий и обновляемся:

rpm -ihv http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
yum --enablerepo=remi update php

linux, php ,

установка nginx на linux из yum

January 9th, 2009

Надо лишь добавить репозитарий:

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

или

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

или скачать rpm напрямую, например:

http://download.fedora.redhat.com/pub/epel/5/x86_64/nginx-0.6.33-1.el5.x86_64.rpm

linux, nginx , ,

linux, синхронизация времени

December 19th, 2008
ln -fs /usr/share/zoneinfo/Europe/Moscow /etc/localtime
yum install ntp
ntpdate pool.ntp.org
date

linux ,