Apache2 с mod_fcgid и PHP5 на CentOS
Это решение описывает то, как мы можем установить Apache2 с mod_fcgid и PHP5 на CentOS 5.3.
mod_fcgid – альтернативное решение, замещающее устаревший mod_fastcgi. Это решение позволит нам выполнять скрипты PHP с разрешениями их владельцев вместо стандартных user/group (apache/apache).
В этом примере мы будем использовать CentOS 5.3 Server c именем хоста yz.dynaconf.ru, в качестве примера, и IP адресом 192.168.0.242.
Так же мы создадим скрипт, который возьмет на себя львиную долю работы по созданию и предварительному конфигурированию создаваемого apache-хоста.
Конечно же, нет гарантии, что это сразу заработает у вас, но приложив некоторые усилия можно добиться нужного результата.
Подготовительные разьяснения
Я не буду акцентировать внимание на установке самой CentOS. Это достаточно тривиальная задача. Как выполнить установку описано подробно здесь http://attic.su/howto/centos/centos_inst.
Выберите минимальную конфигурацию, установите при выборе пакетов (Package Selection) только Server. В Package Group Selection выберите следующие группы:
Administration Tools
Base
Development Libraries
Development Tools
Server Configuration Tools
System Tools
Text Based Internet
Перед тем, как мы начнем, следует отключить SELinux. Выполните:
system-config-securitylevel
установите Security Level и SELinux в положение Disabled.
Примечание.
То, что мы отключили SELinux перед выполнением текущего примера, вовсе не исключает необходимости в его использовании. Отключение делается в целях удобства конфигурирования сервера, поскольку в противном случае возникают затруднения в плане доступа некоторых процессов к ресурсам системы. После окончательной доводки сервера рекомендуется SELinux и Security Level вернуть в исходное состояние.
После этого следует перезагрузить систему:
reboot
Установка Midnight Commander c дистрибутива
Давайте установим вначале файловый менеджер Midnight Commander. Честно признаюсь, я испытываю некоторые затруднения при использовании редактора Vi, и mcedit в этой ситуации является неплохой альтернативой.
Создаём каталог под CD/DVD и монтируем установочный диск:
mkdir /mnt/cdrom
mount -t iso9660 /dev/hda /mnt/cdrom
Возможно, компьютер будет выдавать сообщение об ошибке устройства /dev/hda, тогда попробуйте последовательно /dev/hdb и /dev/hdc. Одно из этих устройств обязательно сработает.
Переходим в каталог CentOS на CD-диске:
cd /mnt/cdrom/CentOS
Проверяем, есть ли в дистрибутиве Midnight Commander
ls -l mc*
-rw-rw-r-- 2 500 500 2211952 Ноя 21 2007 mc-4.6.1a-35.el5.x86_64.rpm
-rw-rw-r-- 2 500 500 16489 Ноя 19 2007 mcelog-0.7-1.22.fc6.x86_64.rpm
-rw-r--r-- 2 root root 17717 Мар 17 16:35 mcstrans-0.2.11-3.el5.x86_64.rpm
Устанавливаем...
rpm -ihv mc-4.6.1a-35.el5.x86_64.rpm
Уходим с CD-диска и выполняем размонтирование:
cd ~
umount /mnt/cdrom
Конфигурирование /etc/hosts
mcedit /etc/hosts
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 yz.dynaconf.ru yz ::1 localhost6.localdomain6 localhost6
Конфигурирование добавочного алиаса
(Эта операция опциональна. Этот пример показывает как добавить дополнительный адрес (алиас) для вашего сетевого интерфейса eth0, если вы нуждаетесь в более, чем одном IP-адресе Если вам достаточно одного адреса, просто пропустите этот раздел.)
Предположим, что ваш сетевой интерфейс eth0. В таком случае на вашем сервере есть такой файл /etc/sysconfig/network-scripts/ifcfg-eth0, который содержит настройки для eth0. Вы можете использовать этот файл как образец для вашего нового виртуального интерфейса eth0:0:
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0
Предположим, что вы решили присвоить IP адрес 192.168.0.244 виртуальному интерфейсу eth0:0. В этом случае откройте файл /etc/sysconfig/network-scripts/ifcfg-eth0:0 и модифицируйте его как показано ниже (удалите строчку с HWADDR, поскольку физически это та же самая сетевая карта):
mcedit /etc/sysconfig/network-scripts/ifcfg-eth0:0
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.0.255 HWADDR=00:17:31:4E:6E:BE IPADDR=192.168.0.244 NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes
После этого следует перестартовать сеть:
/etc/init.d/network restart
Теперь следует проверить /etc/hosts после добавления IP адреса, хотя это и необязательно.
Выполните:
ifconfig
Вы должны получить что-то похожее на это:
[root@yz ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:C2:29:7E
inet addr:192.168.0.242 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fec2:297e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:281 errors:0 dropped:0 overruns:0 frame:0 TX packets:311 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:26449 (25.8 KiB) TX bytes:60343 (58.9 KiB) Interrupt:177 Base address:0x1400
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:C2:29:7E
inet addr:192.168.0.244 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:177 Base address:0x1400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)
[root@yz ~]#
Проверка соединения с интернетом
Выполните следующее:
elinks http://www.yandex.ru
Если соединение с интернетом есть, то вы увидите страничку Яндекса, правда без картинок, один текст. Но этого нам достаточно для того, чтобы убедиться в доступности интернета, поскольку все следующие шаги будут требовать его наличия.
Если интернета все же нет, то попробуйте проделать следующее:
mcedit /etc/sysconfig/network
Вы должны увидеть что-то подобное:
NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=yz.dynaconf.ru GATEWAY=192.168.0.254
Первая строка говорит, что протокол IPv4 включен;
вторая — что IPv6 отключен;
третья — собственно имя хоста;
четвертая указывает адрес шлюза 192.168.0.254
Еще можно проверить ./etc/resolv.conf:
mcedit /etc/resolv.conf
Там должно быть что-то похожее на это:
search dynaconf.ru nameserver 191.244.228.203 nameserver 191.244.230.203
Если это не так, то приведите этот файл к похожему виду. Имейте ввиду, что пример хоста yz.dynaconf.ru – это всего лишь пример и использовать его не стоит.
Последние две строки — это DNS-адреса. Их можно выяснить у вашего провайдера.
Вот, собственно, и все, что касается работы сети и соединения с интернетом. Даже если вы новичок, этой информации вполне достаточно, чтобы выполнить подключение к интернету.
Предварительная установка некоторых пакетов
Вначале мы импортируем GPG-ключи для программных пакетов:
Выполните:
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Теперь убедитесь, что группы пакетов 'Development Libraries' и 'Development Tools' установлены:
yum grouplist
Если они не установлены, то надо позаботиться об этом сейчас. Это можно сделать, используя в качестве локального репозитория установочный DVD-диск. Подробно об этом написано здесь. Второй вариант — менее предпочтительный — установка из интернета. В этом случае установку групп пакетов можно произвести позже.
Итак, обновление системы:
yum update
Будьте готовы к тому, что из интернета будет скачено не менее 120 мегабайт.
Теперь выполните, если вы не сделали это ранее:
yum groupinstall 'Development Libraries'
yum groupinstall 'Development Tools'
Установка Apache, MySQL, phpMyAdmin
Сейчас мы подключим репозиторий RPMforge к нашей CentOS системе, как удаленный источник пакетов, которых нет в наличии в официальном репозитории.
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
cd /tmp wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
После этого мы может установить нужные нам пакеты одной командой:
yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel pkgconfig zlib-devel pcre-devel expect libtool-ltdl-devel libtool gdbm-devel
Установка пароля MySQL и конфигурирование phpMyAdmin
Запускаем MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
Теперь устанавливаем пароль для учетной записи root в MySQL:
/usr/bin/mysqladmin -u root password 'rootsqlpassword'
/usr/bin/mysqladmin -u root -h yz.dynaconf.ru password 'rootsqlpassword'
Сейчас мы будем конфигурировать phpMyAdmin. Мы изменим конфигурацию Apache таким образом, чтобы phpMyAdmin разрешал соединения не только с localhost. Для этого следует закомментировать директиву <Directory> … </Directory>.
mcedit /etc/httpd/conf.d/phpmyadmin.conf
# # Web application to manage MySQL # #<Directory "/usr/share/phpmyadmin"> # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 #</Directory> Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin
Теперь следует изменить способ аутентификации в phpMyAdmin с cookie на http:
mcedit /usr/share/phpmyadmin/config.inc.php
[...] /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...]
Теперь настроим системный запуск сервера Apache и стартуем его:
chkconfig --levels 235 httpd on /etc/init.d/httpd restart
Теперь запускаем браузер и в адресной строке набираем http://192.168.0.242/phpmyadmin/ логинимся с учетной записью root и паролем, который мы указали при конфигурировании MySQL сервера.
Установка mod_fcgi/PHP5
В официальном репозитории CentOS mod_fcgid отсутствует. Однако такой пакет для CentOS 5.x есть в тестовом репозитории centos.karan.org по адресу http://centos.karan.org. Мы подключим его следующим образом:
cd /etc/yum.repos.d/ wget http://centos.karan.org/kbsingh-CentOS-Extras.repo
Далее мы откроем kbsingh-CentOS-Extras.repo...
mcedit /etc/yum.repos.d/kbsingh-CentOS-Extras.repo
... и установим gpgcheck в 0 и enabled в 1 в секции [kbs-CentOS-Testing]:
[...] [kbs-CentOS-Testing] name=CentOS.Karan.Org-EL$releasever - Testing gpgcheck=0 gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt enabled=1 baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch/RPMS/
После этого можно установить mod_fcgid, и PHP5:
yum install mod_fcgid php-cli
Если PHP5 уже установлен в Apache как модуль, его надо отключить. Для этого выполните:
mcedit /etc/httpd/conf.d/php.conf
... и закомментируйте следующие строки в этом файле:
# # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # #LoadModule php5_module modules/libphp5.so # # Cause the PHP interpreter to handle files with a .php extension. # #AddHandler php5-script .php #AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # #DirectoryIndex index.php # # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps
Теперь откроем /etc/php.ini...
mcedit /etc/php.ini
...и добавим строчку cgi.fix_pathinfo = 1 в конец файла:
[...]
cgi.fix_pathinfo = 1
Теперь перестартуем Apache:
/etc/init.d/httpd restart
Собственно, с установкой пакетов все закончено.
via














