Купить SSD Хостинг   

WebHelpCenter.ru Все что может пригодится вебмастеру, администратору сервера, хостинга, программисту и новичку в интернете

Сети
Поиск по сайту
Разделы сайта
Подробнее о...
Календарь
«    Январь 2018    »
ПнВтСрЧтПтСбВс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
Архив новостей
Полезное
Облако тегов
Популярные новости
Скачать Игры бесплатно
Скачать alawar Игры бесплатно
Друзья
Самое дорогое

Установка и настройка Nginx на CentOS под управлением CPanel/WHM

Nginx - это небольшой, очень быстрый и эффективный веб-сервер, как правило, используемый для обслуживания статического контента и как обратный прокси (или балансировщик нагрузки) для Apache или других относительно медленных бэкендов.

Поэтому вполне естественно использовать Nginx в качестве фронтэнда для Apache. Nginx позволяет экономить значительный объем памяти и процессорного времени, как правило используемых многочисленными процессами Apache, отдающими контент клиентам.

1. Устанавливаем модуль mod_rpaf

Чтобы в Apache записывал реальные ip-адреса посетителей вместо ip-адреса сервера, необходим специальный модуль Apache (mod_rpaf).

Модуль: mod_rpaf
Модуль восстанавливает реальный адрес клиента REMOTE_ADDR на backend сервере, при условии что адрес удаленного клиента (прокси) указан в httpd.conf и установлен подходящий заголовок X-Forwarded-For (или определенный в конфигурации).

Скачать с сайта последнюю версию можно здесь: http://stderr.net/apache/rpaf/download/

# cd /usr/local/src
# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
# tar xvfz mod_rpaf-0.6.tar.gz
# cd mod_rpaf-0.6
# /usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c


Настраиваем mod_rpaf

Открываем WHM
WHM: Main >> Service Configuration >> Apache Configuration > Include Editor > Pre Main Include

выбираем версию apache запущенную на сервере, в появившееся пустое поле, вставляем следующий код и корректируем его:

<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Allow from all
</Location>

LoadModule rpaf_module modules/mod_rpaf-2.0.so

RPAFenable On
# Enable reverse proxy add forward

RPAFproxy_ips 127.0.0.1 (добавляем список IP-адресов, управляемых с помощью Cpanel, пишем через пробел)

RPAFsethostname On
# let rpaf update vhost settings allowing to have
# the same hostnames as in the “actual” configuration for the
# forwarding apache installation

RPAFheader X-Real-IP
# Allows you to change which header we have mod_rpaf looking for
# when trying to find the ip the that is forwarding our requests


2. Устанавливаем библиотеку PCRE

Последнюю версию можно скачать здесь:
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

# cd /usr/local/src
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.gz
# tar xvfz pcre-8.10.tar.gz
# cd pcre-8.10
# ./configure
# make
# make install


3. Устанавливаем Nginx

Последнюю версию или старую, скачиваем с сайта : http://sysoev.ru/nginx/

# cd /usr/local/src
# wget http://sysoev.ru/nginx/nginx-0.8.53.tar.gz
# tar xvfz nginx-0.8.53.tar.gz
# cd nginx-0.8.53
# ./configure
# make
# make install


Создаем директорию для хранения логов Nginx:
# mkdir /var/log/nginx


Изменяем стандартные настройки Nginx в конфигурационном файле /usr/local/nginx/conf/nginx.conf
В место стандартного расположение логов error_log .... меняем на более привычный для CPanel
error_log /var/log/nginx/error.log;

Смотрите пример файла конфигурации nginx:
user  nobody;
# no need for more workers in the proxy mode
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

worker_rlimit_nofile  8192;

events {
worker_connections  2048; # you might need to increase this setting for busy servers
use epoll; #  Linux kernels 2.4.x  change to rtsig
}

http {
server_names_hash_max_size 8192;
server_names_hash_bucket_size 256;

client_max_body_size 200m;
client_body_buffer_size 128k;

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

sendfile on;
tcp_nopush on;
tcp_nodelay on;

keepalive_timeout  70;
server_tokens off;

gzip on;
gzip_min_length  1100;
gzip_buffers  4 32k;
gzip_types    text/plain application/x-j&#097;vascript text/xml text/css;
ignore_invalid_headers on;

client_header_timeout  3m;
client_body_timeout 3m;
send_timeout     3m;
connection_pool_size  256;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
request_pool_size  4k;
output_buffers   4 32k;
postpone_output  1460;

include "/usr/local/nginx/conf/vhost.conf";
}



4. Изменяем конфигурацию Cpanel/WHM

Теперь нужно перенести Apache на другой порт.
Открываем CPanel/WHM и меняем порт на котором будет работать apache

WHM: Main >> Server Configuration >> Tweak Settings

Находим строчку:
The port on which Apache listens for HTTP connections. Specifying a specific IP will prevent Apache from listening on all other IPs. (default: 0.0.0.0:80) - 0.0.0.0:80

меняем на 0.0.0.0:81

В командной строке запускаем:
# /usr/local/cpanel/whostmgr/bin/whostmgr2 –updatetweaksettings


Открываем конфигурационный файл апача, ищем 80 порт, если не находим то все в порядке
# vi /usr/local/apache/conf/httpd.conf


если был найден 80-й порт то запускаем, пересоздание конфигурационного файла httpd.conf, и перезапускаем апачь:
# /scripts/rebuildhttpdconf
# /etc/init.d/httpd restart


5. Импортируем все домены на сервере в файл vhost.conf

Создаем файл nginx.sh в том же каталоге или /root, в общем где удобно :)

# vi nginx.sh


Вставляем следующий код :
#!/bin/sh

cat > "/usr/local/nginx/conf/nginx.conf" &lt;&lt;EOF
user  nobody;
# no need for more workers in the proxy mode
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

worker_rlimit_nofile  8192;

events {
worker_connections  2048; # you might need to increase this setting for busy servers
use epoll; #  Linux kernels 2.4.x  change to rtsig
}

http {
server_names_hash_max_size 8192;
server_names_hash_bucket_size 256;

client_max_body_size 200m;
client_body_buffer_size 128k;

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

sendfile on;
tcp_nopush on;
tcp_nodelay on;

keepalive_timeout  70;
server_tokens off;

gzip on;
gzip_min_length  1100;
gzip_buffers  4 32k;
gzip_types    text/plain application/x-j&#097;vascript text/xml text/css;
ignore_invalid_headers on;

client_header_timeout  3m;
client_body_timeout 3m;
send_timeout     3m;
connection_pool_size  256;
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
request_pool_size  4k;
output_buffers   4 32k;
postpone_output  1460;

include "/usr/local/nginx/conf/vhost.conf";
}

EOF

/bin/cp /dev/null /usr/local/nginx/conf/vhost.conf

cd /var/cpanel/users
for USER in *; do
for DOMAIN in &#96;cat $USER | grep ^DNS | cut -d= -f2&#96;; do
  IP=&#96;cat $USER|grep ^IP|cut -d= -f2&#96;;
  ROOT=&#96;grep ^$USER: /etc/passwd|cut -d: -f6&#96;;
  echo "Converting $DOMAIN for $USER";

  cat &gt;&gt; "/usr/local/nginx/conf/vhost.conf" &lt;&lt;EOF
   server {
  access_log off;

  error_log  /var/log/nginx/error.log warn;
  listen    80;
  server_name  $DOMAIN www.$DOMAIN;

  # uncomment location below to make nginx serve static files instead of Apache
  # NOTE this will cause issues with bandwidth accounting as files wont be logged
  #location ~* \.(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|js|css)$ {
  # root   $ROOT/public_html;
  #}

  location / {
   proxy_send_timeout   90;
   proxy_read_timeout   90;

   proxy_buffer_size    16k;
   # you can increase proxy_buffers here to suppress "an upstream response
   #  is buffered to a temporary file" warning
   proxy_buffers     16 32k;
   proxy_busy_buffers_size 64k;
   proxy_temp_file_write_size 64k;

   proxy_connect_timeout 30s;

   proxy_redirect  http://www.$DOMAIN:81   http://www.$DOMAIN;
   proxy_redirect  http://$DOMAIN:81   http://$DOMAIN;

   proxy_pass   http://$IP:81/;

   proxy_set_header   Host   \$host;
   proxy_set_header   X-Real-IP  \$remote_addr;
   proxy_set_header   X-Forwarded-For \$proxy_add_x_forwarded_for;
  }
}
EOF
done
done



Меняем права и запускаем скрипт
# chmod 755 nginx.sh
# sh nginx.sh


Запускаем скрипт и проверяем, нет ли ошибок в конфигурации nginx
# /usr/local/nginx/sbin/nginx -t


6. Создаем скрипт для автозагрузки Nginx при загрузке системы

Создаем init.d скрипт /etc/init.d/nginx:
# vi /etc/init.d/nginx

Вставляем следующий код:
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

lockfile=/var/lock/subsys/nginx

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
start
}

reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac


Делаем init.d скрипт исполняемым и включаем автозапуск Nginx при загрузке системы:
# chmod +x /etc/init.d/nginx
# chkconfig nginx on


Проверяем правильность конфигурации nginx:
# service nginx configtest


Запускаем Nginx
# service nginx start

или перезапускаем
# service nginx restart


Теперь все сайты которые сервере будет работать через Nginx.

7. Создаем скрипты, которые будут добавлять необходимые записи в vhost.conf при создание и удаления учетной записи из сервера (Cpanel/WHM, Terminate an Account)

Используется при создании учетной записи в WHM
# vi /scripts/postwwwacct
# chmod 755 /scripts/postwwwacct


В этот файл вставляем код написан в пункте 5.

Используется при удалении учетной записи клиента (домена, сайта)
# vi /scripts/postkillacct
# chmod 755 /scripts/postkillacct


Внимание!: Если у вас установлен фаирвол, например CSF, то не забудьте открыть порт 81

На этом все.
После всех этих действий у вас будет работать Apache + Nginx под управлением CPanel

Тестирование и настройка производилась на системе CENTOS 5.5 x86_64, WHM 11.28.52, процессор Intel® Xeon® Processor X3220
(8M Cache, 2.40 GHz, 1066 MHz FSB)

P.S. На заметку, пути к необходимым файлам:
/usr/local/nginx/conf/nginx.conf - конфигурационный файл nginx
/usr/local/nginx/conf/vhost.conf - файл с конфигурациями всех доменов на сервере
/usr/local/nginx/logs/ - расположение логов по умолчанию
/var/log/nginx/ - расположение логов, удобное для работы с CPanel
/usr/local/apache/conf/httpd.conf - конфигурационный файл Apache

Если заметите ошибки просьба сообщить.
Опубликовал admin, 3-12-2010, 05:14 | Комментировать (0) | Печать
 (голосов: 3)