Как настраивается последний я уже где-то писал, так что займёмся всем остальным. Итак, имеем 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
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
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
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;
}
}
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МБ
Комментарии