Устанавливаем Apache 2, PHP 5.3 и MySQL 5.1 на CentOS 5.4/5.5

В моей работе мне чаще всего приходится работать с системами на Debian или Ubuntu, но в этот раз новый сервер оказался на CentOS, а так как с этой системой я сталкиваюсь впервые, то пришлось немного «погуглить», прежде чем освоиться в ней. Для начала необходимо было развернуть web сервер для проектов, то есть поставить Apache+PHP и MySQL. Впоследствии необходимо будет настроить эти компоненты, а так же установить и настроить nginx, но пока не об этом.

В качестве установщика пакетов здесь используется yum вместо привычного apt-get, что в принципе и понятно,т.к. данный дистрибутив основан на коммерческом Red Hat Enterprise Linux компании Red Hat, и совместимый с ним. Да и сам Apache называется не apache2, а httpd.

Ну что же, приступим к установке и настройке нашего веб-сервера.

1. Зайдем под пользователем root

su -
## Или ##
sudo -i

2. Добавим репозиторий Remi
В данном репозитории находятся новые пакеты, например там лежит php-5.3, т.к. в стандартном репозитории php ещё версии 5.1.6

## Remi Dependency on CentOS and Red Hat (RHEL)
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Стоит заметить, что на момент написания статьи последний релиз epel был 5.4 и он может в будущем измениться.
За ссылкой на последнюю версию epel можно обратиться вот сюда

3. Установим Apache (httpd) Web server и PHP 5.3
На момент написания статьи последняя версия php — 5.3.3. Не забывайте при установке пакетов указывать репозиторий (—enablerepo=remi).

yum --enablerepo=remi install httpd php php-common

4. Установим необходимые модули PHP
Мне понадобились следующие модули: PDO, MySQL, Memcache, GD, MBString, XML

yum --enablerepo=remi install php-pdo php-mysql php-pecl-memcache php-gd php-mbstring php-xml

5. Запустим Apache HTTP server (httpd) и добавим его в автозагрузку

/etc/init.d/httpd start
## или ##
service httpd start

chkconfig --levels 235 httpd on

Если вы обновляете Apache или уставливаете новые модули к php не забывайте его перезагружать (service httpd restart)

6. Создадим тестовый файл для проверки работоспособности сервера

Добавим функцию php — phpinfo() в файл «/var/www/html/test.php».

<?php

    phpinfo();

Следует заметить, что директория «/var/www/html/» является директорий по умолчанию для файлов веб-сервера. Ее можно сменить в конфигурационном файле Apache «/etc/httpd/conf/httpd.conf». В нем же, впоследствии, можно и настроить виртуальные хосты и указать необходимые модули для Apache.

Хочу заметить, что работа с файлами конфигурации веб-сервера в Debian мне нравится больше. Хотя бы из-за того, что все разложено по полочкам, а тут придется это делать самому.

7. Установим mysql

yum --enablerepo=remi install mysql
yum --enablerepo=remi install mysql-server

Очень порадовало, что в репозитори лежит mysql 5.1.50

8. Запустим mysql

service mysqld start
# Добавим в автозагрузку
chkconfig --levels 235 mysqld on

И не забудьте, что бы поставить новый пароль пользователю root, необходимо выполнить вот такие команды

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Или запустить вот этот скрипт «/usr/bin/mysql_secure_installation». И, если, вы устанавливаете сервер для продакшена, не забывайте удалять анинимного (anonymous, everybody) пользователя и тестовую базу данных.
Впрочем эти сообщения Вы сможете видеть после запуска mysql.

9. Проверим доступность нашего сервера
Теперь откроем браузер и попробуем перейти по адресу http://<адрес сервера>/test.php, если информация о php появилась, то все работает как надо. Если страница не открылась, то:

  1. Проверьте, верно ли вы выполнили все шаги
  2. Открыть доступ в iptables для 80 порта (если iptables установлен)

Настройка iptables

Если у Вас не установлен редактор nano, то советую его поставить (если Вы, конечно, не привыкли работать в vi)

 yum install nano

Далее откройте следующий файл «/etc/sysconfig/iptables»

 nano /etc/sysconfig/iptables

И добавьте следующую строчку до слова COMMIT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

И перезагрузите iptables

service iptables restart
## Или ##
/etc/init.d/iptables restart

Вот собственно и все. Удачной настройки!