Установка бесплатной панели VHCS на Fedora Core 3
просмотреть
отследить
VHCS - это, со слов разработчиков, профессиональная панель управления для виртуального хостинга.
Рассмотрим ее установку на Fedora Core 3.
Внимание! Так как это не коммерческая разработка, а система с открытым
исходным кодом, то возможны разнообразные проблемы вплоть до выхода
операционной системы из строя. Действуйте на свой страх и риск.
Подготовка.
Так как VHCS переписывает все задачи крона, необходимо их сохранить:
crontab -l > crontabbackup-vhcs.cron
Далее необходимо установить apt-get с http://apt.freshrpms.net/ и обновить систему:
wget http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/3/apt/apt-0.5.15cnc6-1.1.fc3.fr.i386.rpm
rpm -Uvh apt-0.5.15cnc6-1.1.fc3.fr.i386.rpm
apt-get update
apt-get dist-upgrade
Установим необходимое ПО:
apt-get install httpd php postfix mysql-server proftpd php-mysql php-pear php-imap php-gd ncftp bind
Установка.
Установка должна проходить с отключенным SELinux, иначе панель выдаст кучу предупреждений и будет работать нестабильно.
Активируем дисковые квоты:
Необходимо в файле /etc/fstab вписать поддержку квот для
разделов, где расположен /home - для Fedora Core 3 это обычно
/dev/VolGroup00/LogVol00/
Эта опция выглядит так: defaults,usrquota.
Далее необходимо создать собственно файл дисковых квот и инициализировать его:
touch /aquota.user
chmod 600 /aquota.user
mount -o remount /
quotacheck -avugm
Установка и настройка Yum
Все необходимые пакеты для vhcs хранятся в репозитарии yum на http://apt.sw.be.
В файл /etc/sysconfig/rhn/sources необходимо добавить:
yum dag http://apt.sw.be/fedora/3/en/$ARCH/dag
А в файл /etc/yum.repos.d/dag.repo:
[dag]
name=Dag RPM Repository for Fedora Core
baseurl=http://apt.sw.be/fedora/$releasever/en/$basearch/dag
enabled=1
wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txt
yum update
yum remove vsftpd
yum upgrade
yum install \
libmcrypt libmcrypt-devel expect libxslt-devel libjpeg-devel libpng-devel \
freetype-devel cyrus-imapd cyrus-imapd-devel libc-client-devel \
php-imap php-pgsql postgresql-devel php-snmp net-snmp-devel \
mysql-admin httpd-devel \
cyrus-sasl cyrus-sasl-plain postfix \
lynx
yum install lynx postfix mysql mysql-devel libmcrypt libmcrypt-devel \
expect libxslt-devel libjpeg-devel libpng-devel \
freetype-devel php-imap cyrus-imapd cyrus-imapd-devel \
libc-client-devel php-imap php-pgsql postgresql-devel php-snmp \
net-snmp-devel
ProFTPD
ProfTPD необходим с поддержкой опций, которые не входят в тот, что идет пакетом. Поэтому надо доустановить из исходников:
cd /usr/local/
wget ftp://ftp.ibiblio.org/pub/mirrors/proftpd/distrib/source/proftpd-1.2.10.tar.gz
tar zxvf proftpd-1.2.10.tar.gz
mv proftpd-1.2.10 proftpd
cd /usr/local/proftpd
./configure \
--sysconfdir=/etc \
--localstatedir=/var \
--prefix=/usr \
--with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
--with-includes=/usr/include/mysql \
--with-libraries=/usr/lib/mysql
make && make install
После установки в конфигурационном файле надо установить User и
Group в ftp/ftp и прописать полное имя сервера в /etc/hosts, иначе
proftpd не стартует.
Модули для Perl
Необходимо установить определенные модули из CPAN:
perl -MCPAN -e shell, после настройки CPAN установить модули:
install MIME::Entity MIME::Parser MIME::Base64 Crypt::CBC
Crypt::Blowfish Term::ReadPassword
Установка OpenSSL
cd /usr/local/
wget http://www.openssl.org/source/openssl-0.9.7e.tar.gz
tar xvfz openssl-0.9.7e.tar.gz
mv openssl-0.9.7e openssl
cd /usr/local/openssl/
./config ; make && make test && make install
cp -p /usr/local/openssl/tools/c_rehash /usr/local/bin/c_rehash
chmod a+x /usr/local/bin/c_rehash
Установка PHP
Установка PHP из исходников даст возможность включить пропущенные расширения, недоступные в RPM пакетах:
cd /usr/local/
wget http://us2.php.net/distributions/php-4.3.10.tar.bz2
tar xjvf php-4.3.10.tar.bz2
mv php-4.3.10 php
cd php
./configure \
--with-mysel --with-pgsql --with-mcrypt=/usr/lib \
--build=i386-redhat-linux --target=i386-redhat-linux-gnu \
--with-jpeg --with-openssl --with-png \
--with-pear --with-calendar --with-xml \
--with-ftp --with-freetype --with-bz2 --with-iconv \
--sysconfdir=/etc --mandir=/usr/share/man \
--enable-sockets --enable-calendar --enable-bcmath \
--enable-ctype --enable-exif --enable-filepro \
--enable-ftp --enable-memory-limit \
--enable-sigchild --enable-magic-quotes \
--enable-yp --enable-track-vars \
--with-apxs2=/usr/sbin/apxs
make ; make instal
После можно удалить лишнее включение загрузки libphp4.so в /etc/httpd/conf/httpd.
Установка Postfix с поддержкой auth smtp
cd /usr/local/
wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.20.tar.gz
tar xvfz cyrus-sasl-2.1.20.tar.gz
mv cyrus-sasl-2.1.20 cyrus-sasl
cd cyrus-sasl
./configure
make && make install
ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
perl -pi.bak -e "s/saslauthd/auxprop/g" /usr/local/lib/sasl2/smtpd.conf
wget http://postfix.energybeam.com/source/official/postfix-2.2.1.tar.gz
tar xvfz postfix-2.2.1.tar.gz
mv postfix-2.2.1 /usr/local/postfix
cd /usr/local/postfix
make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/local/include/sasl" \
AUXLIBS="-L/usr/local/lib -lsasl2"
make && make install
Courier - pop3d, imapd и authd
cd /usr/local/
wget http://unc.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.55.tar.bz2
tar xjvf courier-authlib-0.55.tar.bz2
mv courier-authlib-0.55 courier-authlib
cd /usr/local/courier-authlib
./configure --with-redhat --disable-root-check \
--with-mailuser=courier --with-mailgroup=courier
make && make install && make install-configure
cd /usr/local
wget http://unc.dl.sourceforge.net/sourceforge/courier/courier-0.49.0.tar.bz2
tar xjvf courier-0.49.0.tar.bz2
mv courier-0.49.0 courier
cd /usr/local/courier
./configure --with-redhat --disable-root-check \
--with-mailuser=courier --with-mailgroup=courier \
--with-db=gdbm
make && make install && make install-configure
echo 'su -c "/usr/lib/courier/share/sqwebmail/cleancache.pl" bin' >> /etc/cron.hourly/courier.cron
touch /usr/local/etc/authlib/userdb
chown daemon /usr/local/etc/authlib/userdb
chgrp daemon /usr/local/etc/authlib/userdb
chmod 600 /usr/local/etc/authlib/userdb
groupadd courier
useradd -c 'Courier Mail Server' -d /dev/null -g courier -s /bin/false courier
ln -s /usr/lib/courier/sbin/webmaild /etc/init.d
echo '/usr/local/sbin/authdaemond' >> /etc/rc.local
echo '/usr/lib/courier/sbin/courier start' >> /etc/rc.local
echo '/usr/lib/courier/sbin/pop3d start' >> /etc/rc.local
echo '/usr/lib/courier/sbin/imapd start' >> /etc/rc.local
/etc/rc.local
Предустановочные патчи:
Необходимо задать пароль mysql (пустой пароль оставлять нельзя).
ln -s /usr/libexec/postfix /usr/lib/postfix
ln -s /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/libperl.so /lib/
cp -p /usr/local/courier/rfc822/rfc822.h /usr/local/include/
mysqladmin create vhcs2
service named start
ln -s /etc/httpd /etc/apache2
adduser www-data
Установка VHCS2
Необходимо скачать дистрибутив с http://www.vhcs.net, распаковать его и изменить в файле vhcs2.conf следующие параметры:
SERVER_HOSTNAME = Имя сервера
BASE_SERVER_IP = Основной IP
DATABASE_PASSWORD = Пароль mysql
BIND_CONF_FILE = /etc/named.conf
BIND_DB_DIR = /var/named/chroot/var/named
BIND_DB_DIR = /var/named/chroot/var/named
APACHE_CMD = /etc/rc.d/init.d/httpd
APACHE_NAME = httpd
APACHE_LOG_DIR = /var/log/httpd
APACHE_USERS_LOG_DIR = /var/log/httpd/users
APACHE_BACKUP_LOG_DIR = /var/log/httpd/backup
APACHE_CONF_FILE = /etc/httpd/sites-available/vhcs2.conf
APACHE_USER = apache
APACHE_GROUP = apache
MTA_SASLDB_FILE = /etc/sasldb2
MTA_SASLDB_PASSWD2 = /usr/sbin/saslpasswd2
CMD_MAKEUSERDB = /usr/local/sbin/makeuserdb
CMD_NAMED = /etc/init.d/named
CMD_HTTPD = /etc/init.d/httpd
MAIL_TRAFF_LOG = maillog
После чего приступаем к собственно установке:
make ; make install
cp -R /tmp/vhcs2 /
cd /var/www/vhcs2/engine/setup/
./vhcs2-setup
Теперь vhcs будет установлен в диалоговом режиме.
Вход в панель http://сервер/vhcs2/
Однако входить еще рано, необходимо установить постпатч:
Установка постпатча
echo 'include /etc/httpd/sites-available/vhcs2.conf' >> /etc/httpd/conf/httpd.conf
cd /etc/vhcs2/bind/parts/
cp -p cfg_entry.tpl cfg_entry.tpl.bak
perl -pi.bak -e "s/\{DB_DIR\}\/\{DMN_NAME\}\.db/\{DMN_NAME\}\.db/g" cfg_entry.tpl
perl -pi.bak -e "s/0700/0755/g" /var/www/vhcs2/engine/vhcs2-*
Также необходимо инициализировать базу sasl. Просто добавим пользователя test:
saslpasswd2 test
И, наконец, создаем свой скрипт для рестарта панели:
Init скрипт /etc/init.d/vhcs2
#!/bin/sh
# description: Start or stop the vhcs2 daemon
#
### BEGIN INIT INFO
# Provides: vhcs2
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: Start or stop the vhcs2 daemon
### END INIT INFO
name='vhcs2'
lockfile=/var/lock/subsys/vhcs2
confFile=/etc/vhcs2/vhcs2.conf
pidFile=/var/log/vhcs2/vhcs2.pid
daemon=/var/www/vhcs2/daemon/vhcs2_daemon
name=vhcs2_daemon
case "$1" in
'start')
$daemon >/dev/null 2>&1 /dev/null 2>&1
fi
;;
'stop')
pidfile=`grep "^pidfile=" $confFile | sed -e 's/pidfile=//g'`
kill `cat $pidfile`
RETVAL=$?
if [ "$RETVAL" = "0" ]; then
rm -f $lockfile
fi
;;
'status')
pidfile=`grep "^pidfile=" $confFile | sed -e 's/pidfile=//g'`
if [ "$pidfile" = "" ]; then
pidfile=$pidFile
fi
if [ -s $pidfile ]; then
pid=`cat $pidfile`
kill -0 $pid >/dev/null 2>&1
if [ "$?" = "0" ]; then
echo "$name (pid $pid) is running"
RETVAL=0
else
echo "$name is stopped"
RETVAL=1
fi
else
echo "$name is stopped"
RETVAL=1
fi
;;
'restart')
$stop && $start
RETVAL=$?
;;
*)
echo "Usage: $0 { start | stop | restart }"
RETVAL=1
;;
esac
exit $RETVAL
Установка бесплатной панели управления хостингом завершена.