Памятка по настройке CentOS

После перехода на Lion обнаружилось, что оракловый клиент под макосью больше нормально не работает. Вызов sqlpus вызывает «Segmentation fault: 11». Установка 32-битной версии клиента позволяет пользоваться плюсом (по слухам) но не решает проблему доступа к ораклу из php через oci8. Расширение oci8 ведь должно компилироваться для php, как 64-битная библиотека и с сдк от 32-битного инстанс-клиента ее сбилдить не получится.

Глобальное решение давно назрело и обкатано на работе — виртуальные машины.

Вот и дома я решил настроить какой-нибудь линукс в виртуалке, в качестве вебсервера. Кроме того, что его всегда можно будет откатить к любому сохраненному состоянию, единожды настроенную машину можно будет использовать на других тачках, да и если придется переустановить всю систему, не придется настраивать веб-сервер заново.

Вроде бы для этих целей неплохо подходит CentOS. Я взял версию 6.2, самую свежую на текущий момент и сделал виртуалку в бесплатном VirtualBox.

Сеть

Мои сетевые настройки:Теперь неплохо было бы подключиться к виртуалке по сети. Для этого в файле /etc/sysconfig/network-scripts/ifcfg-eth0 пишу следующее:

1
2
3
4
5
6
7
8
9
10
11
DEVICE="eth0"
HWADDR="08:00:27:62:0B:E4"
NM_CONTROLLED="yes"
ONBOOT="yes"
NETWORK=192.168.0.0
IPADDR=192.168.0.100
NETMASK=255.255.255.0
TYPE=Ethernet
GATEWAY=192.168.0.1
IPV6INIT=no
DNS1=192.168.0.1

и делаю

1
/etc/init.d/network restart

ifconfig покажет состояние сетки.

Теперь можно ходить на виртуалку по ssh, но хотелось бы еще туда ходить за вебом.

Апач

1
2
yum install httpd
chkconfig --levels 235 httpd on

Правим в конфиге, че нам надо:

1
vi /etc/httpd/conf/httpd.conf

Если что, апач можно перегрузить с новыми настройками:

1
service httpd restart

Разрешаем в файерволе хождение по 80 порту:

1
2
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save

Я часто использую символические линки на папки в документ-руте, а апач все жаловался, что нет к ним доступа, не смотря на Options FollowSymLinks. Оказалось, дело в SELinux. В боевой ситуации неплохо было бы разобраться с контекстами, но на домашнем тестовом сервере я пока его просто отключил:

1
setenforce 0

Логи апача смотрим так:

1
tail -f /var/log/httpd/access_log /var/log/httpd/error_log

PHP

И прочее нужное хозяйство:

1
2
3
4
5
6
7
yum install php
yum install php-pear
yum install php-devel
yum install gcc
yum install make
service httpd restart
pecl channel-update pecl.php.net

Ставим ораклового клиента

На этот момент скачал у оракла эти файлы:

instantclient-sdk-linux-11.2.0.3.0.zip
instantclient-sqlplus-linux-11.2.0.3.0.zip
instantclient-basic-linux-11.2.0.3.0.zip

в /opt/oracle/

1
2
3
4
5
6
7
8
yum install unzip
unzip instantclient-basic-linux-11.2.0.3.0.zip
unzip instantclient-sdk-linux-11.2.0.3.0.zip

cd /opt/oracle/instantclient_11_2

ln -s libclntsh.so.11.1 libclntsh.so
ln -s libocci.so.11.1 libocci.so

OCI8 для php

1
2
3
4
5
6
7
8
pecl download oci8
tar zxvf oci8-1.4.7.tgz
phpize
./configure --with-oci8=shared,instantclient,/opt/oracle/instantclient_11_2
make
make install

echo "extension=oci8.so" > /etc/php.d/oci8.ini

Переменные окружения

Теперь надо, чтобы у всех, в том числе у апача, были нужные переменные окружения, для этого в /etc/profile.d/oracle.sh написать:

1
2
3
4
export SQLPATH=/opt/oracle/instantclient_11_2
export TNS_ADMIN=$SQLPATH
export LD_LIBRARY_PATH=$SQLPATH:$LD_LIBRARY_PATH
export PATH=$PATH:$SQLPATH

Теперь у нас есть оракловый клиент, но сервер может находиться в другой сети, на работе, например и ходить туда надо как-нибудь через vpn, например.

Ставим pptp

1
2
3
rpm -Uvh http://poptop.sourceforge.net/yum/stable/fc7/pptp-release-current.noarch.rpm
yum install pptp
yum install pptp-setup

Создать / удалить подключение можно так:

1
2
3
pptpsetup --create mars --server 99.16.20.45 --username pasha --password 123 --encrypt
pptpsetup --delete mars
service network restart

Старт / стоп подключения (я написал в /etc/rc.local для автозапуска)

1
2
pppd call mars
killall pppd

Впн-соединение устанавливается, но оракловый сервер по-прежнему недоступен. Надо все запросы в адрес этого сервера перенаправлять в туннель впн.

Роутинг

Чтобы запросы к сети 10.222.0.* шли в впн, надо /etc/ppp/ip-up.local написать:

1
ip route add 10.222.0.0/24 dev ppp0

MTU

Если адрес сервера уже пингуется, но при попытке обменятьсяя данными впн-соединение сразу рвется, можно попробовать изменить mtu, я когда-то писал об этом.

1
ifconfig ppp0 mtu 1200

Эту команду я тоже написал в /etc/ppp/ip-up.local, он будет выполняться каждый раз при установке впн-соединения.

Делаем ему

1
chmod 700 /etc/ppp/ip-up.local

Общие папки

Теперь хотелось бы иметь внутри виртуалки папку с исходниками сайта, которые редактируются в хост-системе, в моем случае в макоси.

Шарить папку с хоста гостю можно через ssh.

Ставим fuse:

1
2
3
4
5
wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.9.1/fuse-2.9.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Ffuse-2.X%2F2.9.1%2F&ts=1346143906&use_mirror=garr
tar zxpfv fuse-*.gz
./configure
make
make install

Ставим sshfs:

1
2
3
4
5
6
wget http://downloads.sourceforge.net/project/fuse/sshfs-fuse/2.4/sshfs-fuse-2.4.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Fsshfs-fuse%2F2.4%2F&ts=1346142065&use_mirror=netcologne
tar zxpfv sshfs-fuse-2.4.tar.gz
./configure
make && make install

ln -s /usr/local/lib/libfuse.so.2 /lib/

Теперь в виртуалке можно примонтировать папку с проектом с мака

1
sshfs -o allow_other pavelmalinnikov@192.168.0.116:/Users/pavelmalinnikov/Sites/site  /mnt/116/

Если надо, можно примонтировать и виндовс-папку без ssh

1
mount -t cifs -o username=user //192.168.10.114/d$/web /mnt/114

Так я редактирую исходники сайта в любимом редакторе в макоси, а тестирую их, заходя браузером на виртуальный линукс.

Если что можно сделать покрасивее, пишите.

29.08.2012 • Метки: , , , • Рубрики: Разработка ПО

Ваш комментарий:

 

 


Только просмотр (без публикации)