Налаштування вебсервера під Debian

Продовжую настроювати свій сервер.

 

План поки такий: встановити MySQL, PHP, вебсервер Lighttpd і змусити всі це працювати разом, щоб я міг спокійно переїхати на нову машинку. Крім того потрібно налаштувати безпроблемну відправку листів зі скриптів, а от прийом пошти мені поки що не потрібен - досить переадресації на gmail, але це теж потрібно налаштувати.

 

Далі майже всі дії виробляються від суперкористувача на сервері.

 

Установка PHP

 

Торік вийшла версія PHP 5.3.3 з вбудованим FPM, але таких пакетів в офіційному репозиторії немає, і для Debian Lenny не буде, скоріше всього. Тому доведеться або збирати PHP самому, або додати додатковий репозиторій від спільноти dotdeb.org , де PHP 5.3.3 вже зібрали (як і багато інших пакети для вебсервер).

 
  1. echo 'deb http://php53.dotdeb.org lenny all'>>/ etc/apt/sources.list
    Додавання сховища.
  2.   
  3. wget http://www.dotdeb.org/dotdeb.gpg & & apt-key add dotdeb.gpg & & rm dotdeb.gpg
    Реєстрація публічного ключа, щоб APT не лаявся. Якщо чесно, взагалі не розумію сенсу цієї дії, навіщо потрібні ці ключі? Хто знає, розкажіть, будь ласка, простими словами.
  4.   
  5. aptitude update
    Оновлення інформації про пакети.
  6.   
  7. aptitude install php5-fpm
    Ставимо PHP з управлятором FastCGI.
  8.   
  9. aptitude install php5-suhosin
    Про всяк випадок вирішив поставити модуль для PHP, хто зна. До речі, цей пакет порекомендувала Aptitude на попередньому кроці.
  10.  

Установка веб-сервера Lighttpd

 
  1. aptitude install lighttpd
    Нічого складного. Тепер налаштування ...
  2.  

Налаштування веб-сервера та PHP

 

У мене вже є домен (припустимо, example.com) і я його вже прописав в панелі управління DNS у Linode.com (як це зробити? ). Тому після попередніх кроків сервер вже можна відразу ж перевірити. Набираю в браузері домен і бачу заглушку:

 

вебсервер вже працює!

 

Відмінно. Але поки що сервер не знає про PHP і умолчальне налаштування особисто мені не подобаються. Зокрема я терпіти ненавиджу дебільну моду розміщувати файли сайтів в каталозі/var/www, я вважаю, що для цієї мети значно краще підходить каталог користувача (або користувачів).

 

Що ж, відкриваю в текстовому редакторі конфіг Лайті і редагую його, звіряючись з документацією . Можливо я помиляюся (поправте мене, якщо так) але в Lighttpd, схоже, є якісь вбудовані модулі (зокрема mod_evhost), що настроюються в глобальному конфіги/etc/lighttpd/lighttpd.conf, і компоненти з допомогою команди lighttpd-enable -mod NAME_module, які настроюються окремо.

 

Віртуальні хости

 

Хочу щоб при прописування в DNS нового домену вебсервер відразу ж міг його обробляти, якщо існує каталог з ім'ям цього домену. Для цього підходить вбудований модуль mod_evhost, його потрібно розкоментувати в секції server.modules lighttpd.conf, а трохи нижче налаштувати в цьому ж файлі. У мене правило таке:

 

evhost.path-pattern = "/ home/NAME /% 0 /"

 

Де NAME - ім'я користувача, під яким працює сервер, запускається PHP і т. п. Природно, я змінив і значення server.username і server.groupname на NAME.

 

Значення з відсоточок розшифровуються в коментарях того ж конфіга, або можна їх подивитися в доках .

 

Так, перезапускаємо сервер і перевіряємо ...
invoke-rc.d lighttpd restart
Stopping web server: lighttpd.
Starting web server: lighttpd2011-01-03 8:22:58: (log.c.62) opening errorlog '/ var/log/lighttpd/error.log' failed: Permission denied
2011-01-03 8:22:58: (server.c.899) Opening errorlog failed. Going down.
Ага, проблемка виникла. Це тому що сервер запустився під користувачем, у якого немає доступу до файлу. Зробимо доступ:
chown-R NAME: NAME/var/log/lighttpd
invoke-rc.d lighttpd restart
Stopping web server: lighttpd.
Starting web server: lighttpd.
Запрацювало! Создадаю в каталозі користувача директорію з ім'ям домену, роблю там файлик для перевірки і знову відкриваю в браузері домен. Що бачу?

 

Содержімое каталогу /home/NAME/domain.tld

 

Ну все, значить працює як треба. Але як бути з піддоменами? Що якщо я захочу зробити піддомен? І ще я хочу автоматичний редирект з www на домен без атавізму.

 

Піддомени і www

 

Для переадресації з www потрібен mod_redirect , який також необхідно розкоментувати в конфіги, а потім використовувати конструкцію з підстановкою запитуваної імені хоста. Приблизно так (тупо скопіював приклад з документації):

 

# from any www.host to the host without www
$ HTTP ["host"] = ~ "^ www .(.*)$" {   url.redirect = ("^/(.*)" =>"http://% 1/$ 1")
}

 

А з піддоменами ще простіше, треба змінити шаблон для evhost таким чином:
evhost.path-pattern = "/ home/NAME /% 0 /% 3 /" . І тоді, допустимо, tmp.example.com буде відповідати шляху/home/NAME/example.com/tmp. Однак, в налаштуваннях DNS example.com повинна бути A-запис для tmp. Як включати домени миттєво я не знаю, але впевнений, що це можливо. Сподіваюся, досвідчені сисадміни підкажуть, як це робиться.

 

Запуск PHP-скриптів

 

Якщо тепер створити php-файлик в одному з каталогів, запустити його не вийде - вилізе помилка 403. Тому що ще належить налаштувати пару PHP і веб-сервера. PHP, як я вже писав вище, поставив версії 5.3.3 в FPM, так що спершу саме цей FPM і PHP треба настроїти.

 

PHP-FPM може слухати запити через UNIX-сокети і через TCP/IP, і я вибрав перший варіант, але не особливо усвідомлено. У мережі багато думок за і проти, у мене ж недостатня кваліфікація, щоб зрозуміти переваги того чи іншого рішення. Тому дуже цікаво було б дізнатися думку нишпорячи в темі людей! Чекаю вас в коментарях.

 

Змінив тільки ім'я користувача і групу, ну і сокет замість IP: PORT, інші налаштування поки залишив умолчальне. Напевно це недобре, але міняти щось без розуміння не краще. Нехай поки що так.

 

Щоб Лайті запрацював з PHP потрібно включити модуль fastcgi і налаштувати його. Робиться це приблизно так:

 

lighttpd-enable-mod fastcgi
vim/etc/lighttpd/conf-enabled/10-fastcgi.conf
І вміст цього конфіга у мене поки що взагалі найпростіше:
server.modules + = ("mod_fastcgi")
fastcgi.server = (". php" =>
(("Socket" =>"/ home/irma/php-socket",
))
)

 

Перезапускаємо все ...
invoke-rc.d php5-fpm restart
invoke-rc.d lighttpd restart

 

Тепер повинні запускатися PHP-скриптик. У мене принаймні все працює на кшталт:) PHP поки у мінімальній конфігурації, навіть CURL немає, але вирішив що краще поступово доустанавливать все що потрібно.

 

Перегляд каталогів

 

А ще я закоментувавши в конфіги Лайті перегляд вмісту каталогів. Якось незатишно мені від цієї опції, тим більше тоді при доступі за IP він покаже взагалі все, а це ай-я-яй.

 

Що залишилося?

 

Налаштувати MySQL і відправку листів. З MySQL я поки працював виключно через панель управління, буду вчитися робити це з консолі. З поштою взагалі поки дуб дубом. Будемо вивчати. Але про це в наступній замітці ...

 

PS Тим, хто сприймає цей цикл статей як керівництво до дії слід знати: я трошки збоченець і майже завжди вибираю якийсь свій особливий шлях. Наступав на багато граблі, але вони залишилися за кадром, так що будьте готові долати труднощі. Для більшості людей також морочитися немає сенсу, простіше поставити стандартний LAMP і все.

Опубліковано: 02/05/11 @ 07:04
Розділ Хостинг

Рекомендуємо:

Pervushin.com 2011: плани розвитку блогу
У розробки жіноче обличчя
Підсумки 2010
Видобуток контенту
VPS і голий Debian