


- Windows,
- Lunux,
- FreeBSD,
Оптимизация сервера. Разгоняем Drupal. Практическое приложение. Оптимизация структуры веб-страниц
Встроенная оптимизация Drupal
Оптимизация Drupal с помощью модулей
Оптимизация конфигурации и обслуживания Drupal
Оптимизация сервера
Заключение
Так как сервер сайта может работать под управлением разных операционных систем:
рекомендации по оптимизации сервера. Подробно из рекомендаций рассмотрена только установка PHP-акселератора на сервер Ubuntu 8.04, так как PHP-акселератор значительно ускоряет работу сайта.
1. Установим eAccelerator, он является PHP-акселератором, основное назначение которого состоит в кэшировании бинарного представления кода.
Соединимся с сервером по SSH и авторизуемся с правами root. Выполним команды для установки дополнительного пакета php5-dev:
sudo apt-get install php5-dev
sudo apt-get install make
Выполним команды для установки eAccelerator:
sudo cd /tmp/
sudo wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
sudo tar xvjf eaccelerator-0.9.5.3.tar.bz2
sudo cd eaccelerator-0.9.5.3
sudo phpize
sudo ./configure --enable-eaccelerator=shared
sudo make
sudo make install
Отредактируем файл php.ini в папке /etc/php5/apache2, вставим в начале файла после тега [PHP] код:
; eAccelerator configuration
; Note that eAccelerator may also be installed as a PHP extension or as a zend_extension
; If you are using a thread safe build of PHP you must use
; zend_extension_ts instead of zend_extension
;extension = "/usr/lib/php5/20060613+lfs/eaccelerator.so"
zend_extension = "/usr/lib/php5/20060613+lfs/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"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
При использовании Zend Optimizer и / или ionCube Loader, приведенный выше код будет выглядеть так:
; eAccelerator configuration
; Note that eAccelerator may also be installed as a PHP extension or as a zend_extension
; If you are using a thread safe build of PHP you must use
; zend_extension_ts instead of zend_extension
;extension = "/usr/lib/php5/20060613+lfs/eaccelerator.so"
zend_extension = "/usr/lib/php5/20060613+lfs/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"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
; ionCube Loader configuration
zend_extension=/usr/local/lib/ioncube/ioncube_loader_lin_5.2.so
; Zend Optimizer configuration
zend_extension=/usr/local/lib/Zend/ZendOptimizer.so
zend_optimizer.optimization_level=15
Создадим кэш каталог для eAccelerator выполнив команды:
sudo mkdir -p /var/cache/eaccelerator
sudo chmod 0777 /var/cache/eaccelerator
Перезапустим Apache:
sudo /etc/init.d/apache2 restart
2. Рекомендуем установить Web-сервер nginx и настроить его работу с веб-сервером Apache так, чтобы страницы отдавал браузеру пользователя Apache, а статический контент (CSS, JavaScript, фото и т.д.) – nginx. Либо полностью заменить веб-сервер Apache веб-сервером nginx.
3. Установим в Apache модуль mod_expires, который позволяет Drupal посылать HTTP-заголовки Expires, кэшируя все статические файлы (изображения, css, javascript и т.п.) в Интернет браузере пользователя на определ?нный срок или до момента появления новых версий файлов. Настройки взаимодействия Drupal и модуля mod_expires веб-сервера Apache, находится в файле .htaccess в корневой директории сайта:
# Включить mod_expires.
<IfModule mod_expires.c>
# Разрешить истечение срока.
ExpiresActive On
# Кэшировать все файлы на две недели после доступа (A).
ExpiresDefault A1209600
# Не кэшировать динамически генерируемые страницы.
ExpiresByType text/html A1
</IfModule>
4. Для ускорения обработки .htaccess файлов веб-сервером их содержание можно перенести в главный файл конфигурации Apache – httpd.conf. После чего необходимо запретить поиск файлов .htaccess в пределах корневого каталога web-сервера, установив AllowOverride в None:
<Directory/>
AllowOverride
…
</Directory>
В виду того, что некоторые модули внутри своих каталогов могут содержать .htaccess файлы, следует аккуратно работать с данным видом оптимизации, что бы при переносе содержимого всех .htaccess файлов в httpd.conf, не пропустить не один .htaccess файл.
5. Установим на сервере: систему анализа лог файлов (например: AWstats), систему мониторинга производительности сервера (например: Munin); систему для учета сетевого трафика (например: Vnstat).
6. Включим кэш MySQL и установим его размер равным 64 мегабайтам. Для этого отредактируем файл my.cnf в папке /etc/mysql (при использовании Ubuntu 8.04). Изменим значение:
# query_cache_limit = 1M
# query_cache_size = 16M
на:
query_cache_limit = 1M
query_cache_size = 64M
После чего перезапустим MySQL командой:
/etc/init.d/mysql restart
Слишком маленький размер кэша – малоэффективен, а слишком большой размер кэша приводит к тому, что поиск нужной информации в кэше производится большое время. Поэтому рекомендуем поэкспериментировать с размером кэша, на каждом конкретном сервере и подобрать его оптимальный размер.
7. Проверим: загрузку центрального процессора, нехватку оперативной памяти или места на диске и возможную перегрузку линии связи сервера с Интернет. Если необходимо разместить базу данных на отдельном сервере, то изменим настройки соединения с базой данных находятся в файле settings.php (в папке /sites/default). Либо разместим сайт на кластере из серверов (например, воспользовавшись услуги сервиса Amazon C2).