Установка 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
Для меня важен полноценный удаленный контроль и мониторинг. Здесь есть два, наиболее удобных варианта:
- Cherokee — имеет встроенный web-интерфейс для полноценной настройки сервера и всех его служб
- Apache — встроенного web-интерфейса у него нет, но зато есть модуль Apache Webserver для Web-панели Webmin, которая мне кажется удобным инструментом для управления всем сервером и вполне надежным
Установка Webmin в Debian проста до предела. Качаем последнюю версию пакета с официального сайта:
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
В чистой поставке Debian, утилита sudo обычно отсутствует и не настроена для работы. Это легко поправить:
Ищем, смотрим и ставим:
apt-cache sudo
su -c 'apt-get install sudo'
Настроем sudo:
su -c 'nano /etc/sudoers'
Туда впишите:
# User privilege specification
root ALL=(ALL) ALL
ВАШ_ЮЗЕР ALL=(ALL) ALL
Собственно, я отвлекся, получить доступ к свеже-установленной Webmin очень просто: https://192.168.1.100:10000/
Введите логин и пароль администратора, и готово!
Webmin Control Panel
Чтобы познакомиться с Webmin поближе, советую посетить офф сайт: webmin.com
Подготовка к установке 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
Теперь ищем пакеты и смотрим версии. Последняя стабильная версия Сherokee в официальном стабильном репозитории Deebian’a это cherokee (1.0.8-5), вы можете сами убедится в этом.
ПользователиВообще 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
В результате этих действий у вас в системе появится новый юзер. Убедиться в этом просто:
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
В файле /etc/shadow:
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
В файле /etc/passwd впишите:
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/
Весь тот же набор папок, только для второго сайта site2, третьего и т.д.
Не забываем, папкам нужны правильные права:
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
Ставим MySQL:
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
Собственно говоря, необходимый набор пакетов мы установили.
Описание файлов и функций Web-сервера Cherokee
- /var/www – здесь должен лежать сайт (помним при установке этот параметр можно изменить)
- /etc/cherokee/cherokee.conf – основной конфигурационный файл
- /usr/sbin/cherokee – сам сервер
- /usr/sbin/cherokee-admin – графическое приложения для управления сервером
- /var/logs/cherokee – тут лежат логи cherokee.access и cherokee.error
Если вы захотите получать доступ к cherokee-admin с удаленного компьютера, то запустить панель необходимо следующей командой:
sudo cherokee-admin -b <ip address>
Если вы не укажите опцию <ip address> то cherokee-admin будет слушать все доступные интерфейсы.
В моем случае, IP это 192.168.1.100. Запускать cherokee-admin я буду так:
sudo cherokee-admin -b 192.168.1.100
Далее вы можете получить доступ к Web-морде по адресу: http://192.168.1.100:9090

Логин и временный пароль вы увидите при запуске.
Запуск сервера
Запустить сервер, можно так-же командой:
sudo /etc/init.d/cherokee start
Или так:
sudo /usr/sbin/cherokee -C etc/cherokee/cherokee.conf<pre>Что тоже очень удобно, так как ваш конфиг файл может лежать где угодно.
После запуска, получил вот такую ошибку:
www@debianServer:~/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
Пускаем сервер:
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
Проверьте работает ли MySQL:
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
Файлы графиков статистики server.rrd и vserver_default.rrd можно сложить в /var/log/cherokee/stats.
mkdir /var/log/cherokee/statsНастройка
chown www:www /var/log/cherokee/stats
Настройка может проводится как через конфиг файл, так и через Web-интерфейс, я использовал и то, и другое. Откройте конфиг:
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 <-- название дефолтного виртуального сервера
После правки конфига, перезапустите сервер и для проверки создайте 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
[...]
Перезапускаем Cherokee и сходу запускаем Web-интерфейс:
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();
?>
И смело направляйтесь по адресу http://localhost/
Минимальная настройка сервера произведена и он готов к работе.