Установка nginx + php fastcgi + mysql — веб-сервер на слабом VDS под ubuntu linux



Иногда так случается, что есть необходимость развернуть полноценный веб-сервер с блэкджеком и майэскуэлем при очень ограниченных ресурсах. Так случилось, что понадобилось мне уложиться в 256 МБ оперативной памяти на VDS. Итак, было выбрано следующее решение: nginx + fastcgi + mysql + proftpd.

Как настраивается последний я уже где-то писал, так что займёмся всем остальным. Итак, имеем VDS с рутовым доступом. Поехали.


Для начала стоит установить полезные утилиты htop для отслеживания потребляемых ресурсов, mc для удобной навигации по файловой системе и psmisc, чтобы работал killall. Первое и второе совсем необязательно для установки, а третье может уже быть установлено по умолчанию.
apt-get install htop mc psmisc

Установим собственно PHP с поддержкой mysql
apt-get install php5-cgi php5-mysql

Далее я создаю пользователя и директорию, чтобы работать там. Это, опять же, всё на ваш вкус. Тут я это пишу, чтобы самому не забыть.
mkdir /webs && groupadd webs && useradd -s /bin/bash -g webs -d /webs webs && chown -R webs /webs

Установим MySQL
apt-get install mysql-client mysql-server libmysqlclient15-dev

Установим сервер nginx
apt-get install nginx

Установим утилиту spawn-fcgi, необходимую для запуска PHP-скриптов.
apt-get install spawn-fcgi

Теперь создадим необходимые нам для работы файлы.
nano /usr/bin/php-fastcgi

и записываем в него следующее

#!/bin/sh
PHP_FCGI_CHILDREN=3
PHP_FCGI_MAX_REQUESTS=1000
exec /usr/bin/php5-cgi

И ещё один файл.

nano /etc/init.d/init-fastcgi

Следующего содержания

#!/bin/bash
PHP_SCRIPT="/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u webs -g webs -f /usr/bin/php-fastcgi"
RETVAL=0
case "$1" in
start)
$PHP_SCRIPT
RETVAL=$?
;;
stop)
killall -9 php5-cgi
RETVAL=$?
;;
restart)
killall -9 php5-cgi
$PHP_SCRIPT
RETVAL=$?
;;
*)
echo "Usage: sudo /etc/init.d/init-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL

Установим права доступа на файлы и сделаем их исполняемыми

chmod 755 /usr/bin/php-fastcgi
chmod 755 /etc/init.d/init-fastcgi

Стартуем наш процесс

/etc/init.d/init-fastcgi start


Примерный конфиг в nginx
server {
listen 80;
server_name example.com;
error_log /webs/example.com/logs/error.log warn;
access_log /webs/example.com/logs/access.log;

root /webs/example.com/www;
charset utf-8;

location ~ .*(gif|jpg|jpeg|png|ico|css|swf|js|html|htm)$ { }

location ~ .php$
{
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /webs/example.com/www$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_pass 127.0.0.1:9000;
break;
}

location / {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /webs/example.com/www$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
include /etc/nginx/fastcgi_params;
}
}


Добавим PHP в автозагрузку
update-rc.d init-fastcgi defaults

Если вы не используете innodb, то стоит выключить его поддержку, добавив в файл /etc/mysql/my.cnf после строки
[mysqld]

следующую строку
skip-innodb

В моём случае это сократило количество потребляемой оперативной памяти примерно на 100МБ



Комментарии



Дмитрий, 18.01.2016
Только не забрасывай эти заметки, я тут не плохие ответы нашел!
Добавить комментарий:
Ваше имя:


Сайт:



Текст комментария:
Код с картинки: