Установка Livestreet с нуля (Debian): nginx + mysql + php-fpm + apc + memcached + sphinx
- Итак, у нас имеется свежепоставленный Debian с настроенным ssh-доступом и юзер с правами, достаточными для работы sudo.
Здесь и далее "#" в начале команды означает, что ее необходимо запускать с правами root-пользователя (например, с помощью sudo)
- Пакеты будем ставить из репозитория 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
-
Устанавливаем все необходимое
# 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
- Конфигурируем 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>
- Подготавливаемся к установке Livestreet
Создадим папку /var/www, в ней будут лежать все сайты
# mkdir /var/www/
например, наш сайт . website.com
# mkdir /var/www/website.com/
Теперь немножко протестируем:
# nano /var/www/website.com/index.php
кладем туда вот это:
<?php phpinfo();
Открываем website.com/ и убеждаемся, что все работает.
- Настраиваем 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
- Устанавливаем 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/
- 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
Все, поиск работает.
- Оптимизация, шаг раз: 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';
- Оптимизация, шаг два: APC
Устанавливаем Alternative PHP Cache
# pecl install apc
Если внезапно возникли проблемы с файлом /usr/include/php5/ext/pcre/php_pcre.h, то:
(rsmike)# apt-get install libpcre3-dev
Дописываем в конец /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
Tags: livestreet установка, debian настройка, apt-get install, php, mysql, nginx, apache, php-fpm.conf, www.conf