Вторая часть
Сразу хочу заметить, что статья эта не претендует на авторитетность — делал всё в первый раз на удалённой машине с Линуксом. Соответственно, прошу особо не пинать, а лучше высказывать замечания — как что-то можно было сделать по-другому, или советы по настройке. Всё нижеперечисленное было сделано по мануалам из гугла.
Итак, досталась мне хиленькая VDS от FirstVDS — с Debian и ISPManager.
Попытки оптимизировать ее работу вылились в следующее:
1. Оптимизация Apache и установка Nginx
2. Установка eAccelerator
Ну и для души —
3. Установка SVN
4. Установка Trac.
1. Апаж был уже установлен, и я думаю, что то, как его установить — нет смысла описывать — это уже прописные истины.
Хочу уделить внимание только тому, что в Debian имеется хитрая разноска — /etc/apache2/
Сразу хочу заметить, что статья эта не претендует на авторитетность — делал всё в первый раз на удалённой машине с Линуксом. Соответственно, прошу особо не пинать, а лучше высказывать замечания — как что-то можно было сделать по-другому, или советы по настройке. Всё нижеперечисленное было сделано по мануалам из гугла.
Итак, досталась мне хиленькая VDS от FirstVDS — с Debian и ISPManager.
Попытки оптимизировать ее работу вылились в следующее:
1. Оптимизация Apache и установка Nginx
2. Установка eAccelerator
Ну и для души —
3. Установка SVN
4. Установка Trac.
1. Апаж был уже установлен, и я думаю, что то, как его установить — нет смысла описывать — это уже прописные истины.
Хочу уделить внимание только тому, что в Debian имеется хитрая разноска — /etc/apache2/
- apache2.conf — это основной конфиг-файл
envvars — окружение
mods-available — здесь лежат указатели для всех возможных для установки модудей
ports.conf — указатель — где и что слушать
sites-enabled — описания существующих и включённых сайтов
conf.d — папка для других конфигов, типа PhpMyAdmin, в ней ничего даже и не делал, только просмотрел
httpd.conf — пустой файл для пользовательских конфигов
mods-enabled — включённые модули, ссылки на файлы из mod-availible
sites-available — возможные сайты (описания)
Соответственно, посмотрев на это, я сказал системе —
apt-get update
apt-get install nginx
И через несколько минут у меня был установленный и запущенный nginx.
Следующее действие — иду в ports.conf, и там меняю
Listen 80
на
Listen 127.0.0.1:8080
— то есть переводим Апач в режим backend, грубо говоря.
После чего надо сменить все прописанные сайты. ISPManager отчего-то не стала сайты прописывать в sites-availible и sites-enabled, а напрямую запихнула их в apache2.conf
Ну, собственно, каркас такой —
<VirtualHost 127.0.0.1:8080>
ServerName site.ru
DocumentRoot /var/www/site.ru
SuexecUserGroup user_name group_name
CustomLog /var/www/httpd-logs/site.ru.access.log combined
ErrorLog /var/www/httpd-logs/site.ru.error.log
ServerAdmin admin@site.ru
AddDefaultCharset utf8
php_admin_value open_basedir "/var/www/site.ru/data:."
php_admin_value upload_tmp_dir "/var/www/site.ru/data/tmp"
php_admin_value session.save_path "/var/www/site.ru/data/tmp"
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps
Как-то. Меняется фактически порт и ip — на тот, который указан в Listen
Следом мы идём в /etc/nginx/, и правим nginx.conf
Всё основное Nginx сделал за меня при установке, мне осталось только прописать хосты
server {
listen my.ip.is.here:80;
server_name site.ru;
location / {
proxy_pass 127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|html|htm)$ {
root /var/www/site.ru;
access_log /var/www/httpd-logs/site.ru.access.log;
}
}
Сделал столько конструкций, сколько у меня сайтов — везде прописал соответствующую информацию для каждого сайта.
Поправил в /etc/apache2/apache2.conf некоторые установки
Timeout 5
KeepAlive Off
#MaxKeepAliveRequests 50
#KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 20
MaxRequestsPerChild 0
<IfModule mpm_worker_module>
StartServers 2
MaxClients 20
MinSpareThreads 5
MaxSpareThreads 10
ThreadsPerChild 25
MaxRequestsPerChild 0
Ну, вроде и всё.
Всё, мы установили Nginx фронтендом на Apache. Делаем
/etc/init.d/apache2 restart
/etc/init.d/nginx restart
(reload не прокатит — именно restart)
2. Установка eAccelerator
Полностью следуя инструкции с HowToForge, установил без проблем. Перепишу своими словами.
Прежде всего — контрольный выстрел
apt-get install build-essential php5-dev
Качаем сам eAccelerator (когда ставил — версия посвежее была, нежели на HowToForge — 9.5.3)
cd /tmp
wget bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.3.tar.bz2
tar xvfj eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
phpize # не забудьте эту команду!!=)
./configure
make
make install
После чего создаём и правим конфиг.
vi /etc/php5/conf.d/eaccelerator.ini
вставляем туда:
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
Сохраняем и закрываем, а потом —
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
Ну и традиционный ребут Апача
/etc/init.d/apache2 restart
Если всё было сделано правильно — вывод phpinfo должен выглядеть примерно так
Не сказать, что после всех этих действий Wordpress у меня залетал аки сокол — но тормозил заметно меньше.
Плюнул на оптимизацию, решил отложить перенос до «После отпуска», и решил для души настроить SVN+Trac — с этим возни было куда больше)
Сегодня-завтра допишу про них)