INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / RSS / GPG

Ложим apache (ну можно и nginx) в chroot в CentOS (Fedora, RedHat)

№ 6639 В разделе Sysadmin от August 22nd, 2014,
В подшивках: , ,

Появилась задача держать php4 и php5 на одном сервере и дабы не разводить адский геморрой (о да, это тот еще секс) решил просто запустить 2 вебсервера. Благо дополнительный IP адрес на сервере уже был и не использовался совсем.

Итак, первое что делаем это смотрим netstat и видим вот такую хрень:

bash-3.2# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
...
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      15164/httpd
...
tcp        0      0 :::22                       :::*                        LISTEN      2592/sshd
tcp        0      0 :::443                      :::*                        LISTEN      15041/httpd

Apache висит сразу на всех интерфейсах. Его необходимо перевешать на первый IP адрес, на который смотрят домены апача. Не забывайте, что если домены смотрят на второй IP адрес, то их срочняком нужно переправлять на первый IP. Кроме тех, которые должны появиться внутри chroot, разумеется 😉

После изменения httpd.conf время установить специальный пакет yum-utils:

sudo yum install yum-utils

И вот сейчас можно наконец создать директорию, где будет находиться ваш chroot и создать окружение:

WCR=/var/chroot/2nd_apache
mkdir $WCR
rpm --root $WCR --initdb
yumdownloader --destdir=~ centos-release
rpm --root $WCR -ivh --nodeps ~/centos-release*.rpm
yum --installroot=$WCR -y install httpd php

Если у вас вместо CentOS стоит Fedora или Redhat, то заменяете на fedora-release или redhat-release. Теперь ждем конца установки и завершаем окружение монтированием системных директорий и запуском apache. Для этого создадим скрипт, который необходимо запускать при старте системы:

#!/bin/bash
WCR=/var/chroot/2nd_apache
mount -o bind /dev/ $WCR/dev
mount -o bind /sys/ $WCR/sys
mount -t proc proc $WCR/proc/
chroot $WCR /etc/init.d/httpd start

Вуаля! Теперь делаете скрипт исполняемым, ложите в init.d и заставляете запускаться при старте системы.

Делаете netstat и видите как апачи тихо шуршат на выделеных IP адресах:

bash-3.2# netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
...
tcp        0      0 213.118.129.100:80          0.0.0.0:*                   LISTEN      15164/httpd
tcp        0      0 213.118.128.100:80          0.0.0.0:*                   LISTEN      15041/httpd
...

Кстати, если у вас возникла потребность подключать дополнительные репозитории, то вот еще есть какой момент. Например, внутри chroot мне нужно иметь php 5.3, а в репозитории только 5.1. Значит нужно подключить другие репозитории с более новым PHP прямо внутри chroot. Сделать это можно так:
rpm --root=$WCR -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm --root=$WCR -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm

Мы указали –root, который является нашей директорией для chroot. Внутри нее идем в /etc/yum.repos.d и в файле webtatic.repo в секции [webtatic] ставим enabled=1.

Теперь можно проверить какие версии PHP нам доступны для установки
yum --installroot=$WCR --showduplicates list php

Самая свежая поставится автоматически или укажите версию пакета рядом с его именем
yum --installroot=$WCR install php

Подробнее об установке конкретных версий можно почитать здесь. Не забудьте поставить дополнительные модули php 😉

Нет комментариев »

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Яндекс.Метрика

Fortune cookie: You are witty, charming, handsome and above average in length.