Как то закралась у меня идея установки Cogear на Nginx.
Nginx как я слышал, используется в множестве высоконагруженных проектов, и он менее прожорлив в ресурсах нежели apache, что для меня было довольно ощутимым аргументом в пользу него.
Связку устанавливал на VDS:588Mhz\200Mb debian-5.0-x86_64 стоимостью 6$/мес.
UPD.
Оценить можно здесь.
/etc/init.d/apache2 stop
apt-get remove --purge apache2
Далее обновляем список пакетов.
apt-get update
Установка пакетов.
Общие пакеты, необходимые для установки Nginx и eAccelerator.
apt-get install build-essential libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev libperl-dev
Nginx.
Устанавливаем:cd /tmp
wget http://sysoev.ru/nginx/nginx-0.7.67.tar.gz
tar zxvf nginx-0.7.67.tar.gz
cd nginx-0.7.67
./configure --prefix=/usr/local/nginx --with-cc-opt="-I /usr/include" --with-ld-opt="-L /usr/lib" --with-http_stub_status_module --with-http_realip_module --with-http_perl_module --with-http_ssl_module
make
make install
Создаем файл "/etc/init.d/nginx",
с таким содержимым:
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/nginx/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Заменяем содержимое "/usr/local/nginx/conf/nginx.conf",
на такое(обязательно измените site.com):
user www-data www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name site.com;
charset utf-8;
access_log logs/www.access.log;
root /var/www;
location = / {
rewrite ^ /index.php/ last;
}
location = /index.php {
rewrite ^ /index.php/ last;
}
location / {
try_files $uri /index.php$uri;
}
location /index.php {
internal;
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_ignore_client_abort off;
fastcgi_buffers 300 5K;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
location ~* \.php$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_ignore_client_abort off;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_buffers 300 5K;
include fastcgi_params;
}
}
}
Делаем исполняемым, добавляем в автозагрузку и запускаем:
chmod 755 /etc/init.d/nginx
update-rc.d nginx defaults
/etc/init.d/nginx start
PHP.
Устанавливаем:apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-json php5-mcrypt php5-memcache php5-dev
Открываем "/etc/php5/cgi/php.ini".
Меняем
;cgi.fix_pathinfo=0
наcgi.fix_pathinfo=1
Создаем "/etc/init.d/php-fastcgi".
Запишем туда:
#! /bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php-cgi in external FASTCGI mode"
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
scriptNAME=/etc/init.d/$NAME
[ -x "$DAEMON" ] || exit 0
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
. /lib/init/vars.sh
. /lib/lsb/init-functions
if [ "$START" != "yes" -a "$1" != "stop" ]; then
log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
exit 0
fi
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT"
do_start()
{
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- $DAEMON_ARGS || return 2
}
do_stop()
{
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;;
*) log_end_msg 1 ;;
esac
;;
*)
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $scriptNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
Создаем еще один файл "/etc/default/php-fastcgi"
START=yes
EXEC_AS_USER=www-data
FCGI_HOST=localhost
FCGI_PORT=9000
PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=1000
Делаем исполняемым, добавляем в автозагрузку и запускаем:
chmod 755 /etc/init.d/php-fastcgi
update-rc.d php-fastcgi defaults
/etc/init.d/php-fastcgi start
MySQL.
Устанавливаем:apt-get install mysql-server mysql-client
eAccelerator.
Устанавливаем:cd /tmp
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar xvfj eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
phpize
./configure
make
make install
Создаем файл "/etc/php5/conf.d/eaccelerator.ini" с таким содержимым.
extension="eaccelerator.so"
eaccelerator.shm_size="64"
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="3600"
eaccelerator.shm_prune_period="1800"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
Создаем папку для хранения файлов eAccelerator'а и выставляем ей права:
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
Memcached.
Устанавливаем:apt-get install memcached
Перезапускаем PHP и Nginx.
/etc/init.d/php-fastcgi restart
/etc/init.d/nginx restart
Установка Cogear.
Эта часть подробно расписана на сайте, поэтому углубляться не буду.
cd /var/www/
wget http://cogear.ru/download/get/1/ -O cogear.zip
unzip cogear.zip
cp -R cogear/* ./
rm -r cogear
find . -type f -exec chmod 0644 {} \;
find . -type d -exec chmod 0755 {} \;
chmod -R 0777 ./engine/cache ./uploads/
chown -R www-data:www-data *
mysql -u root -p
>mysql CREATE DATABASE `cogear` CHARACTER SET utf8 COLLATE utf8_general_ci;
>mysql exit
Переименовываем "./gears/global/global.info.default" в "./gears/global/global.info" и вносим необходимые изменения. Готово! Можно пройти по адресу сайт и завершить установку.
p.s. Если тема будет интересна, можно заняться оптимизацией конфигов и сделать сравнительное тестирование.
Установка для «чайников»: nginx + php-cgi + mysql + eaccelerator + memcache на Debian 5.0 «lenny» — пост с хабра, многое взято оттуда.
Документация Nginx — сайт разработчика Nginx, Игоря
Сысоева.


Немного заполню, подпилю дизайн, настрою как надо и допишу шестеренку. Вот тогда можно будет показывать ;)