Перейти к собственно контенту

Архив

Метка: debian

Имеется сервер с Debian Wheezy, панелью управления сервером ISPmanager 4 и PHP 5.4, но заказчику понадобилось добавить туда поддержку PHP 5.3.
Устанавливаем все что необходимо для сборки PHP:
apt-get install -y build-essential git libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libxml2-dev libssl-dev libbz2-dev libcurl3-dev libdb5.1-dev libjpeg-dev libpng-dev libXpm-dev libfreetype6-dev libt1-dev libgmp3-dev libc-client-dev libldap2-dev libmcrypt-dev libmhash-dev freetds-dev libz-dev libmysqlclient-dev ncurses-dev libpcre3-dev unixODBC-dev postgresql-server-dev-9.1 libsqlite-dev libaspell-dev libreadline6-dev librecode-dev libsnmp-dev libtidy-dev libxslt-dev libt1-dev libcurl4-openssl-dev libgdbm-dev libqdbm-dev libdb++-dev php-pear libmagickwand-dev libmagickcore-dev subversion
apt-get build-dep -y php5

ln -s /usr/include/qdbm/depot.h /usr/include/depot.h
ln -s /usr/lib/libc-client.a /lib/x86_64-linux-gnu/libc-client.a
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

Копируем репозиторий исходники phpfarm:
git clone https://github.com/fpoirotte/phpfarm.git /usr/local/share/phpfarm/

Указываем опции для сборки ( создаем файл /usr/local/share/phpfarm/src/custom/options-5.3.sh с нижеуказанным содержимым ):
configoptions="\
--with-regex=php \
--disable-rpath \
--disable-static \
--with-pic \
--with-layout=GNU \
--enable-calendar \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-bcmath \
--with-bz2 \
--enable-ctype \
--with-db4=/usr \
--with-qdbm=/usr \
--without-gdbm \
--with-cdb \
--with-iconv \
--enable-exif \
--enable-ftp \
--with-gettext \
--enable-mbstring \
--with-onig=/usr \
--with-pcre-regex=/usr \
--enable-shmop \
--enable-sockets \
--enable-wddx \
--with-libxml-dir=/usr \
--with-zlib \
--with-kerberos=/usr \
--with-openssl=/usr \
--enable-soap \
--enable-zip \
--with-mhash=yes \
--with-mysql-sock=/var/run/mysqld/mysqld.sock
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd (далее…)

Добавляем мультимедиа репозиторий и обновляем список пакетов:
echo "deb http://www.deb-multimedia.org wheezy main non-free" >> /etc/apt/sources.list
echo "deb-src http://www.deb-multimedia.org wheezy main non-free" >> /etc/apt/sources.list
apt-get update
apt-get install deb-multimedia-keyring # если вылезла ошибка то повторить
apt-get update

Переходим в каталог с исходниками:
cd /usr/local/src

Устанавливаем все необходимые зависимости
aptitude install -y libfaad-dev faad faac libfaac0 libfaac-dev libmp3lame-dev x264 libx264-dev libxvidcore-dev build-essential checkinstall

Устанавливаем все необходимые зависимости для сборки ffmpeg
apt-get build-dep ffmpeg

Скачиваем актуальный исходный код
apt-get source ffmpeg

Переходим в каталог с исходниками
cd ffmpeg-*

Задаем опции сборки:
./configure --enable-gpl --enable-nonfree --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-postproc --enable-swscale --enable-pthreads --enable-x11grab --enable-libdc1394 --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb

Делаем маленький фикс ))):
mkdir -p /usr/local/share/ffmpeg

Собираем .deb пакет:
checkinstall -D --install=no --pkgname=ffmpeg-full --autodoinst=yes -y

Если получили ошибку:
libavcodec/libx264.c:492: undefined reference to `x264_encoder_open_125'

то переходим на каталог выше, удаляем x264 и собираем из исходного кода и пытаемся повторить сборку ffmpeg:
cd ..
apt-get remove x264
git clone git://git.videolan.org/x264.git
cd x264
./configure --enable-static --enable-shared
make && make install
ldconfig
cd .. && cd ffmpeg*
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/src/x264/libx264.a ./configure --enable-gpl --enable-nonfree --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-postproc --enable-swscale --enable-pthreads --enable-x11grab (далее…)

В дополнение к этой статье я напишу как установить Redmine и при необходимости перенести данные на сервер с ОС CentOS 6.5 и панелью ISPmanager Lite.

У нас имеется один сервер с рабочим Redmine и второй с ISPmanager Lite на котороый и будет делать перенос.

1) Ставим пакеты для сборки сорцов:

# yum install gcc-c++ patch readline readline-devel zlib zlib-devel
# yum install libyaml-devel libffi-devel openssl-devel make
# yum install bzip2 autoconf automake libtool bison iconv-devel mysql-devel

2) Устанавливаем RVM ( Ruby Version Manager ):

# curl -L get.rvm.io | bash -s stable

3) Выставляем переменные окружения:

# source /etc/profile.d/rvm.sh

4) Ставим Ruby 1.9.3 и назначаем дефолтным в системе, проверяем работоспособность:

# rvm install 1.9.3
# rvm use 1.9.3 --default

Провеверям:

# ruby --version
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]

5) Ставим Passenger и добавляем поддержку в Nginx:

# gem install passenger

Качаем исходный код nginx:

# cd /tmp
# wget http://nginx.org/download/nginx-1.7.9.tar.gz && tar xvzf nginx-1.7.9.tar.gz

Смотри с какими параметрами был уже бинарик у нас собран:

# nginx -V
nginx version: nginx/1.7.9
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-debug --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module (далее…)

Как правило у большинства домашних провайдеров всегда динамические IP адреса, а так как порой надо было иметь доступ к внешнему жесткому диску MyBookLive из интернета — было решено поднять свой DynDNS сервер.
Нам потребуется домен и DNS сервер который будет обслуживать домен.
Про настройку Bind в качестве Master и Slave сервера писать не буду — в интернете куча статей, у меня крутится Bind99 на FreeBSD в качестве Master + Slave с двумя внешними IP адресами на сервере.

На клиенте ( у меня это MyBookLive с Debian на борту ) генерируем ключи для возможности удаленного обновления зоны:
dnssec-keygen -a hmac-md5 -b 128 -n USER deathstar

Должно получится два файла Kdeathstar.+157+03649.private и Kdeathstar.+157+03649.key
Смотрим содержимое файла Kdeathstar.+157+03649.key
deathstar# cat Kdeathstar.+157+03649.key
deathstar. IN KEY 0 3 157 OoMn1WMkDFdAH/ZZ9ip0Imm==

На сервере создаем файл /etc/namedb/keys.conf с таким содержимым ( значение для строки secret берем выше из файла ключа Kdeathstar.+157+03649.key на клиенте ):
key deathstar {
algorithm hmac-md5;
secret "OoMn1WMkDFdAH/ZZ9ip0Imm==";
};

Затем на сервере в файл /etc/namedb/named.conf впишите в самый конец файла:
include "/etc/namedb/keys.conf";

и приводим зону в этом же файле к такому состоянию:
zone "deathstar.name" {
type master;
file "/etc/namedb/master/deathstar.name";
allow-update { key deathstar; };
allow-query { any; };
notify yes;
};

и перезапускаем bind
deathstar# /etc/rc.d/named restart

На клиенте создаем скрипт такого вида:
#!/bin/sh

# SETTINGS
TTL=10
SERVER=ns1.deathstar.name
HOSTNAME=netdisk.deathstar.name.
ZONE=deathstar.name
KEYFILE="/etc/Kdeathstar.+157+03649.private"

IP_FILE="/tmp/myBookLiveIP"
OLDIP="$(grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' $IP_FILE)"
IP="$(wget -q checkip.dyndns.org -O - | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')"
DNSIP="$(host -t A $HOSTNAME | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')"

if (далее…)

В дополнение к этой статье  напишу как сделать несколько IP адресов на 3proxy:

 

Установка все как в предыдущей статье

( в CentOS : yum install -y 3proxy

Debian / Ubuntu: apt-get install 3proxy )

но конфиг уже выглядит иначе

# Name servers
nserver 8.8.8.8
nserver 8.8.4.4
# nscache is good to save speed, traffic and bandwidth
nscache 65536

# Here we can change timeout values

users user:CL:password

daemon

log /var/log/3proxy/3proxy.log
logformat «- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T»
archiver gz /bin/gzip %F
rotate 30

auth strong
allow * * * *

proxy -n -a -p3128 -i100.218.211.82 -e100.218.211.82 -p3128
proxy -n -a -p3128 -i142.218.209.164 -e142.218.209.164 -p3128
proxy -n -a -p3128 -i167.248.229.155 -e167.248.229.155 -p3128
proxy -n -a -p3128 -i162.211.209.142 -e162.211.209.142 -p3128
proxy -n -a -p3128 -i162.213.109.133 -e162.213.109.133 -p3128
proxy -n -a -p3128 -i162.219.302.124 -e162.219.302.124 -p3128

auth strong

flush

maxconn 32
socks -n -a -p3128 -i100.218.211.82 -e100.218.211.82 -p3128
socks -n -a -p3128 -i142.218.209.164 -e142.218.209.164 -p3128
socks -n -a -p3128 -i167.248.229.155 -e167.248.229.155 -p3128
socks -n -a -p3128 -i162.211.209.142 -e162.211.209.142 -p3128
socks -n -a -p3128 -i162.213.109.133 -e162.213.109.133 -p3128
socks -n -a -p3128 -i162.219.302.124 -e162.219.302.124 -p3128

setgid 65535
setuid 65535

Недавно сообщалось о новой не менее серьёзной уязвимости, нежели Heartbleed, (CVE-2014-6271) в популярной командной оболочке Bash для UNIX-систем. Командный интерпретатор Bash (или Bourne-Again Shell) используется во многих серверах на базе Unix и Linux. Уязвимость, которую называют Bashdoor или Shellshock, затрагивает все версии Bash.В отличие от Heartbleed, эксплуатирующие уязвимость Bash атаки позволяют удалённо исполнять код, благодаря чему злоумышленники могут распространять вредоносное ПО. Как отмечают эксперты, большая часть атак будет нацелена на веб-серверы, а особенно уязвимыми являются те, на которых исполняются PHP-приложения.
Так как не нашел исправленного пакета под Debian Squeeze, пришлось качать исходники, накладывать патчи, и собирать все это дело самому

Мой /etc/apt/source.list выглядит следующим образом
deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Other - Adding the lsb source for security updates
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free

И так, ставим пакет build-essential
aptitude update && aptitude install build-essential

Далее скачиваем сорцы Bash и распаковываем
cd /usr/src
wget ftp://ftp.hawo.stw.uni-erlangen.de/gnu/bash/bash-4.3.tar.gz
tar zxvf bash-4.3.tar.gz
cd bash-4.3

скачиваем и накладываем патчи на сорцы
for i in $(seq -f "%03g" 1 26); do
wget -nv ftp://ftp.hawo.stw.uni-erlangen.de/gnu/bash/bash-4.3-patches/bash43-$i
patch -p0 < bash43-$i done

и собираем и устанавливаем
./configure && make && make install

Делаем бекап старой версии Bash и создаем симлинк на (далее…)