• 28976
  • 120
  • 10
Нравится блог?
Подписывайтесь!

Танцы с бубнами: устанавливаем Nginx + fpm-php на CentOS

Вся история начинает с того, что VPS перестала держать сайт /*трекер ака кревед*/ не сам VPS, а всеми любимый Apache. Настроили связку Apache+Nginx, но все равно apache загибался, и было решено избавиться от Apache в пользу Nginx. И так по порядку. /*В некоторых местах можно сделать не много проще чем я описал, но я делал сам так… а как говориться опыт приходит с долгами*/

Устанавливаем CentOS на VPS и избавляемся оттого, что не нужно, и будем ставить заново:
# yum remove apache или yum remove httpd
# yum remove php
# yum remove phpmyadmin
# yum remove mysql-server
# yum remove php-mysql

Устанавливаем репозиторий centos.alt.ru, для i386 архитектуры:
# rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
# rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm
для x86_64 архитектуры:
# rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
# rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

И так понеслась, устанавливаем php, fpm-php и модули которые нам нужны будут
# yum install php php-devel php-fpm php-mssql php-mcrypt php-mysql php-gd php-mbstring php-curl php- xml

Устанавливаем MySQL
# yum install mysql

Устанавливаем Ngnix
# yum install nginx

И еще установим Webmin (просто МНЕ проще делать не которые вещи через webmin чем через SHH)
# cd /tmp
# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.500-1.noarch.rpm
# rpm -U webmin-1.500-1.noarch.rpm

Ответом будет:
"Thats it! you now can log into webmin from http://www.yourdomin.com:10000 or from your ip **.***.**.*:10000"

Теперь займемся конфигурацией nginx, редактируем фаил /ect/nginx/nginx.conf

У меня он выглядит приблизительно так

user nginx;
worker_processes 10;
worker_rlimit_nofile 100000;

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

pid    /var/run/nginx.pid;

events {
  worker_connections 1024;
  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"';

  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/*.config;
}

Это стандартная конфигурация, кому интересно могут найти статьи как конфигурировать nginx и заточить все под себя. И так дальше, nginx сканирует папку /etc/nginx/conf.d/ где лежат конфиги для наших будущих сайтов, вот пример одного из моего сайта

server {
  limit_conn  myzone 10;
  listen    88.204.160.80:80;
  server_name www.mysite.kz mysite.kz;

    charset utf8;

  error_page 404     /error.html;

  location = /error.html {
    root  /home/mysite/html/err/;
  }

  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  /home/mysite/html/err/50x.html;
  }
    
  root /home/mysite/html;
    
  location ~ \.php$ {
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html$fastcgi_script_name;
    include  fastcgi_params;
  }
    
  location /capcha.gif {
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html/system/capcha2/antibot.php;
    include  fastcgi_params;
  }
    
  location ~* \.(jpg|jpeg|gif|png|bmp|ico|swf|flv|css|txt|xml|rss|js)$ {
    expires max;
  }

  location / {
    try_files $uri $uri/ @fallback;
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html/index.php;
    include  fastcgi_params;
    }
  
  location @fallback {
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html/index.php;
    include  fastcgi_params;
  }
}

Разберем все по порядку

Здесь указываем IP и домен для которого будет конфиг и который будет обрабатывать nginx.
limit_conn myzone 10;
listen 88.204.160.80:80;
server_name www.mysite.kz mysite.kz;
charset utf8;

Устанавливаем страницы для ошибок сервера

  error_page 404     /error.html;

  location = /error.html {
    root  /home/mysite/html/err/;
  }

  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  /home/mysite/html/err/50x.html;
  }

Если идет обращение на прямую к php скрипту то обрабатываем его при помощи fpm-php

location ~ \.php$ {
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html$fastcgi_script_name;
    include  fastcgi_params;
  }

Выводим капчу capcha.gif которая генериться скриптом /system/capcha2/antibot.php

location /capcha.gif {
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html/system/capcha2/antibot.php;
    include  fastcgi_params;
  }

Всю статику отдаем nginx

location ~* \.(jpg|jpeg|gif|png|bmp|ico|swf|flv|css|txt|xml|rss|js)$ {
    expires max;
  }

В своих проектах я обрабатываю url вот таким методом

$get_query = explode("/", preg_replace("/^\/(.*)\/?$/U", "\\1", $_SERVER['REQUEST_URI']));

В apache RewriteEngine используется такое правило

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php

Rewrite на Nginx будет выглядит так

  location / {
    try_files $uri $uri/ @fallback;
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html/index.php;
    include  fastcgi_params;
    }
  
  location @fallback {
    root /home/mysite/html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/mysite/html/index.php;
    include  fastcgi_params;
  }

Теперь займемся конфигурацией fpm-php, он храниться в файле /etc/php-fpm.conf, по стандартным конфигам можно уже работать без проблем, если кому интересно смогут без проблем подправить под себя.

Вроде ничего не забыл. Запускаем php-fpm и nginx:
service php-fpm start
service nginx start

Теперь открываем в браузере mysite.kz и радуемся.

P.S. Может где-то опечатался, как нету машины для тестирования и писал по памяти, а это уже было давно и не правда ^^

16 февраля 2010, 12:48
4275

Загрузка...
Loading...

Комментарии

smerch
0
0
поздравляю ты где-то в самом начале пути казторки
DIAsko
0
0
Все с чего-то начинают, а благими намерениями дорога в ад выстлана, стоит один раз заняться всем этим делом, а потом ух ДЕРЖИСЬ ^^
agz
0
0
blog.a2o.si Статья интересная. По тестам, если разгрузить Апач от статики и отдать ее nginx - php-fpm не нужен, ибо апач с nginx работают шустрей при больших загрузках. А если еще php-5.3.x использовать...
Еще кто-то писал что мудуль php для апача надо собирать как можно более статическим.
Вроде как это на производительность сильно влияет. Думаю так и есть под Linux, но не на FreeBSD :)

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Как казахстанцы могут получить кусок международного рынка аутсорса?

Как казахстанцы могут получить кусок международного рынка аутсорса?

Сокурсник Илона Маска инвестировал в образовательные проекты, и теперь хочет создать в Казахстане рабочие места на глобальном рынке аутсорса.
Zhumanova
18 мая 2017 / 13:38
  • 52399
  • 23
Поддержим пенсией жиреющие банки! На что казахстанцам разрешат досрочно тратить свои накопления в ЕНПФ

Поддержим пенсией жиреющие банки! На что казахстанцам разрешат досрочно тратить свои накопления в ЕНПФ

Со стороны ЕНПФ в очередной раз прозвучало крайне неоднозначное заявление, от которого, на наш взгляд, лучше было бы воздержаться.
openqazaqstan
23 мая 2017 / 11:08
  • 8610
  • 29
Узаконенное варварство в стране, принимающей «EPXO». Еще далеко нам до «топ-30 развитых стран»

Узаконенное варварство в стране, принимающей «EPXO». Еще далеко нам до «топ-30 развитых стран»

В продвинутых государствах едва ли поймут, почему в столь развитом, успешном и преуспевающем Казахстане от имени и по заданию властей творятся такие зверства над животными.
openqazaqstan
вчера / 12:12
  • 6746
  • 79
Что бы ни сделал пешеход – все равно водитель сядет

Что бы ни сделал пешеход – все равно водитель сядет

Вопрос о равной ответственности водителя и пешехода при наезде на последних, только-только начинают обдумывать в высоких кабинетах. Но, пока государственные головы думают, водители продолжают...
Mirogloff
22 мая 2017 / 23:29
  • 4391
  • 32
Алматинские проститутки превращаются в шпионок

Алматинские проститутки превращаются в шпионок

Попасть в притоны на алматинском проспекте Сейфуллина, которых, как бы ни старались полицейские, меньше не становится, теперь можно, только зная явки и пароли.
Mirogloff
19 мая 2017 / 13:25
  • 4132
  • 38
В Алматы доставили чудотворную икону «Умягчение злых сердец»

В Алматы доставили чудотворную икону «Умягчение злых сердец»

Икона "Умягчение злых сердец" несет особые - сакральные, духовные смыслы. Ее намоленность ощущается даже за те секунды, пока прикасаешься губами к образу.
ValentinaVladimirska
20 мая 2017 / 0:09
  • 3104
  • 0
Да-да, я знаю, пора выходить замуж. Есть ли у меня еще время и, пожалуйста, уточните сколько?

Да-да, я знаю, пора выходить замуж. Есть ли у меня еще время и, пожалуйста, уточните сколько?

Итак давайте сразу начистоту. Мне 29. Не замужем, никогда не была, детей нет. В душе я совсем не чувствую этот возраст. Каждый раз когда задумываюсь об этом больше чем на 3 минуты, меня накрывает...
user2017
23 мая 2017 / 10:57
Выйду замуж по расчету. Брак обесценился, пора вновь возвращать ему ценность

Выйду замуж по расчету. Брак обесценился, пора вновь возвращать ему ценность

После череды неудачных романов, статусов "все сложно", ножей в спину, идея "выйти замуж по расчету" посещает все чаще. И мне не стыдно про это говорить.
energo_ulzhan
22 мая 2017 / 17:39
  • 2470
  • 53
Пока полицейские будут прощать, им будут бить и по чести, и по лицу

Пока полицейские будут прощать, им будут бить и по чести, и по лицу

Судья Алмалинского районного суда Куаныш Арипов ломает стереотипы отношения граждан к представителям Фемиды. Напавшему на полицейского экс-сотруднику алматинского акимата он назначил наказание выше...
Mirogloff
вчера / 16:41
  • 2095
  • 7