Настройка сервера Ubuntu 12.04, 13.10 + Nginx + PHP 5 + PHP-FPM + MySQL 5

Первым делом проверяем время:

date

Оно выставлено не по Москве. Корректируем:

dpkg-reconfigure tzdata

Обновляем репозитории, чтобы далее устанавливать софт из них:

apt-get update

При желании можно сразу обновить уже установленный софт:

apt-get upgrade

Устанавливаем нужный нам hostname для нашего сервера:

hostname server1.text.ru

Ставим ntp для синхронизации времени (он может быть уже поставлен - это не проблема):

apt-get install ntp ntpdate

Ставим файловый менеджер Midnight Commander:

apt-get install mc

Если вы подключаетесь из Windows через putty, то не забудьте в настройках соединения в секции Translation установить кодировку utf-8, иначе будут проблемы с отображением mc

Теперь начинаем ставить все что нужно для веб сервера

apt-get install nginx

apt-get install mysql-server

apt-get install php5-fpm

apt-get install php5-cli

apt-get install php5-mysql

apt-get install php5-gd

apt-get install php-apc

apt-get install php5-curl

Все установлено. Далее настройка. Подразумевается, что нам нужно развернуть 1 сайт.

Создаем пользователя:

adduser name

Вместо name - имя пользователя. Попросят ввести пароль и другую необязательную информацию.

Настраиваем пул php-fpm для того, чтобы сайт работал на отдельном порту и запускал все php скрипты от имени пользователя name.

cd /etc/php5/fpm/pool.d

Копируем файл www.conf с именем name.conf и редактируем его под свои нужды. Минимальное содержимое:

[gos]
user = gos
group = gos
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
chdir = /

Далее настраиваем nginx для работы с нашим пулом php-fpm и сайтом. Сайт мы разместим в каталоге пользователя: /home/name/domains/name.ru/www

cd /etc/nginx/sites-available

Копируем default с именем gos и редактируем его под свои нужды. Минимальное содержимое:

server {
listen 80;

root /home/name/domains/name.ru/www;
index index.php index.html index.htm;

server_name name.ru;

location / {
try_files $uri $uri/ /index.php;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include fastcgi_params;
}
}

Обратите внимание на порт в fastcgi_pass. Он должен совпадать с тем, что указали в пуле php5-fpm

Также можно сразу вписать в секцию http файла nginx.conf строку:

client_max_body_size 256m;

Она повысит лимит при загрузке файлов до 256Мб.

Для активации сайта делаем сиволическую ссылку с созданного файла name в каталог /etc/nginx/sites-enabled с тем же именем. Тут все просто: создали сайт в available, включаем его, делая симлинк в enabled

Можно также донастроить php.

cd /etc/php5/fpm/

Редактируем php.ini

Из полезного стоит обратить внимание на директивы:

date.timezone = "Europe/Moscow" - выставляем временную зону для России
post_max_size = 256M - максимальный размер данных POST
upload_max_filesize = 256M - максимальный размер загружаемого файла
memory_limit = 512M - лимит памяти
display_errors = Off - выключаем вывод ошибок

Теперь можно перезапустить php5-fpm и nginx:

service php5-fpm restart
service nginx restart

Как видно, сервер на Ubuntu настраивать гораздо быстрее чем на FreeBSD. Также его легче поддерживать и доустанавливать ПО с помощью команды:

apt-get install имя_пакета

Ubuntu доступна практически везде, самое главное на облачных серверах Amazon, Clodo, где про FreeBSD совсем позабыли. У нас в студии на Ubuntu работают сервера для проектов клиентов, dev сервер, dns серверы в амазоне, 6-7 выделенных серверов клиентов. Размещение в Hetzner, Amazon, Clodo. Но в итоге проблемы чаще возникают с Ubuntu, чем с нашим стареньким сервером на FreeBSD в Hetzner. Он под бешеной нагрузкой по трафику и на диск работает уже червертый год без перезагрузки. А на Ubuntu в Hetzner сервера бывают просто виснуть начинают. Дело может и не в ОС, а в дешевом железе.

Но удобство берет свое. Ubuntu гораздо легче и быстрее деплоить.



Самое интересное