X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Настройка CentOS 5.4 с Nginx под управлением ISPmanager, личный опыт ламера
Radon
сообщение 2009-11-05, 12:13
Сообщение #1
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 174
Регистрация: 2008-12-15

Репутация:   нет  
Всего: 1


Сегодня пришла в моцк мысль О_о - написать мини статейку, чтобы кашу после 3-х дней мытарств переварить, о личном опыте настройки связки:
CentOS 5.4 с установкой nginx-0.8.21-1.el5 + php-5.2.11-2.el5 + httpd-2.2.14-1.el5 +mysql-server-5.0.86-1.el5 и всё это должно работать под управлением ISPmanager-Lite 4.3.32 (вечная лицензия, можно поюзать и демо-версию пару недель бесплатно, что хватит для настройки сервера, а потом и не понадобится уже - предварительно зарегистрировавшись на офф. сайте и заказав)

Ставилось все это на VPS:
model: Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
архитектура:  x86_64
cpu MHz: 587.422
cache size: 8192 KB
cpu cores: 4   (в nginx.conf  указываем настройку соответственно ядер: worker_processes 4; )
Mem: 200  Mb
Swap: 0 Mb  (фича Виртуозы, нету в ней виртуальной памяти)


Итак, после установки в панеле VDS выбранной системы CentOS 5.4 с уже установленными пакетами php, httpd, mysql-server, и разумеется без nginx устанавливаем панель ISPmanager-Lite:

Пользовался программой SSH Explorer в которой есть встроенный SFTP, хорошая прожка, рекомендую!

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

yum remove httpd
yum remove php
yum remove phpmyadmin
yum remove mysql-server
yum remove php-mysql
yum remove sendmail
yum remove iptables system-config-securitylevel-tui


Теперь ставим панель:
wget http://download.ispsystem.com/install.sh

sh install.sh

Установка будет идти довольно продолжительно, периодически запрашивая подтверждения на дальнейшие действия. В списке устанавливаемых конфигураций. Выбирайте рекомендуемые, самая первая строчка, или последнюю, где можно будет выбрать что надо устанавливать а что и пропустить.

После установки панели проверяем её, заходим по адресу https://ваш_IP_сервера/manager/
Там сразу незабываем подкорректировать настройки:
Настройки сервера -> Настройки PHP ставим памяти побольше ))

2. Теперь устанавливаем Nginx

Для начала установим репозиторий:

rpm -ihv [url]http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm[/url]
rpm -ihv [url]http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm[/url]


Теперь займемся обновлением ПО. Удалим или обновим свой старый php

yum remove php

теперь установим новый

yum install php php-devel php-fpm php-mcrypt php-mssql php-gd php-mysql

с установкой модулей php тут можно незаморачиваться. А установить требуемое с панели ISP/

Обновим mysql и apache

yum update mysql
yum update httpd

Устанавливаем nginx

yum install nginx

Для того, чтобы связать ISPManager и nginx очищаем кэш пакетов ISPManager

/usr/local/ispmgr/sbin/pkgctl -D cache

и рестартим ISP

killall -9 -r ispmgr

Идем в пункт Возможности(Features) панели ISPManager и там устанавливаем Nginx.
p.s. хотя можно попробовать активировать его из шелла:

/usr/local/ispmgr/sbin/pkgctl activate nginx

Перегружаем сервак с панели VDS.

Теперь нам потребуется модуль mod_rpaf, т.к. по умолчанию связка nginx+apache для всех IP адресов получаемых через $_SERVER['REMOTE_ADDR'] будет показывать адрес вашего сервера.

yum install mod_rpaf

В файле rpaf.conf располагающемся в /etc/httpd/conf.d/
Прописываем:

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1 xx.xx.xx.xx
RPAFheader X-Real-IP

где xx.xx.xx.xx – IP адрес вашего сервера. Если на сервере несколько адресов IP, то прописываем их по аналогии через пробел. Перегружаем сервак.

Теперь привожу собственные настройки nginx.conf (/etc/nginx/) и httpd.conf (/etc/httpd/conf/)
Перед изменениями сохраните эти файлы где нибудь., чтобы в случае чего можно было их вернуть

В httpd.conf изменяем параметр Listen на
Listen 127.0.0.1:8080
Таким образом наш апач будет работать на сервере локально.

В nginx.conf черт ногу сломит, по инету полазил и собрал свой конфиг:

user  nginx;
worker_processes  4;
timer_resolution 100ms;
worker_rlimit_nofile 8192;
worker_priority -5;
error_log   /var/log/nginx/error.log;

pid		/var/run/nginx.pid;

events {
    worker_connections  2048;
    use epoll;
}

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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 					 '$status $body_bytes_sent "$http_referer" '
 					 '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile		on;
    tcp_nopush	  on;
    tcp_nodelay	 on;
    server_tokens   off;
    gzip			on;
    gzip_static	 on;
    gzip_comp_level 5;
    gzip_min_length 1024;
    keepalive_timeout  65;
    limit_zone   myzone  $binary_remote_addr  10m;

    include /etc/nginx/conf.d/*.conf;

 server {
 	listen 188.40.161.8:80;
 	server_name ******** www.********.ru;
 	rewrite	^(/manager/.*)$	https://$host$1	permanent;
 	location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
 		proxy_pass [url]http://127.0.0.1:8080;[/url]
 		proxy_redirect off;
 		proxy_set_header Host $host;
 		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 		proxy_set_header X-Real-IP $remote_addr;
 	}
 	location / {
 		proxy_pass [url]http://127.0.0.1:8080;[/url]
 		proxy_redirect off;
 		proxy_set_header Host $host;
 		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 		proxy_set_header X-Real-IP $remote_addr;
 			 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 10m;
 	}
 	location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
 		root /var/www/seaterror/data/www/********;
 		access_log /var/www/httpd-logs/********.access.log;
 		error_page 404 = @fallback;
 	}
 	location @fallback {
 		proxy_pass [url]http://127.0.0.1:8080;[/url]
 		proxy_set_header Host $host;
 		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 		proxy_set_header X-Real-IP $remote_addr;
 	}
 }

 client_max_body_size 16m;
}


где, ******** - это домен вашего сайта.
На оптимальность непретендуется! Это отсебячина. Тут я надеюсь на помощь и подсказки от знающих гуру )))

Теперь самое интересное.
При создании: Доменных имен и WWW доменов из панели ISPManager.
В конфиги прописываются параметры:
в nginx.conf -
proxy_pass http://_ваш_IP_сервера:8080;
proxy_redirect http://_ваш_IP_сервера:8080;

Мне лично кажется что это неправильно, так как апач будет работать и по этим адресам, меняем эти строчки на:
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;

Это делаем во всех записях! Смотрите пример моего конфига, там можно прописать и дополнительные настройки.

В httpd.conf в самом конце находим записи
NameVirtualHost ваш_IP_сервера:8080
<VirtualHost ваш_IP_сервера:8080>
Как видим таже самая ватрушка, апач работает на внешнем IP, меняем на локалку 127.0.0.1

NameVirtualHost 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
Так же аналогичные строки заменяем во всем конфиге!

Теперь вопрос к ГУРУ, это я правильно сделал и понял или в этом кроется ошибка?
Сервак нормально перегрузился после этого всего, хотя по проверке конфигов:

service httpd configtest
[warn] module ispmgr_module is already loaded, skipping
[warn] The Alias directive in /usr/local/ispmgr/etc/ispmgr.inc at line 3 will proba bly never match because it overlaps an earlier Alias.
[warn] The Alias directive in /usr/local/ispmgr/etc/ispmgr.inc at line 4 will proba bly never match because it overlaps an earlier Alias.
[warn] The Alias directive in /usr/local/ispmgr/etc/ispmgr.inc at line 5 will proba bly never match because it overlaps an earlier Alias.
[warn] The Alias directive in /usr/local/ispmgr/etc/ispmgr.inc at line 6 will proba bly never match because it overlaps an earlier Alias.
[warn] NameVirtualHost 127.0.0.1:8080 has no VirtualHosts Syntax OK

Видим проблемы с панелью, вроде ненравится наши правки настроек конфигов на локалку ((
При этом панель ISP работает вроде нормально, в Сервисах только процесс http отображается как вырубленный, наверное из-за локалки О_о
а на
service nginx configtest
the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
Тут вроде всё ОК ;)

Сервак стоит, пока тестирую, что обнаружу отпишусь ))
Очень надеюсь на комментарии специалистов, поправок и предложений в оптимизации сервера.
Ниже привожу свой top:

Прикрепленные файлы  top.jpg ( 105.07 килобайт ) Скачиваний: 19


Сообщение отредактировал Radon - 2009-11-05, 12:22

Прикрепленные файлы
Прикрепленные файлы  top.jpg ( 105.07 килобайт ) Скачиваний: 19
 
Перейти в начало страницы
+Цитировать сообщение
Radon
сообщение 2009-11-05, 12:36
Сообщение #2
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 174
Регистрация: 2008-12-15

Репутация:   нет  
Всего: 1


Проблемы всеже есть ((
В панеле периодически выкидывает ошибку:
Внутренняя ошибка Can't fork in cache_quota
при этом процессы вылетают

видимо превышен кеш о_о где бы это поправить?
Перейти в начало страницы
+Цитировать сообщение
Sys(3)X
сообщение 2009-11-05, 23:39
Сообщение #3
Eleanor hoster
Иконка группы

Группа: Администраторы
Сообщений: 272
Регистрация: 2008-11-11

Репутация:   нет  
Всего: 10


Цитата (Radon @ 5.11.2009, 12:13)
Устанавливаем nginx

yum install nginx


В репозиториях не всегда свежие пакеты, к тому же некоторые модули nginx лучше отключить перед установкой - например модуль perl. Иногда наблюдали проблемы из-за него.
Скачать можно нашу версию (последняя - 0.8.20) с отключенным модулем, а также с исправленным init-файлом и cpbw патчем:

http://dl.getdropbox.com/u/252944/scripts/....8.20-1.src.rpm

Установка:

rpmbuild --rebuild nginx-0.8.20-1.src.rpm

Далее соберётся rpm файл на основе архитектуры сервера, в конце Вам будет выдана ссылка на него (он будет лежать в папке /usr/src/redhat/RPMS/*/nginx-0.8.20*)
Выполняем:

rpm -ivh ПУТЬ_ДО_ПАКЕТА

Установка завершена.

Цитата (Radon @ 5.11.2009, 12:13)
worker_processes 4;


Вполне хватит 1-2 в режиме прокси.

Цитата (Radon @ 5.11.2009, 12:13)
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';


Можно ещё добавить директиву $server_name - в этом случае в логах будет указываться имя вирт. хоста.
Примерно так:

log_format  main  &#39;$remote_addr - $remote_user [$time_local] $server_name "$request" &#39;
					  &#39;$status $body_bytes_sent "$http_referer" &#39;
					  &#39;"$http_user_agent" "$http_x_forwarded_for"&#39;;


Цитата (Radon @ 5.11.2009, 12:13)
client_max_body_size 10m;


Это максимальный размер файла, который можно передать по HTTP. Иногда параметр требует увеличения.

Цитата (Radon @ 5.11.2009, 12:13)
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {


Список расширений, обрабатываемых nginx'om. Можно заменить на:

jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi
|wav|bmp|rtf|js|swf|avi|mp3


Также, логировать запросы к картинкам не обязательно, можно поставить

access_log off;


Сообщение отредактировал Sys(3)X - 2009-11-05, 23:40
Перейти в начало страницы
+Цитировать сообщение
Radon
сообщение 2009-11-06, 9:43
Сообщение #4
Любитель
Иконка группы

Группа: Пользователи
Сообщений: 174
Регистрация: 2008-12-15

Репутация:   нет  
Всего: 1


Установил с нуля, обновлять пакеты которые шли в комплекте с панелью ISP нестал, мало ли чего ))
сразу поставил
yum install zlib-devel
yum install pcre-devel
yum install openssl-devel

этих пакетов по умолчанию не было! и пришлось ещё добавить:
yum install gcc

После чего предложенный выше способ установки Nginx прошол на ура!
в моем случае путь до rpm файла был /usr/src/redhat/RPMS/x86_64/nginx-0.8.20-1.x86_64.rpm
в панеле ISP активировал через Возможности (предварительно очистив кеш и рестарт панели)

Проверяем конфиги:
service httpd configtest
service nginx configtest

все вроде ОК ))

После добавления доменов, снова лезем в настройки и подстраиваем в соответствии с первым топиком + советы ниже
З,Ы, создание юзера в панеле почему то вышиб апач, перегружаем его:
service httpd restart
и на всякий случай
service nginx restart

После всех манипуляций ребутнул сервак, теперь вроде стоит, будем тестировать и смотреть что получилось ))


Для тестирования установилServer Monitoring With munin And monit

погоняю сервак с недельку а там видно уже будет как сборка эта себя покажет

Сообщение отредактировал Radon - 2009-11-06, 11:20
Перейти в начало страницы
+Цитировать сообщение
Гость_Fucktor_*
сообщение 2009-11-13, 13:20
Сообщение #5



Гости





Я конечно понимаю что тема называется Настройка CentOS 5.4, но я бы хотел её установить себе на виртуальную машину Windows Virtual PC, вроде за ночь она встала, а при запуске не хочет запускаться, ошибку какую-то постоянно выдаёт и я решил её снести. Кстати интересует тема нужно ли делать тест DVD, я вот нажал на тест и ждал около 5ти часов пока до 100% дойдёт, а сама ОС устанавливалась 3 с лишним часа, это нормально??? Просто не приучен пока к линуксовому семейству. :)
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
0 чел. читают эту тему (гостей: 0, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0340 сек.    11 запросов    GZIP включен    Сейчас: 2024-10-08, 8:17