Как то закралась у меня идея установки Cogear на Nginx.
Nginx как я слышал, используется в множестве высоконагруженных проектов, и он менее прожорлив в ресурсах нежели apache, что для меня было довольно ощутимым аргументом в пользу него.
Связку устанавливал на VDS:588Mhz\200Mb debian-5.0-x86_64 стоимостью 6$/мес.
UPD.
Добавил сайт для теста. Постов(2996), юзеров(1001), сообществ(1000), комментариев(5980), связей между юзерами и сообществами(11881).
Оценить можно здесь.
Все доступные мне образы шли с уже установленным веб-сервером apache, поэтому первым делом я его удалю.
/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 https://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 https://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 https://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, Игоря
https://cogear.ru/cogear-and-nginx-370.html
Просмотров: 1388