HostDB.ru
 
Логин

Пароль



или войдите через соцсеть:
провайдеров: 175, переходов на сайты провайдеров сегодня: 9
Хостинг Hostlife

Голосование

Мой сайт это:










Анекдот




Предложить идею


- Установка и настройка nginx (1.0.2) + php-fpm (5.3.6) + mysql (5.5.20)+phpmyadmin на Centos

Установка и настройка nginx (1.0.2) + php-fpm (5.3.6) + mysql (5.5.20)+phpmyadmin на Centos


КРАТКО О NGINX

nginx — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах.

Основные функции:

  • HTTP-серверобслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, кеш дескрипторов открытых файлов;
  • акселерированное проксирование без кэширования, простое распределение нагрузки и отказоустойчивость;
  • поддержка кеширования при акселерированном проксировании и FastCGI;
  • акселерированная поддержка FastCGI и memcached серверов, простое распределение нагрузки и отказоустойчивость;
  • модульность, фильтры, в том числе сжатие (gzip), byte-ranges (докачка), chunked ответы, HTTP-аутентификация, SSI-фильтр;
  • несколько подзапросов на одной странице, обрабатываемые в SSI-фильтре через прокси или FastCGI, выполняются параллельно;
  • поддержка SSL;
  • экспериментальная поддержка встроенного Perl;
  • IMAP/POP3-прокси серверперенаправление пользователя на IMAP/POP3-бэкенд с использованием внешнего HTTP-сервера аутентификации;
  • простая аутентификация (LOGIN, USER/PASS);
  • поддержка SSL и StartTLS.

Архитектура

В nginx рабочие процессы обслуживают одновременно множество соединений, мультиплексируя их вызовами операционной системы select, epoll (Linux) и kqueue (FreeBSD). Рабочие процессы выполняют цикл обработки событий от дескрипторов. Полученные от клиента данные разбираются с помощью конечного автомата. Разобранный запрос последовательно обрабатывается цепочкой модулей, задаваемой конфигурацией. Ответ клиенту формируется в буферах, которые хранят данные либо в памяти, либо указывают на отрезок файла. Буферы объединяются в цепочки, определяющие последовательность, в которой данные будут переданы клиенту. Если операционная система поддерживает эффективные операции ввода-вывода, такие как writev и sendfile, то nginx применяет их по возможности.

Конфигурация HTTP-сервера nginx разделяется на виртуальные серверы (директива server). Виртуальные серверы разделяются на location’ы (location). Для виртуального сервера возможно задать адреса и порты, на которых будут приниматься соединения, а также имена, которые могут включать для обозначения произвольной последовательности в первой и последней части, либо задаваться регулярным выражением.
location’ы могут задаваться точным URI, частью URI, либо регулярным выражением. location’ы могут быть сконфигурированы для обслуживания запросов из статического файла, проксирования на fastcgi/memcached сервер.

Для эффективного управления памятью nginx использует пулы. Пул — это последовательность предварительно выделенных блоков динамической памяти. Длина блока варьируется от 1 до 16 килобайт. Изначально под пул выделяется только один блок. Блок разделяется на занятую область и незанятую. Выделение мелких объектов выполняется путём продвижения указателя на незанятую область с учётом выравнивания. Если незанятой области во всех блоках не хватает для выделения нового объекта, то выделяется новый блок. Если размер выделяемого объекта превышает значение константы NGX_MAX_ALLOC_FROM_POOL, либо длину блока, то он полностью выделяется из кучи.
Таким образом, мелкие объекты выделяются очень быстро и имеют накладные расходы только на выравнивание.

nginx содержит модуль географической классификации клиентов по IP-адресу. В его основу входит база данных соответствия IP-адресов географическому региону, представленная в виде Radix tree (сжатое префиксное дерево или сжатый бор) в оперативной памяти. nginx предварительно распределяет первые несколько уровней дерева, таким образом, чтобы они занимали ровно 1 страницу памяти. Это гарантирует, что при поиске IP-адреса для первых нескольких узлов при трансляции адреса всегда найдётся запись в TLB.


УСТАНОВКА И НАСТРОЙКА

1) Cоздаём пользователя, группу и папку для будущего сайта (сайтов)
groupadd www -g 48
useradd -u 48 -g www www
mkdir -p /home/sites/test
chmod +w /home/sites/test
chown -R www:www /home/sites/test
 

2) Обновляемся:
yum update
 

3) Установка дополнительных пакетов для удобной настройки:
yum install mc nano lynx
и библиотеки для компиляции:
yum -y install gcc cpp autoconf automake bison bison-devel cmake libtool m4 gcc-c++ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libmcrypt libmcrypt-devel pcre-devel libevent libevent-devel re2c libtool-ltdl libtool-ltdl-devel
 

4) Отключаем iptables он ещё не конфигурирован и мешает запуску служб
service iptables stop
 

5) Установка nginx
cd /tmp
wget http://sysoev.ru/nginx/nginx-1.0.2.tar.gz
tar -xf nginx-1.0.2.tar.gz
# Подгружаем PCRE библиотеку отвечающую за редиректы и регулярки
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
tar -xf pcre-8.30.tar.gz
# Подгружаем zlib отвечающий за компрессию заголовков и кода отдаваемых сервером страниц
wget http://zlib.net/zlib-1.2.6.tar.gz
tar -xf zlib-1.2.6.tar.gz
# Переходим в папку с исходниками nginx конфигурируем, компилим и устанавливаем.
cd nginx-1.0.2
./configure --conf-path=/etc/nginx/nginx.conf --with-pcre=/tmp/pcre-8.30/ --with-zlib=/tmp/zlib-1.2.6/
make
make install
 

6) Необходимо создать сервис, который будет управлять процессом nginx
nano /etc/init.d/nginx
Добавляем код:
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse
# proxy and IMAP/POP3 proxy server# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# 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="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx "> && . /etc/sysconfig/nginx
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
retval=$?
echo
[ $retval -eq 0 "> && rm -f $lockfile
return $retval
}
restart() {
configtest_q || configtest || return 6
stop
start
}
reload() {
configtest_q || configtest || return 6
echo -n $"Reloading $prog: "
killproc $nginx -HUP
echo
}
configtest() {$nginx -t -c $NGINX_CONF_FILE}
configtest_q() {configtest >/dev/null 2>&1}
rh_status() {status $prog}
rh_status_q() {rh_status >/dev/null 2>&1}
# Upgrade the binary with no downtime.
upgrade() {
local pidfile="/var/run/${prog}.pid"
local oldbin_pidfile="${pidfile}.oldbin"
configtest_q || configtest || return 6
echo -n $"Staring new master $prog: "
killproc $nginx -USR2
retval=$?
echo
sleep 1
if [[ -f ${oldbin_pidfile} && -f ${pidfile} ">">; then
echo -n $"Graceful shutdown of old $prog: "
killproc -p ${oldbin_pidfile} -QUIT
retval=$?
echo
return 0
else
echo $"Something bad happened, manual intervention required, maybe restart?"
return 1
fi
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
force-reload|upgrade)
rh_status_q || exit 7
upgrade
;;
reload)
rh_status_q || exit 7
$1
;;
status|status_q)
rh_$1
;;
condrestart|try-restart)
rh_status_q || exit 7
restart
;;
*)
echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart}"
exit 2
esac
 

7) Делаем созданный файл исполняемым
chmod +x /etc/init.d/nginx
 

8) Добавляем сервис в автозагрузку
chkconfig --levels 235 nginx on
 

9) Конфигурация nginx
nano /etc/nginx/nginx.conf
user www;
worker_processes 4;
error_log /var/log/nginx_error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

pid /var/log/nginx.pid;
#worker_processes 4;

events {
worker_connections 4096;
}


http {
include 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;
#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log /var/log/nginx_host.access.log main;

location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass 184.22.104.84:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html$
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}

location / {
root /home/sites/test;
index index.html index.htm index.php;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
root html;
fastcgi_pass 184.22.104.84:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/sites/test$fastcgi_script_na$
include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configurati$
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;

# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;

# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_timeout 5m;

# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EX$
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}
 

10) Устанавливаем Mysql 5.5.20 и phpmyadmin
cd /tmp
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.20.tar.gz/from/http://mysql.mirrors.ovh.net/ftp.mysql.com/
tar -xf mysql-5.5.20.tar.gz
cd mysql-5.5.20
создаём заранее пользователя и группу для мускула:
groupadd mysql
useradd -r -g mysql mysql
Конфигурируем, компилируем, устанавливаем:
cmake .
make
make install
Задаём права:
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
Копируем конфигурационый файл в папку /etc
cp support-files/my-medium.cnf /etc/my.cnf
Устанавливаем сервис, назначаем права, добавляем в автозапуск и запускаем:
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --levels 235 mysqld on
service mysqld start
 

PhpMyAdmin
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
Проверяем что скачали пакет без ошибок:
rpm -K rpmforge-release-*.rpm
Устанавливаем пакет:
rpm -i rpmforge-release-*.rpm
yum install phpmyadmin
Устанавливаем доступ с определенных ip:
nano /etc/httpd/conf.d/phpmyadmin.conf
#
# Web application to manage MySQL
#

Order Deny,Allow
Deny from all
Allow from 127.0.0.1 192.168.0.0/24

Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin
Правим следующий файл:
nano /usr/share/phpmyadmin/config.inc.php
Меняем в нем
$cfg['Servers'">[$i">['auth_type'"> = ‘cookies‘;
на
$cfg['Servers'">[$i">['auth_type'"> = ‘http‘;
Необходимо выставить права на файл:
chmod 705 /usr/share/phpmyadmin/config.inc.php
Перезапускаем веб сервер:
# service nginx restart
Проверяем:
http://localhost/
Должна показаться страница с phpinfo эту же страницу вы должны увидеть введя внешний IP своего сервера в браузер любого компьютера.
Для того чтобы загрузить phpmyadmin необходимо ввести:
http://ip_adress_server/phpmyadmin
, где ip_adress_server - ip-адрес вашего сервера.
 

11) Что бы вы могли исполнять такие команды как pear pecl php cоздадим символические ссылки для программ из папки /usr/local/php/bin/ в папку /usr/bin/
cd /usr/bin
ln -s /usr/local/php/bin/pear pear
ln -s /usr/local/php/bin/peardev peardev
ln -s /usr/local/php/bin/pecl pecl
ln -s /usr/local/php/bin/phar phar
ln -s /usr/local/php/bin/phar.phar phar.phar
ln -s /usr/local/php/bin/php php
ln -s /usr/local/php/bin/php-config php-config
ln -s /usr/local/php/bin/phpize phpize
 

12) Устанавливаем eAccelerator 0.9.6.1
wget http://acelnmp.googlecode.com/files/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make
make install
Компилятор установит модуль в папку /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so
Создадим папку для кеша, и сделаем её доступной для записи:
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator
Перезапускаем php-fpm что бы eaccelerator создал кеш-папки
service php-fpm restart
 

13) Устанавливаем Memchached
В репозиториии лежит последняя версия 1.4.5 memcached, поэтому предлагаю не заморачиваться и ставить memcached из репозитория.
yum install memcached libmemcached libmemcached-devel
Теперь нужно установить расширение для php. последняя стабильная версия 2.2.6 stable.
wget http://pecl.php.net/get/memcache-2.2.6.tgz
tar -xf memcache-2.2.6.tgz
cd memcache-2.2.6
phpize
./configure
make
make install

Мы создали файл в /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so
Нам необходимо подключить модули PEAR, eAccelerator и Memcached к нашему PHP
Добавлять эти переменные можно в любое место конфига
# Рекомендуется для многих скриптов, где вместо short_open_tag = On
# Путь для инклуда PEAR приложений
include_path = ".:/usr/local/pear"
# Подключаем eAccelerator
extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
eaccelerator.shm_size="16"
accelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
# Подключаем расширение Memcache
extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so"
Перезапускаем php-fpm и проверяем установленные модули
service php-fpm restart
http://ip_adress_server/
, где ip_adress_server - ip-адрес сервера.



Опубликовано: 29.03.2014
Просмотров: 2972
Автор: Александр
Источник: https://support.unihost.com/

 
Версия для печати

Мой комментарий

Ваше имя*:
Email:
Комментарий*:
Зарегистрироваться автоматически: Вы будете зарегистрированы на сайте автоматически при добавлении комментария. Обязательно заполните поле Email для этого.
Сумма чисел 3 и 13*:            


LH1
61440 Мб на диске, RAM 4096 Мб, 9600 Мгц, неогр. трафик.
2800 руб.
Хостинг провайдер Limb
VZ-Start FR
10240 Мб на диске, RAM 2048 Мб, 2400 Мгц, неогр. трафик.
155 руб.
EuroHoster.org
Хостинг Безлимит! Бесплатный SSL!
999999 Мб на диске, неогр. трафик.
99 руб.
Хостинг провайдер Well-Web

Заявка на хостинг
Провайдеры сами пришлют
вам свои предложения ;)

Быстрый хостинг Fozzy

Проверка IP

Ваш IP ....... 54.147.239.111 ← Проверить
Страна ..... не определена

Проверка домена (+whois)













Выбрать все
Расширенный поиск (более 50 зон)

Traceroute

Начало маршрута



Акции провайдеров

Все акции хостинг провайдеров


Недорогой качественный хостинг