На VDS (Виртуальный выделенный сервер) обычно самое дорогое - это потребление памяти.
Но что бы сервер стал укладываться в 150 мегабайт стандартных настроек не достаточно. При малейшей нагрузке потребление памяти увеличивается в разы.
Предлагаю историю, как я настраивал свой сервер, на котором сейчас крутятся парочка сайтов с посещаемостью около 150 - 200 человек в сутки, при этом потребляет памяти 130 мегабайт на 64 разрядной операционой системе Ubuntu 10.04.
Итак, при установке сервера автоматически устанавливаются все нужные нам комопоненты. А нам, для оптимальной работы сайтов на сервере нужны: Nginx - проксирование и отдача статики в обход Apach-а(Очень хорошо снижает нагрузку на сервер); apache2 - собственно сам web-сервер(обязательно установите к нему модуль PHP) ; ну и база данных MySql .
Не описываю как устанавливать, какие команды вводить, так как этого полно в ваших интернетах, да и если используете какую либо панель управления сервером, например у меня стоит ISPManager, то там это делается из простым щелчком мыши. Ну и обычно(не всегда, обычно хостер предлагает на выбор несколько шаблонов, в которых могут быть уже предустановлены нужные сервисы) все эти компоненты уже стоят.
Итак, будем считать, что сервер уже у нас запущен, кое как настроен и на нем уже крутятся сайтики, но при этом хочется его оптимизировать и уменьшить потребление ресурсов.
Начнем с Nginx:
Открываем
sudo nano /etc/nginx/nginx.conf
находим параметр "worker_processes" и выставляем значение "1" - это означает что будет запущен только один процесс Nginx. Этого вполне достаточно на небольших сайтах.
Параметр "worker_connections" выставляем в "1024" - определеяет количество одновременных соединений;
В принципе на этом Nginx можно считать настроенным. Настройки сайтов рассмотрим в слудующий раз, сейчас это нам не нужно.
Далее открываем настройки Apache2 :
sudo nano /etc/apache2/apache2.conf
Находим директивы
MaxKeepAliveRequests 100 - количество запросов при постоянном соединении
KeepAliveTimeout 5 - число секунд ожидания следующего запроса от текущего клиента.
<IfModule mpm_prefork_module>
StartServers 1 Количество запускаемых процессов
MinSpareServers 2 Минимальное количество свободных процессов
MaxSpareServers 2 Максимальное количество свободных процессов
MaxClients 2 Максимальное количество процессов
MaxRequestsPerChild 1000 Количество запросов на процесс, после чего процесс завершается.
</IfModule>
На этом apache2 настроен.
Приступаем к MySql:
sudo nano /etc/mysql/my.conf
Находим и изменяем настроки.
key_buffer = 18M
max_allowed_packet = 1M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
max_connections = 100
table_cache = 1000
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
#myisam_sort_buffer_size = 8M
#join_buffer_size = 8M
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 1M
query_cache_size = 16M
#
# * InnoDB
#В старых версиях до ubuntu 12.04
#skip-innodb
#В новых версиях mysql innodb отключается:
ignore_builtin_innodb
default_storage_engine=MyISAM
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
Собственно все. Перезагружвем сервер или перезапускаем сервисы nginx, Apache2, mysql.
Если никаких ошибок не допущенно, то все должно запуститься и начать работать.
Помимо всего прочего, очень рекомендую установить php акселератор. У меня на сервере установлен Xcache. Он очень помогает снизить нагрузку, что в свою очередь снижает и затраты на сервер. Как установить и настроить написано в статье Установка и настройка Xcache для кеширования PHP скриптов