Шпаргалка по установке Apache, PHP, MySQL, ProFTPD, Webmin, Bind, phpMyAdmin, IonCube в CentOS. Данная инструкция подойдет для VDS, DS и для системы которая, используется для тестов при разработке скриптов и т.д.
Итак приступим. Начнем с того что удалим yum-updatesd, который проверяет наличие обновлений, пользы от него мало, а вот cpu он использовать может наоборот много.
root@computer:$ service yum-updatesd stop
root@computer:$ rpm -e yum-updatesd
Обновим пакеты:
root@computer:$ yum update
Вместо yum-updatesd установим yum-cron:
root@computer:$ yum install yum-cron
root@computer:$ chkconfig --level 235 yum-cron on
root@computer:$ service yum-cron start
Установим и настроим firewall:
root@computer:$ yum install iptables system-config-securitylevel-tui
запускаем и настраиваем:
root@computer:$ system-config-securitylevel-tui
Выставляем — security levels (*), далее Custumize — и открываем порты — ssh, http, https, ftp в строке Custom ports — откроем порты для webmin — 10000:tcp, dns — 53:tcp 53:udp, и 60000-65000:tcp.
PHP
Удалим старый php 5.2 и установим новый 5.3. Для этого подключим нужные репозитории:
root@computer:$ yum install yum-priorities
root@computer:$ rpm -Uvh https://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
root@computer:$ rpm -Uvh https://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/ius-release-1.0-6.ius.el5.noarch.rpm
Удалим старый php и его модули:
root@computer:$ yum remove php php-*
Установим новый php 5.3:
root@computer:$ yum install php53u-pear php53u php53u-cli php53u-common php53u-devel php53u-gd php53u-mbstring php53u-mcrypt php53u-mysql php53u-pdo php53u-soap php53u-xml php53u-xmlrpc php53u-bcmath php53u-pecl-apc php53u-pecl-memcache php53u-snmp
Apache
Установим Apache:
root@computer:$ yum install httpd mod_ssl curl
Настроим авто-запуск Apache:
root@computer:$ chkconfig --level 235 httpd on
Включим VirtualHosts в Apache (перед этим установим редактор nano):
root@computer:$ yum install nano
root@computer:$ nano /etc/httpd/conf/httpd.conf
Разкаментим строку убрав впереди неё #
Запустим Apache:
root@computer:$ service httpd start
MySQL
Установим MySQL:
root@computer:$ yum install mysql mysql-server
Настроим авто-запуск MySQL:
root@computer:$ chkconfig --level 235 mysqld on
Запустим MySQL:
root@computer:$ service mysqld start
Зададим root пароль для MySQL:
root@computer:$ mysqladmin -u root password VASHPAROLI
Отредактируем конфиг файл MySQL:
root@computer:$ nano /etc/my.cnf
Заменим содержимое конфиг файла на следующее:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld_safe]
socket = /var/lib/mysql/mysql.sock
nice = 0
pid-file = /var/run/mysqld/mysqld.pid
[mysqld]
user = mysql
socket = /var/lib/mysql/mysql.sock
port = 3306
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[isamchk]
key_buffer = 16M |
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld_safe]
socket = /var/lib/mysql/mysql.sock
nice = 0
pid-file = /var/run/mysqld/mysqld.pid
[mysqld]
user = mysql
socket = /var/lib/mysql/mysql.sock
port = 3306
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[isamchk]
key_buffer = 16M
Перезапустим MySQL:
root@computer:$ service mysqld restart
BIND (DNS)
Установим BIND:
root@computer:$ yum install bind
Настроим его авто-запуск:
root@computer:$ chkconfig --level 235 named on
ProFTPD
Удалим установленный VsFTPD:
root@computer:$ yum remove vsftpd
Установим пакеты которые понадобятся для сборки и установки ProFTPD:
root@computer:$ yum install gcc gcc-c++
Скачаем, соберем и установим ProFTPD:
root@computer:$ cd /tmp/
root@computer:$ wget --passive-ftp ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3e.tar.gz
root@computer:$ tar xvfz proftpd-1.3.3e.tar.gz
root@computer:$ cd proftpd-1.3.3e/
root@computer:$ ./configure --sysconfdir=/etc
root@computer:$ make
root@computer:$ make install
root@computer:$ cd ..
root@computer:$ rm -fr proftpd-1.3.3e*
root@computer:$ ln -s /usr/local/sbin/proftpd /usr/sbin/proftpd
Создадим файл для авто-запуска ProFTPD:
root@computer:$ nano /etc/init.d/proftpd
#!/bin/sh
# $Id: proftpd.init,v 1.1 2004/02/26 17:54:30 thias Exp $
#
# proftpd This shell script takes care of starting and stopping
# proftpd.
#
# chkconfig: - 80 30
# description: ProFTPD is an enhanced FTP server with a focus towards \
# simplicity, security, and ease of configuration. \
# It features a very Apache-like configuration syntax, \
# and a highly customizable server infrastructure, \
# including support for multiple 'virtual' FTP servers, \
# anonymous FTP, and permission-based directory visibility.
# processname: proftpd
# config: /etc/proftp.conf
# pidfile: /var/run/proftpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/sbin/proftpd ] || exit 0
RETVAL=0
prog="proftpd"
start() {
echo -n $"Starting $prog: "
daemon proftpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd
}
stop() {
echo -n $"Shutting down $prog: "
killproc proftpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status proftpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/proftpd ]; then
stop
start
fi
;;
reload)
echo -n $"Re-reading $prog configuration: "
killproc proftpd -HUP
RETVAL=$?
echo
;;
*)
echo "Usage: $prog {start|stop|restart|reload|condrestart|status}"
exit 1
esac
exit $RETVAL |
#!/bin/sh
# $Id: proftpd.init,v 1.1 2004/02/26 17:54:30 thias Exp $
#
# proftpd This shell script takes care of starting and stopping
# proftpd.
#
# chkconfig: - 80 30
# description: ProFTPD is an enhanced FTP server with a focus towards \
# simplicity, security, and ease of configuration. \
# It features a very Apache-like configuration syntax, \
# and a highly customizable server infrastructure, \
# including support for multiple 'virtual' FTP servers, \
# anonymous FTP, and permission-based directory visibility.
# processname: proftpd
# config: /etc/proftp.conf
# pidfile: /var/run/proftpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/sbin/proftpd ] || exit 0
RETVAL=0
prog="proftpd"
start() {
echo -n $"Starting $prog: "
daemon proftpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd
}
stop() {
echo -n $"Shutting down $prog: "
killproc proftpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status proftpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/proftpd ]; then
stop
start
fi
;;
reload)
echo -n $"Re-reading $prog configuration: "
killproc proftpd -HUP
RETVAL=$?
echo
;;
*)
echo "Usage: $prog {start|stop|restart|reload|condrestart|status}"
exit 1
esac
exit $RETVAL
Выставим права на файл:
root@computer:$ chmod 755 /etc/init.d/proftpd
Отредактируем конфиг файл:
root@computer:$ nano /etc/proftpd.conf
Изменим строки в конфиг файле на эти:
И в конец файла добавим следующие строки для входа по FTP от пользователя root:
<Global>
RootLogin on
</Global> |
<Global>
RootLogin on
</Global>
Настроим авто-запуск ProFTPD:
root@computer:$ chkconfig --levels 235 proftpd on
Запустим ProFTPD:
root@computer:$ service proftpd start
Webmin
Установим модули необходимые для работы Webmin:
root@computer:$ yum install perl-Net-SSLeay
Скачаем последнюю версию Webmin:
root@computer:$ wget https://www.webmin.com/download/rpm/webmin-current.rpm
Установим Webmin:
root@computer:$ rpm -Uvh imea_skachannogo_paketa.rpm
phpMyAdmin
Установим phpMyAdmin:
root@computer:$ yum install phpmyadmin
Отредактируем конфиг файл:
root@computer:$ nano /etc/httpd/conf.d/phpMyAdmin.conf
Приведем его к виду:
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
<Directory /usr/share/phpMyAdmin/>
order deny,allow
Allow from all
# deny from all
# allow from 127.0.0.1
# allow from ::1
</Directory>
# This directory does not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc. This may break your mod_security implementation.
#
#<IfModule mod_security.c>
# <Directory /usr/share/phpMyAdmin>
# SecRuleInheritance Off
# </Directory>
#</IfModule> |
# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
<Directory /usr/share/phpMyAdmin/>
order deny,allow
Allow from all
# deny from all
# allow from 127.0.0.1
# allow from ::1
</Directory>
# This directory does not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries>
Order Deny,Allow
Deny from All
Allow from None
</Directory>
# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc. This may break your mod_security implementation.
#
#<IfModule mod_security.c>
# <Directory /usr/share/phpMyAdmin>
# SecRuleInheritance Off
# </Directory>
#</IfModule>
Настроим авторизацию в phpMyAdmin:
root@computer:$ nano /usr/share/phpMyAdmin/config.inc.php
Найдем строку:
$cfg['Servers'][$i]['auth_type'] = ‘cookies‘; |
$cfg['Servers'][$i]['auth_type'] = ‘cookies‘;
И приведем её к виду:
$cfg['Servers'][$i]['auth_type'] = ‘http‘; |
$cfg['Servers'][$i]['auth_type'] = ‘http‘;
Перезапустим Apache чтобы изменения вступили в силу:
root@computer:$ service httpd restart
IonCube
Качаем и разархивируем IonCube:
root@computer:$ wget https://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
root@computer:$ tar zxvf ioncube_loaders_lin_x86.tar.gz
root@computer:$ mv ioncube /usr/local/
Добавим IonCube в конфиг PHP:
root@computer:$ nano /etc/php.ini
В конец файла добавим следующую строку:
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3.so |
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3.so
Для работы IonCube необходимо отключить повышенный уровень безопасности в CentOS:
root@computer:$ nano /etc/selinux/config
Изменим конфиг файл:
Перезапустим Apache для применения изменений:
root@computer:$ service httpd restart
Всё установлено можно перезапустить систему, для проверки нормального старта всех модулей:
root@computer:$ reboot