Вход RSS Форум по заработку на сайтах
Сапа
Продажа ссылок. посещаемость не важна. Сапа- наше все!

Профит
Для посещаемых сайтов от 500 хостов.

GoGetLinks
Для сайтов с параметрами. Очень высокий заработок!
Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player

 
 
 
 
 
Прокручивать шапку
 

Верите ли вы в существование заработка на сайтах?

Смотреть результаты

Загрузка ... Загрузка ...
Архив голосований
 
 
 
 
 

Установка nginx на Linux Gentoo

02.11.2010 от YBV

nginx — это программа для *unix операционных систем, поволяющая ускорить быстродействие вашего сайта при работе с пользователями. Стандартно на хостингах используется для обработки HTTP страниц веб сервер Apache, но на слабых системах или при высокой посещаемости сайта возникает высокая нагрузка на железо сервера от апача и страницы у пользователей начинают грузиться по 10-20 секунд, а то и более.

nginx полностью может заменить апач, но настройка его в этом случае сложна и оправдана только в тех случаях, когда уже больше ничего сделать нельзя. Гораздо чаще nginx применяется в схеме frontend-backend в качестве кеширующей прослойки для статической информации. Т.е. изначально запрос от пользователя на вебстраницу поступает в nginx, он кеширует картинки, css, яваскрипты, а за остальной информацией обращается к апачу.

Все выше- и нижесказанное имеет значение для VDS и выделенных серверов. Если у вас виртуальный хостинг, то поставить nginx вам не удастся. Все действия произодятся под учетной записью root.

1)Получаем и устанавливаем nginx себе на локаль.
1.1)Можно через встроенный инсталлятор:
emerge install nginx
1.2)Можно скачать вручную с сайта автора последнюю версию:
wget http://sysoev.ru/nginx/nginx-0.8.53.tar.gz
tar xzf nginx-*.tar.gz
cd nginx-*/

./configure
make
make install

С параметрами по умолчанию nginx ставится в папку /usr/local/nginx/

2)Теперь необходимо заменить содержимое конфигурационного файла /usr/local/nginx/conf/nginx.conf следующим:
#здесь необходимо прописать того юзера, которому принадлежат права в системе на файлы сайтов, иначе nginx может отдать по ним 403 ошибку
user  www;
worker_processes  1;

events {
worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;

log_format main  ‘$remote_addr — $remote_user [$time_local] $status ‘
‘»$request» $body_bytes_sent «$http_referer» ‘
‘»$http_user_agent» «http_x_forwarded_for»‘;

access_log /var/log/nginx/access.log main;
error_log  /var/log/nginx/error.log  notice;

sendfile       on;
tcp_nopush     on;
tcp_nodelay    on;

server {
listen 80 default;

#здесь необходимо прописать все ваши сайты, которые собираетесь кешировать
server_name  site.ru www.site.ru;
access_log  /var/log/nginx/access.log  main;

# Main location
location / {
proxy_pass         http://127.0.0.1:8080/;
proxy_redirect     off;
proxy_set_header   Host             $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
client_max_body_size       10m;
client_body_buffer_size    128k;
proxy_connect_timeout      90;
proxy_send_timeout         90;
proxy_read_timeout         90;
proxy_buffer_size          4k;
proxy_buffers              4 32k;
proxy_busy_buffers_size    64k;
proxy_temp_file_write_size 64k;
}

# Static files location
location ~*^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$
{

#здесь необходимо прописать путь на вашем сервере до файлов пользователя, которые будут кешироваться
root   /home/user/site.ru/http;
}

}
}

Сложность установки nginx, которая мало где указывается, в том, чтобы разделить порты между ним и апачем. Ведь по умолчанию Apache слушает 80 порт и попытка запустить nginx без тюнинга портов закончится неудачей.

В нашем конфиге nginx слушает 80 порт, а все некешируемые запросы отдает на порт 8080, на котором должен находиться апач.

3)Настраиваем апач на порт 8080. В случае с Gentoo конфигурационный файл апача располагается по адресу /etc/apache2/httpd.conf
Он может содержать инструкции по включению других файлов, поэтому просмотрите его и другие включаемые файлы внимательно на предмет нахождения там указаний на 80 порт:

Listen 80
NameVirtualHost *:80
<VirtualHost *:80>

все эти 80 надо заменить на 8080:
Listen 8080
NameVirtualHost *:8080
<VirtualHost *:8080>

Делаем рестарт апача для принятия изменений в конфиге: /etc/init.d/apache2 restart

4)Настраиваем автозапуск nginx. Для этого в папку /etc/init.d/ добавляем файл nginx следующего содержания:
#! /bin/sh

### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO

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

# Include nginx defaults if available
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

и стартуем /etc/init.d/nginx start

Если никаких ошибок при старте не было, значит все работает, и можно наслаждаться шустрой работой своего сайта. :cool:

Дополнение 1.
После установки желательно произвести небольшую доработку по отображению реальных IP в логах апача. Без этой доработки в логах для всех пользователей будет отображаться 127.0.0.1
Ставим mod_rpaf для апача
emerge -v mod_rpaf

в файле /etc/conf.d/apache2 к параметру APACHE_OPTS добавляем -D RPAF

в файле /etc/apache2/modules.d/mod_rpaf.conf добавляем/меняем
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1

И не забываем рестартануть апач /etc/init.d/apache2 restart

Дополнение 2.
Обязательно надо обрабатывать логи nginx, иначе они разрастутся до ужасающих размеров и заполнят все дисковое пространство сервера. Классический способ — logrotate.
Если logrotate не установлен, то:
emerge -av logrotate

Создаем файл /etc/logrotate.d/nginx следующего содержания:
/var/log/nginx/*log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 2> /dev/null || true
endscript
}

Это собственно и все, особенно хочется только отметить строчку:
/bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 2> /dev/null || true
После ротации необходимо рестартануть nginx, чтобы он создал новый файл логов, и в файле /usr/local/nginx/logs/nginx.pid находится id процесса, по которому он убивается. Путь к файлу прописан в nginx.conf

4 комментариев на запись “Установка nginx на Linux Gentoo”
  1. AzaLeo:

    Привет! Спасибо за статью — очень все подробно и доступно написал. Давно такое искал. Интересует один вопрос:

    Отрывок из установки:

    #здесь необходимо прописать путь на вашем сервере до файлов пользователя, которые будут кешироваться
    root /home/user/site.ru/http;

    Здесь необходимо просто указать путь к общим файлам, а веб-сервер сам найдет статические, или явно указать директорию с файлами для кэширования? Спасибо.

    • YBV:

      это папка с сайтом/сайтами, которые кешируются (расширения кешируемых файлов указаны в директиве location)
      обычно сайты расположены в /home/user_vasya/site1.ru/http /home/user_vasya/site2.ru/http и т.д. (конкретный путь зависит от версии линукса)
      если предполагается кешировать все сайты, то в вышеуказанном случае надо прописать
      root /home/user;

      P.S. по nginx это еще не все, будет еще дополнение по ротации логов

  2. AzaLeo:

    Спасибо за ответ, разобрался.

    Тут у меня возникла проблема при запуске nginx. Пишет:

    /etc/init.d/nginx: line 52: stop: command not found
    /etc/init.d/nginx: line 52: restart: command not found
    /etc/init.d/nginx: line 52: force-reload}”: command not found

    На хостинге есть собственная панель. Там nginx прописался. Подсказали, что можно добавить в автозагрузки командой eselect rc start

    Пробую запускать из панели, пишет: «Если вы запускаете службу первый раз — это нормально, так как большинство служб требуют начальной конфигурации. Для этого необходимо войти на сервер по SSH и дать соответствующие команды.»

    Искал решение по этой проблеме, но увы. Не подскажешь, в чем может быть проблема?

    • YBV:

      дистрибутив Gentoo?
      перед тем, как мутить из панели загрузку, надо вручную чтоб он запускался нормально
      /usr/local/nginx/logs/nginx.pid — этот файл с номером процесса, по которому он должен убиваться при рестарте, в других дистрибутивах линукса может оказаться в другом месте

Комментировать

(обязательно)

(обязательно)


CAPTCHA
*