Установка Livestreet с нуля (Debian): nginx + mysql + php-fpm + apc + memcached + sphinx
Возможно, этот гайд даже кому-нибудь понадобится.
0) Итак, у нас имеется свежепоставленный Debian с настроенным ssh-доступом и юзер с правами, достаточными для работы sudo.
Здесь и далее "#" в начале команды означает, что ее необходимо запускать с правами root-пользователя (например, с помощью sudo)
1) Пакеты будем ставить из репозитория dotdeb, поэтому для начала добавим его в sources.list:
дописываем в конец файла
Далее импортируем ключ dotdeb'а:
Обновляем список пакетов
2) Устанавливаем все необходимое
При установке у вас спросят пароль для пользователя root в mysql-сервере, не забудьте его (и выберите подлиннее и посложнее)!
В конец допишем:
Эти настройки, конечно же, надо оттюнинговать под себя, но для начала и так сойдет.
Заставляем php-fpm работать через сокет (а не через :9000 порт)
Ищем строчку
Если вы хотите попытаться скрыть использование PHP на сервере, измените в /etc/php5/fpm/php.ini строчку
И перезапустим php-fpm:
3) Конфигурируем nginx
Для начала удалим дефолтный сайт
Далее создаем конфиг для нашего livestreet-сайта:
содержимое файла:
«Включаем» его созданием симлинка в папку sites-enabled:
Перезагружаем nginx:
<TODO: настройка SSL>
4.0) Подготавливаемся к установке Livestreet
Создадим папку /var/www, в ней будут лежать все сайты
например, наш сайт — website.com
Теперь немножко протестируем:
кладем туда вот это:
Открываем website.com/ и убеждаемся, что все работает.
4.1) Настраиваем mysql
Создадим новую базу данных и пользователя для LS из консоли:
Далее (вместо website_password введите придуманный вами уникальный и сложный пароль):
4) Устанавливаем Livestreet
Идем в website.com/install/ и устанавливаем LS. Важно: Используем юзера website (для mysql), а не root.
Создаем администратора, переходим на главную.
Удаляем больше не нужную папку «install»
5) Sphinx (чтобы поиск находил)
Редактируем ему конфиг-файл
Настраиваем под себя sql_user, sql_pass, sql_db. Не забываем поменять стандартный «prefix_» на наш (вы же при установке действительно выбрали себе уникальный префикс для таблиц?)
Меняем в том же файле "/var/log/sphinx/" на "/var/log/sphinxsearch/", «address» на «listen» (дефолтный конфиг слегка устарел), "/var/lib/sphinx" на "/var/lib/sphinxsearch"
Меняем в файле /etc/default/sphinxsearch строку START=no на START=yes
Перед запуском создаем индексы:
Запускаем
Настраиваем автоматическую индексацию:
Дописываем в конец:
Все, поиск работает.
6) Оптимизация, шаг раз: memcached.
Перезапускаем php:
Дописываем в /var/www/website.com/config/config.local.php строку
7) Оптимизация, шаг два: APC
Устанавливаем Alternative PHP Cache
Если внезапно возникли проблемы с файлом /usr/include/php5/ext/pcre/php_pcre.h, то:
Дописываем в конец /etc/php5/fpm/php.ini следующую строчку:
И перезапускаем php5-fpm
Удачи!
* список литературы:
> www.webhostingtalk.com/showthread.php?t=1025286
> livestreet.ru/blog/dev_documentation/366.html
> manpages
> комментарии к данному топику
0) Итак, у нас имеется свежепоставленный Debian с настроенным ssh-доступом и юзер с правами, достаточными для работы sudo.
Здесь и далее "#" в начале команды означает, что ее необходимо запускать с правами root-пользователя (например, с помощью sudo)
1) Пакеты будем ставить из репозитория dotdeb, поэтому для начала добавим его в sources.list:
# nano /etc/apt/sources.list
дописываем в конец файла
deb http://packages.dotdeb.org stable all
Далее импортируем ключ dotdeb'а:
wget http://www.dotdeb.org/dotdeb.gpg -O - -q | sudo apt-key add -
Обновляем список пакетов
# apt-get update
2) Устанавливаем все необходимое
# apt-get install php5 php5-fpm php-pear php5-common php5-mcrypt php5-mysql php5-cli php5-gd php5-dev nginx mysql-server unzip
При установке у вас спросят пароль для пользователя root в mysql-сервере, не забудьте его (и выберите подлиннее и посложнее)!
# nano /etc/php5/fpm/php-fpm.conf
В конец допишем:
pm.max_children = 25
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 10
pm.max_requests = 500
Эти настройки, конечно же, надо оттюнинговать под себя, но для начала и так сойдет.
Заставляем php-fpm работать через сокет (а не через :9000 порт)
# nano /etc/php5/fpm/pool.d/www.conf
Ищем строчку
listen = 127.0.0.1:9000
и меняем на listen = /tmp/fastcgi.socket
Если вы хотите попытаться скрыть использование PHP на сервере, измените в /etc/php5/fpm/php.ini строчку
expose_php = On
на expose_php = Off
И перезапустим php-fpm:
/etc/init.d/php5-fpm restart
3) Конфигурируем nginx
Для начала удалим дефолтный сайт
$ cd /etc/nginx/sites-enabled
# rm default
Далее создаем конфиг для нашего livestreet-сайта:
# nano /etc/nginx/sites-available/website.com
содержимое файла:
server {
listen 80;
server_name website.com;
access_log /var/log/nginx/website.access_log;
error_log /var/log/nginx/website.error_log;
root /var/www/website.com;
index index.php;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php {
fastcgi_pass unix:/tmp/fastcgi.socket;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ \.(tpl|xml|log)$ {
deny all;
}
}
«Включаем» его созданием симлинка в папку sites-enabled:
# ln -s /etc/nginx/sites-available/website.com /etc/nginx/sites-enabled/website.com
Перезагружаем nginx:
# /etc/init.d/nginx reload
<TODO: настройка SSL>
4.0) Подготавливаемся к установке Livestreet
Создадим папку /var/www, в ней будут лежать все сайты
# mkdir /var/www/
например, наш сайт — website.com
# mkdir /var/www/website.com/
Теперь немножко протестируем:
# nano /var/www/website.com/index.php
кладем туда вот это:
<?php phpinfo();
Открываем website.com/ и убеждаемся, что все работает.
4.1) Настраиваем mysql
Создадим новую базу данных и пользователя для LS из консоли:
mysql -uroot -p
Enter password: <тут надо ввести пароль, который вы выбрали для пользователя root при установке mysql-server>
mysql>
Далее (вместо website_password введите придуманный вами уникальный и сложный пароль):
mysql> create database website;
Query OK, 1 row affected (0.00 sec)
mysql> grant ALL on website.* to website@localhost identified by 'website_password';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
4) Устанавливаем Livestreet
cd /var/www/website.com/
wget -O/tmp/ls.zip http://downloads.sourceforge.net/project/livestreet/LiveStreet%201.0/LiveStreet%201.0.1/LiveStreet_1.0.1.zip
# unzip /tmp/ls.zip -d .
# chown www-data.www-data . -R
Идем в website.com/install/ и устанавливаем LS. Важно: Используем юзера website (для mysql), а не root.
Имя сервера БД: localhost
Порт сервера БД: 3306
Название базы данных: <ранее созданная база (website)>
[ ] — Создать базу данных
[ ] — Конвертировать базу 0.4.2 в 0.5.1
[ ] — Конвертировать базу 0.5 в 0.5.1
Имя пользователя: <созданный пользователь mysql, не root>
Пароль: <его ^ пароль>
Префикс таблиц: <ваш случайный префикс>
Tables engine: InnoDB
Создаем администратора, переходим на главную.
Удаляем больше не нужную папку «install»
# rm -r /var/www/website.com/install/
5) Sphinx (чтобы поиск находил)
# apt-get install sphinxsearch
Редактируем ему конфиг-файл
# wget https://raw.github.com/livestreet/livestreet/master/install/sphinx.conf -O/etc/sphinxsearch/sphinx.conf
Настраиваем под себя sql_user, sql_pass, sql_db. Не забываем поменять стандартный «prefix_» на наш (вы же при установке действительно выбрали себе уникальный префикс для таблиц?)
Меняем в том же файле "/var/log/sphinx/" на "/var/log/sphinxsearch/", «address» на «listen» (дефолтный конфиг слегка устарел), "/var/lib/sphinx" на "/var/lib/sphinxsearch"
Меняем в файле /etc/default/sphinxsearch строку START=no на START=yes
Перед запуском создаем индексы:
/usr/bin/indexer --all
Запускаем
# /etc/init.d/sphinxsearch start
Настраиваем автоматическую индексацию:
# crontab -e
Дописываем в конец:
12 */3 * * * /usr/bin/indexer --rotate topicsIndex > /dev/null 2>&1
*/50 * * * * /usr/bin/indexer --rotate commentsIndex > /dev/null 2>&1
Все, поиск работает.
6) Оптимизация, шаг раз: memcached.
# apt-get install memcached php5-memcache
Перезапускаем php:
# /etc/init.d/php5-fpm restart
Дописываем в /var/www/website.com/config/config.local.php строку
$config['sys']['cache']['type'] = 'memory';
7) Оптимизация, шаг два: APC
Устанавливаем Alternative PHP Cache
# pecl install apc
Если внезапно возникли проблемы с файлом /usr/include/php5/ext/pcre/php_pcre.h, то:
# apt-get install libpcre3-dev
(rsmike)Дописываем в конец /etc/php5/fpm/php.ini следующую строчку:
extension=apc.so
И перезапускаем php5-fpm
# /etc/init.d/php5-fpm restart
Удачи!
* список литературы:
> www.webhostingtalk.com/showthread.php?t=1025286
> livestreet.ru/blog/dev_documentation/366.html
> manpages
> комментарии к данному топику
102 комментария
Стоит собрать ручками бекпорт из тестинга, тем паче, что это делается через pbuilder вообще без лишних телодвижений, без включения мозга — и занимает сборка всего полчаса.
Ветка testing у debian — 5.1
и две альтернативы mysql :)
downloads.askmonty.org/mariadb/repositories/
www.percona.com/doc/percona-server/5.5/installation/apt_repo.html
Я все беру из официальных реп + squeeze-backports, кроме Nginx, его буру здесь:
ключ
имхо в squeeze пока еще не такое уж и старье в репах.
За статью спасибо!
а если у меня есть купленный IPS manager его лучше в начале ставить или в конце?
насколько я помню, ему по зависимостям необходим apache
Зачем это писать в конфиг nginx'a, если /etc/php5/fpm/php.ini находим там expose_php и задаём Off,
после перезапускаем fpm.
Для полноты добавил бы установку ftp-сервера(vsFTPd) ;)
я раньше считал также как и вы, пока не понял прелесть настройки фтп
P.S. Для CentOS будет ман? ;)
на 7 шаге может не встать APC, ругаясь на проблемы с файлом
решение — доставить пакет pcre
Может кто сталкивался с проблемой, если идти по представленному гауду, то при установке apt-get install memcached php5-memcache:
Спасибо.
Вы случаем не на клодо? )
пропадают некоторые элементы сайта
без строки:
со строкой:
Не понял одну штуку как пробросить порт(на какой порт) в данной сборке?
Вопрос № 1
в чём разница при установке APC из PECL или просто php5??
pecl install apc
или
apt-get install php5-apc
никто мне не может ответить :( то что в pecl — написано на С я понимаю, а для сайта что лучше и чем?? pecl — работает быстрее?? или меньше сервер грузит??
Вопрос № 2
Вот все ставят PHP-FPM + ngnix и т.п., но насколько я понимаю PHP-FPM был встроен в PHP 5.3.5 и если соответственно стоит PHP5.3.5 то ставить PHP-FPM не требуется…
Привожу свой вариант ТИПОВОГО конфига (не включает кеширование, оптимизацию, сжатие, настройку phpmyadmin и т.д). Требует обновленного nginx, так как старые версии не понимают try_files и return. Предполагается работа с php-fpm через сокет (как описано в топике).
Проверьте, кому не лень, на предмет возможных ошибок. И вопрос: вызывается ли в LS напрямую что-то, кроме index.php? Вроде бы нет, поэтому для безопасности пересылка в обработчик выставлена только для него.
бонус: рерайт www->безwww
Хорошо бы добавить запрет.
Вроде как location ~* \.(php|tpl|xml|log)$ { return 403; } очевидным образом запрещает исполнение пхп или я туплю?
В начале второго этапа не получается загрузить PHP
Вот видео как делаю
Подскажите, пожалуйста!
и это… веб серверу не нужна графическая оболочка
Пока я новичек в системе Debian, без интерфейса даже пока не представляю как к редактировать файлы движка livestreet
далее поставить симлинк:
подключится к серверу по ssh с помощью WinSCP, установить в нем редактор по умолчанию notepad ++, либо из консоли тем же nano либо встроенным редактором midnight commander
Это действие ввода своего имени будет защищать доступ к phpmyadmin? Не совсем понял
Читал зачем симлинк, очень размыто описано.
В начале при установке Debian выбрал установить веб сервер.
Когда ввел команду началась установка. Потом появился список, так понял к которому серверу подключить (на выбор). Там был Апач и слово не запомнил, вроде light… nginx кажется не было.Хотел остановить установку чтоб проверить установлен ли nginx.Но в установке начали просить ввести коды. Ввел их. Было написано что потом можно будет донастроить.
Решил все же удалить Апач, чтоб не ел ресурсы.
Из служб Апач отключил, а удалить не получается:
Выбираю одно из главных приложений Апача, нажимаю Удалить, оно затемняется и ничего не происходит:
Заново хочу поставить phpmyadmin чтоб уже выбрать nginx (не знаю поставился он в тот раз) ввожу команду и уже совем не то что было:
Теперь прийдется заново всю систему ставить?
Написано же, выполните
И ещё раз, гуи не нужен, делайте всё из консоли. Тем более на сервере.
Чтобы удалить апач, Обычно эти пакеты ставит по умолчанию..
потом само появилось окно:
нажал Да, ввел пароль, появилась ошибка:
Нажал прервать. Потом ввожу установку phpmyadmin
и появляется похожий список как после кода для удаления Апача:
Когда выполняю
просто на следующую строку перескакивает
После ввода команды установки phpmyadmin, появилось что есть пакеты у которых «неудовлетворенные зависимости»:
и каждый раз как что-то устанавливаю просит двд диск вставить с Debian (неудобно будет на сервере, пока на виртуал боксе с этим проблем нет)
вообщем скачалось, и поидее установился phpmyadmin.
Как его вызвать чтоб работать в нем?
Во время установки phpmyadmin было такое окно (скрниншот не мой, на моем было только два пункта — первый и последный, но недавно Апач удалил):
Должен ли был быть nginx в этом перечне?
И как phpmyadmin запустить?
Подскажите, пожалуйста!
А раз нет, приходится читать документацию энжиникса и в ручную писать конфиг. Для phpmyadmin его написать не сложно, там нет ничего особенного.
По phpmyadmin я уже писал, установить, конфигурацию веб-сервера пропустить, поставить симлинк:
все, phpmyadmin доступен по адресу site.ru/pma
Установите midnight commander:
почитайте и выучите основные команды в линуксе
так как делал все по этой инструкции с website.com,
Но на этапе где
у меня открывается не тестовая фраза, а сайт с интернета. А вот как буду на сервере настраивать, вместо website.com нужно будет повсюду имя своего домена писать?
midnight commander установил, пока не нашел списка комманд. Зато выглядит знакомо. Когда-то на первом пк был Volkov Commander
А где можно добавить на NS запись ip сервера? Если будет два сайта, то в конце ip будет свой адрес порта, к примеру — 95.32.13.11:1291?
2. нет, конкретно в nginx отвечает за это секция server в каждом виртуалхосте:
В системе Виндовс знаю как открыть порт, а в Дебиан как? Чтоб при установке разложить сайты на существующие порты
ввожу потом нужно ввести пароль, но он не вводится.Языки менял, капслок проверял, пробовал копировать пароль который в начале для mysql задавал. Не цифры, не буквы просто не вводятся(поле остается пустым). Что это может быть?
А вот это:
нужно вводить без ";"? Со знаком в конце ввожу как в статье и ошибка ERROR 1064 (42000). Без знака ввожу и вроде нормально но как-то странно. Никаких сообщений что записано или добавленно. Всё тихо… Может я не так ввожу? Вот видео
Поэтому я ставлю всё что можно сначала из родного, потом подключаю dotdeb ставлю что надо из него, потом выключаю его и чищу его следы путём apt-get clean. И никаких проблем. А нужность более новых версий это вопрос спорный.
Подскажите, как всё же заставить работать LiveStreet на NGINX?
Напишите мне в личку, скину вам ссылку на ребят, которые устанавливают и продают ispmanager и вроде не очень дорого.
Давайте жить дружно. Я всего лишь копирайтер который пытался настроить сервер самостоятельно, но забил на эту херь — потому что я умею писать тексты, но не умею настраивать сервера. Поэтому ВСЕМ кто не умеет настраивать сервера я предлагаю не мучатся, и заказать эту работу))