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

Rate this post

В качестве эксперимента, я решил на свой домашний 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

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

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/

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

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *