Установка Cherokee с поддержкой PHP5 и MySQL в Debian 6 “Sqeeze”

В качестве эксперемента, я решил на свой домашний Hamster’s Server установить в качестве Web-сервера не всем привычный Apache, а его более экзотического собрата. О чем и пожалел =) Ибо убил кучу времени на прочтение документации на английском с их официального сайта и эксперементы. Хотя стоит признать, что документация там очень хорошо написана, все рассортировано по полочкам и очень доступно. К тому же, я уже устанавливал Apache, на Debian-подобную систему, вы можете прочитать об этом в статье “Установка Apache2, PHP5 и MySQL в Ubuntu 11.04“. Чем ещё, кроме любопытсва, обоснован мой выбор и как я устанавливал и настраивал Cherokee с PHP5 и MySQL в Debian читайте ниже.

Прилюдия

Если подходить к установке (пусть даже домашнего сервера) серьезно, то всегда есть над чем подумать, а именно какой Web-сервер выбрать, на какой платформе, какой инструментарий вам необходим, как вам больше нравится работать с сервером (GUI, bash, SSH, Web-морда и т.д.)

Какой Web-сервер выбрать?
Благо дело, есть из чего выбирать:
ngnix
lighttpd
Cherokee
Apache

Для меня важен полноценный удаленный контроль и мониторинг. Здесь есть два, наиболее удобных варианта:
1) Cherokee – имеет встроенный web-интрфейс для полноценной настройки сервера и всех его служб.
2) Apache – встроенного web-интрфейса у него нет, но зато есть модуль Apache Webserver для Web-панели Webmin, которая мне кажется удобным инструментом для управления всем сервером и вполне надежным.

Установка Webmin в Debian проста до предела.
Качаем последнюю версию пакета с офф сайта:

wget http://garr.dl.sourceforge.net/project/webadmin/webmin/1.550/webmin_1.550_all.deb
wget http://garr.dl.sourceforge.net/project/webadmin/webmin/1.550/webmin_1.550_all.deb

Устанавливаем:

sudo dpkg -i http://garr.dl.sourceforge.net/project/webadmin/webmin/1.550/webmin_1.550_all.deb
sudo dpkg -i http://garr.dl.sourceforge.net/project/webadmin/webmin/1.550/webmin_1.550_all.deb

В чистой поставке Debian, утилита sudo обычно отсутствует и не настроена для работы. Это легко поправить:

Ищем, смотрим и ставим:

apt-cache sudo
apt-cache sudo
su -c 'apt-get install sudo'
su -c 'apt-get install sudo'

Настроем sudo:

su -c 'nano /etc/sudoers'
su -c 'nano /etc/sudoers'

Туда впишите:

# User privilege specification
root    ALL=(ALL) ALL
ВАШ_ЮЗЕР   ALL=(ALL) ALL
# User privilege specification
root    ALL=(ALL) ALL
ВАШ_ЮЗЕР   ALL=(ALL) ALL

Собственно, я отвлекся, получить доступ к свеже-установленной Webmin очень просто:
https://192.168.1.100:10000/

Введите логин и пароль администратора, и готово!

Webmin Control Panel

Webmin Control Panel

Чтобы познакомиться с Webmin поближе, советую посетить офф сайт:
http://www.webmin.com/index.html

Чтобы познакомиться с модулями в стандартной поставке, зайдите сюда:
http://www.webmin.com/standard.html

Подготовка к установке Web-сервера Cherokee

Пакеты, система и версии

Сразу оговорим, что установленный и настроенный Debian у вас уже есть, если нет, то читаем “Как установить Debian 6.0.1 «Squeeze» GNU/Linux” и “Как настроить Debian 6.0.1 «Squeeze» GNU/Linux” там все написано мего подробно.

Перед установкой обновляем все пакеты и ставим последние патчи и обновления:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get update
sudo apt-get upgrade

Теперь ищем пакеты и смотрим версии:
Последняя стабильная версия Сherokee в официальном стабильном репозитории Deebian’a это cherokee (1.0.8-5), вы можете сами убедится в этом:
http://packages.debian.org/stable/web/cherokee

Пользователи

Вообще Linux хорош тем, что в нем есть пользователи и группы, которые имеют или не имеют свои права, привелегии, катологи, квоты и т.д. Это удобно и безопасно.

У меня на Hamster’s Server уже есть 3-и пользователя, это:

  • root — бог и правитель системы;
  • booch — пользователь который имеет право пользоваться командой sudo, получать доступ через SSH к серверу, и соответсвенно имеет свой shell;
  • ftp — это пользователь у которого есть свой ftp каталог, за рамки которого он выйти НЕ может, у него нет shell’a и доступа по SSH;

Теперь для Web-сервера имеет смысл создать нового, www пользователя, который будет иметь свой католог /home/www и будет заперт в нём, он не будет иметь доступа по SSH, и от его имени будет работать Web-сервер. Это весьма специфичный вид настройки, и для хостеров например, такая настройка не пойдет, так как им необходимо на имя одного пользователя давать доступ по FTP, SSH, http, SCP и т.д., в моём случае, в этом нет необходимости.

Создаем нового пользователя в системе:

su root
adduser www --home /home/www --shell /bin/false
su root
adduser www --home /home/www --shell /bin/false

В результате этих действий у вас в системе появится новый юзер. Убедиться в этом просто:

cd /home
ls -l
drwxr-xr-x 12 booch booch  4096 Aug  3 16:54 booch
drwxr-xr-x  8 ftp   ftp    4096 Jul 30 19:28 ftp
drwxr-xr-x  2 www   www    4096 Aug  5 22:30 www
cd /home
ls -l
drwxr-xr-x 12 booch booch  4096 Aug  3 16:54 booch
drwxr-xr-x  8 ftp   ftp    4096 Jul 30 19:28 ftp
drwxr-xr-x  2 www   www    4096 Aug  5 22:30 www

В файле /etc/passwd:

cat /etc/passwd
.....
.....
www:x:1002:1002:www,1,,,www user for web server:/home/www:/bin/false
cat /etc/passwd
.....
.....
www:x:1002:1002:www,1,,,www user for web server:/home/www:/bin/false

В файле /etc/shadow:

cat /etc/shadow
....
....
www:$6$m.5U4a01$ceYb/aNmroEngwz3tK1UcF7V2K2bz9C4KlZeR.YP0rFNHNdRu93bsQt.M8VQfrSUwb4CjRvmT8uVJKBKC5xW7/:15191:0:99999:7:::
cat /etc/shadow
....
....
www:$6$m.5U4a01$ceYb/aNmroEngwz3tK1UcF7V2K2bz9C4KlZeR.YP0rFNHNdRu93bsQt.M8VQfrSUwb4CjRvmT8uVJKBKC5xW7/:15191:0:99999:7:::

Стоит заметить, что сейчас нам нужно работать под юзером www, по этому я дал ему возможность пользоваться shell и sudo:
В файле /etc/sudoers впишите:

sudo nano /etc/sudoers
# User privilege specification
root    ALL=(ALL) ALL
booch  ALL=(ALL) ALL
www   ALL=(ALL) ALL
sudo nano /etc/sudoers
# User privilege specification
root    ALL=(ALL) ALL
booch  ALL=(ALL) ALL
www   ALL=(ALL) ALL

В файле /etc/passwd впишите:

sudo nano /etc/passwd
www:x:1002:1002:www,1,,,www user for web server:/home/www:/bin/bash
sudo nano /etc/passwd
www:x:1002:1002:www,1,,,www user for web server:/home/www:/bin/bash

Позже эти привелегии будут убраны. В принципе, можно было бы работать и от root’a манипулируя утилитами sudo, chmod, chown, chgrp, но так было бы гораздо больше кода, а статья и так огромная.

Структура сервера

Создаем все необходимые файлы в котологе /home/www от имени пользователя www:

su www
cd ~ 
mkdir ~/public_html/
mkdir ~/public_html/site1/
mkdir ~/public_html/site1/www/
mkdir ~/public_html/site1/subdomain1/
mkdir ~/public_html/site1/logs/
mkdir ~/public_html/site1/stats/
mkdir ~/public_html/site1/archives/
mkdir ~/public_html/site1/uploads/
su www
cd ~ 
mkdir ~/public_html/
mkdir ~/public_html/site1/
mkdir ~/public_html/site1/www/
mkdir ~/public_html/site1/subdomain1/
mkdir ~/public_html/site1/logs/
mkdir ~/public_html/site1/stats/
mkdir ~/public_html/site1/archives/
mkdir ~/public_html/site1/uploads/

Весь тот же набор папок, только для второго сайта site2, третьего и т.д.

Не забываем, папкам нужны правильные права:

sudo chmod -R 755 ~/public_html/
sudo chmod -R 755 ~/public_html/

Установка Web-сервера Cherokee

Cтавим Cherokee:

su www
apt-cache showpkg cherokee
sudo apt-get install cherokee
sudo apt-get install libcherokee-mod-rrd
su www
apt-cache showpkg cherokee
sudo apt-get install cherokee
sudo apt-get install libcherokee-mod-rrd

Ставим MySQL:

sudo apt-get install mysql-server-5.0 mysql-client
sudo apt-get install mysql-server-5.0 mysql-client

Ставим PHP5:

apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Собственно говоря, необходимый набор пакетов мы установили.

Описание файлов и функий Web-сервера Cherokee

/var/www – здесь должен лежать сайт (помним при установке этот параметр можно изменить)
/etc/cherokee/cherokee.conf – основной конфигурационный файл
/usr/sbin/cherokee – сам сервер
/usr/sbin/cherokee-admin – графическое приложения для управления сервером
/var/logs/cherokee – тут лежат логи cherokee.access и cherokee.error

Для тех, кто жаждит собрать Cherokee из исходных кодов, уже есть статья, написаная мною ранее, “Как установить сервер Cherokee с поддержкой MySQL и PHP на Ubuntu Server 9.04” там всё есть.

Если вы захотите получать доступ к cherokee-admin с удаленного компьютера, то запустить панель необходимо следующей командой:

sudo cherokee-admin -b <ip address></ip>
sudo cherokee-admin -b <ip address></ip>

Если вы не укажите опцию то cherokee-admin будет слушать все доступные интерфейсы.

В моем случае, IP это 192.168.1.100
Запускать cherokee-admin я буду так:

sudo cherokee-admin -b 192.168.1.100
sudo cherokee-admin -b 192.168.1.100

Далее вы можете получить доступ к Web-морде по адресу:
http://192.168.1.100:9090

Логин и временный пароль вы увидите при запуске.

Запуск сервера

Запустить сервер, можно так-же командой:

sudo /etc/init.d/cherokee start
sudo /etc/init.d/cherokee start

Или так:

sudo /usr/sbin/cherokee -C etc/cherokee/cherokee.conf
sudo /usr/sbin/cherokee -C etc/cherokee/cherokee.conf
Что тоже очень удобно, так как ваш конфиг файл может лежать где угодно.
Что тоже очень удобно, так как ваш конфиг файл может лежать где угодно.

После запуска, получил вот такую ошибку:
[email protected]:~/public_html/site1$ sudo /usr/sbin/cherokee -C /etc/cherokee/cherokee.conf
[06/08/2011 00:55:53.295] (critical) rrd_tools.c:425 – Insufficient permissions to work with the RRD directory: /var/lib/cherokee/graphs

Дело в том, что эту папку сервер создал при установке, и при первом запуске, он стартовал у меня от имени пользователя www-data:www-data ну так вот владельцем этой папки оказался имено www-data:www-data.

По этому надо просто поменять права на моего www юзера:

chown www:www /var/lib/cherokee/graphs
chown www:www /var/lib/cherokee/graphs

Пускаем сервер:

sudo /etc/init.d/cherokee start
sudo /etc/init.d/cherokee start

Проверяем рабоает ли Cherokee:

ps -ef | grep cherokee
root  25693       1   0 01:13 ? 00:00:00 /usr/sbin/cherokee
www 25697 25693  0 01:13 ? 00:00:00 /usr/sbin/cherokee-worker
ps -ef | grep cherokee
root  25693       1   0 01:13 ? 00:00:00 /usr/sbin/cherokee
www 25697 25693  0 01:13 ? 00:00:00 /usr/sbin/cherokee-worker

Проверьте рабоает ли MySQL:

sudo netstat -tap | grep mysql tcp 0 0 localhost:mysql *:* LISTEN 21650/mysqld
sudo netstat -tap | grep mysql tcp 0 0 localhost:mysql *:* LISTEN 21650/mysqld

A так же, в браузере по ссылке http://localhost/

Настройка Web-сервера Cherokee

Логи

Логи пусть лежат такм, где им и место:
/var/log/cherokee/cherokee.error
/var/log/cherokee/cherokee.access

Если возникла ошибка с правами доступа, nо дайте их:

chown www /var/log/cherokee/cherokee.error
chown www /var/log/cherokee/cherokee.access
chown www /var/log/cherokee/cherokee.error
chown www /var/log/cherokee/cherokee.access

Файлы графиков статистики server.rrd и vserver_default.rrd можно сложить в /var/log/cherokee/stats.

mkdir /var/log/cherokee/stats
chown www:www /var/log/cherokee/stats
mkdir /var/log/cherokee/stats
chown www:www /var/log/cherokee/stats

Настройка

Настройка может проводится как через конфиг файл, так и через Web-интерфейс, я использовал и то, и другое. Откройте конфиг:

presudo nano /etc/cherokee/cherokee.conf
presudo nano /etc/cherokee/cherokee.conf

Вот минимальная настройка:

config!version = 001000008
server!bind!1!port = 80 < -- порт
server!collector = rrd
server!collector!database_dir = /var/log/cherokee/stats <-- файлы статистики сервера 
server!group = www <-- группа
server!ipv6 = 0 <-- оключена поддержка IPV6
server!keepalive = 1
server!keepalive_max_requests = 500 
server!panic_action = /usr/share/cherokee/cherokee-panic
server!pid_file = /var/run/cherokee.pid <-- PID файл лежит тут
server!server_tokens = full
server!timeout = 15
server!user = www <-- полюзователь
vserver!1!collector!enabled = 0
vserver!1!directory_index = index.html, index.php <-- типы открываемых страниц
vserver!1!document_root = /home/www/public_html/site1/www <-- тут лежит сайт
vserver!1!error_writer!filename = /var/log/cherokee/cherokee.error <-- логи
vserver!1!error_writer!type = file <-- тип логов
vserver!1!logger = combined
vserver!1!logger!access!buffsize = 16384
vserver!1!logger!access!filename = /var/log/cherokee/cherokee.access <-- логи
vserver!1!logger!access!type = file
vserver!1!nick = default <-- название дефолтного виртуального сервера
config!version = 001000008
server!bind!1!port = 80 < -- порт
server!collector = rrd
server!collector!database_dir = /var/log/cherokee/stats <-- файлы статистики сервера 
server!group = www <-- группа
server!ipv6 = 0 <-- оключена поддержка IPV6
server!keepalive = 1
server!keepalive_max_requests = 500 
server!panic_action = /usr/share/cherokee/cherokee-panic
server!pid_file = /var/run/cherokee.pid <-- PID файл лежит тут
server!server_tokens = full
server!timeout = 15
server!user = www <-- полюзователь
vserver!1!collector!enabled = 0
vserver!1!directory_index = index.html, index.php <-- типы открываемых страниц
vserver!1!document_root = /home/www/public_html/site1/www <-- тут лежит сайт
vserver!1!error_writer!filename = /var/log/cherokee/cherokee.error <-- логи
vserver!1!error_writer!type = file <-- тип логов
vserver!1!logger = combined
vserver!1!logger!access!buffsize = 16384
vserver!1!logger!access!filename = /var/log/cherokee/cherokee.access <-- логи
vserver!1!logger!access!type = file
vserver!1!nick = default <-- название дефолтного виртуального сервера

После правки конфига, перезапустите сервер и для проверки создайте index.html в каталоге где лежит ваш сайт /home/www/public_html/site1/www

Настройка поддержки PHP5

Открываем файл /etc/php5/cgi/php.ini и там расскоментируем строчку cgi.fix_pathinfo=1:

sudo nano /etc/php5/cgi/php.ini
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
sudo nano /etc/php5/cgi/php.ini
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]

Перезапускаем Cherokee и сходу запускаем Web-интерфейс:

sudo /etc/init.d/cherokee restart
sudo cherokee-admin -b 192.168.1.100
sudo /etc/init.d/cherokee restart
sudo cherokee-admin -b 192.168.1.100

Идем на вкладку vServers, так клацаем по default и идем в Behavior, где кликаем по кнопке Rule Management

С левой стороны, в колонке, вы видите правила, кликните кнопку New и добавьте правило:

Нажмите кнопку Create:

Теперь в левой части, вы увидите новое правило, на нем будет стоять статус NON FINAL, смело клацайте по статусу и он сменится на FINAL. Сами же настройки FastCGI вы сможете найти на вкладке Handler.

После чего, в правом верхнем углу, нажмите кнопку Save, и в новом окне с приглашением о перезагрузке, выберите опцию Graceful restart. Теперь создайте в папке /home/www/public_html/site1/www файл index.php

nano /home/www/public_html/site1/www/index.php
< ?php
phpinfo();
?>
nano /home/www/public_html/site1/www/index.php
< ?php
phpinfo();
?>

И смело направляйтесь по адресу http://localhost/

Минимальная настройка сервера произведена и он готов к работе. Надеюсь статья вам понравилась!