The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка связки Nginx, PHP и Spawn-fcgi (nginx cgi fastcgi php freebsd)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: nginx, cgi, fastcgi, php, freebsd,  (найти похожие документы)
From: RageLT Date: Mon, 26 Jan 2008 18:21:07 +0000 (UTC) Subject: Настройка связки Nginx, PHP и Spawn-fcgi Оригинал: http://www.lissyara.su/?id=1532 Сейчас многие отказываются от apache в пользу nginx. Который, на мой взгляд, подкупает своей в первую очередь производительностью, возможностью быстрого и легкого масштабированию бекэндов, так же расширенными возможностями конфигурации сервиса. Каждый может максимально точно подогнать его под себя. И так, давайте приступим. (FreeBSD 6.2-RELEASE) Скачиваем и разжимаем nginx (0.6.14) wget http://www.sysoev.ru/nginx/nginx-LAST.tar.gz tar -zxf nginx-LAST.tar.gz ln -s nginx-LAST nginx либо воспользуемся портами: cd /usr/ports/www/nginx-devel в конфигурации выбираем следующие пункты: make config [X] HTTP_MODULE [X] HTTP_PERL_MODULE [X] HTTP_REWRITE_MODULE [X] HTTP_STATUS_MODULE make install clean Если nginx устанавливался из портов, установку PCRE и конфигурацию nginx пропускаем и переходим к php Устанавливаем Perl Compatible Regular Expressions (на данный момент доступна версия 7.4) wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-LAST.tar.gz tar -zxf pcre-LAST.tar.gz ln -s pcre-LAST pcre Если nginx не из портов, то проделываем следующие. Удалим не нужные нам модули для реализации простого веб-сервера с поддержкой php. cd nginx ./configure --prefix=/usr/local/nginx \ --with-http_stub_status_module \ --without-http_empty_gif_module \ --without-select_module \ --without-poll_module \ --without-http_userid_module \ --without-http_auth_basic_module \ --without-http_autoindex_module \ --without-http_map_module \ --without-http_referer_module \ --without-http_proxy_module \ --with-pcre=../pcre make && make install Далее очередь PHP (5.2.4) wget http://www.php.net/get/php-LAST.tar.gz/from/uk.php.net/mirror tar -zxf php-LAST.tar.gz ln -s php-LAST php сd php ./configure \ --enable-fastcgi \ --enable-force-cgi-redirect \ --enable-discard-path make && make intsall либо воспользуемся портами: cd /usr/ports/lang/php5 в конфигурации выбираем нужные вам опции и обязательно: make config [X] CGI [X] REDIRECT [X] FASTCGI make install clean Для запуска php я использую spawn-fcgi от lighttpd, на данный момент доступна 1.4.18. Так что пройдём к следующему шагу. cd .. wget http://www.lighttpd.net/download/lighttpd-LAST.tar.gz tar -zxf lighttpd-LAST.tar.gz cd lighttpd-LAST ./configure make make install нам не требуется, так как нам потребуются только два файла из данного проекта. cp src/spawn-fcgi /usr/local/bin/spawn-fcgi cp doc/spawn-php.sh /usr/local/etc/rc.d/ либо воспользуемся портами: cd /usr/ports/www/lighttpd Выполняем только make В конфигурационном меню убираем все опции. Далее делаем следующие cp src/spawn-fcgi /usr/local/bin/spawn-fcgi cp doc/spawn-php.sh /usr/local/etc/rc.d/ cd /usr/ports/www/lighttpd слегка подправим /usr/local/etc/rc.d/spawn-php.sh #!/usr/local/bin/bash ## ABSOLUTE path to the spawn-fcgi binary SPAWNFCGI="/usr/local/bin/spawn-fcgi" ## ABSOLUTE path to the PHP binary FCGIPROGRAM="/usr/local/bin/php-cgi" Если nginx инсталлировали не из портов, создаём запускной файл для nginx touch /usr/local/etc/rc.d/nginx.sh следующего содержания: #!/bin/sh nginx_enable=${nginx_enable-"NO"} nginx_flags=${nginx_flags-""} nginx_pidfile=${nginx_pidfile-"/usr/local/nginx/logs/nginx.pid"} . /etc/rc.subr name="nginx" rcvar=`set_rcvar` command="/usr/local/nginx/sbin/nginx" load_rc_config $name pidfile="${nginx_pidfile}" extra_commands="configtest reload" configtest_cmd="configtest_cmd" configtest_cmd() { echo "Configuration syntax test for ${name}." if ${command} ${nginx_flags} -t; then : else err 8 "FATAL: bad config for ${name}" fi } start_cmd="echo \"Starting ${name}.\"; /usr/bin/limits -U www ${command} ${nginx_flags}" run_rc_command "$1" не забываем прописать в /etc/rc.conf nginx_enable="YES" Конфигурационный файл для nginx /usr/local/nginx/conf/nginx.conf user nobody; worker_processes 1; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; server_names_hash_max_size 2048; server_names_hash_bucket_size 128; server { listen 80; server_name yoursite.com; charset utf8; location / { root /path/yoursite.com; index index.html index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:1026; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /path/yoursite.com$fastcgi_script_name; include fastcgi_params; } } } Вот собственно и всё. Пробуем стартануть. /usr/local/etc/rc.d/spawn-php.sh /usr/local/etc/rc.d/nginx.sh П.С. В этой статье описывается конфигурация с учётом того, что все приложения будут установлены на одном сервере. Если кому-то интересно, то могу написать продолжение в котором разберём конфигурацию с учетом того, что php будет стоять на других серверах как backend, а мы будем балансировать нагрузку на них с помощью nginx.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Constantine A. Yarovoy (?), 23:03, 31/01/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Буду рад почитать, сравнить с тем как сделано у нас, возможно родятся какие-то интересные предложения или улучшения. Еще бы рассмотреть в такой статье memcached!
     
  • 1.2, mephius (??), 15:50, 05/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А если вместо spawn-fcgi использовать php-fpm? (http://php-fpm.anight.org/) Просто у меня что-то больно нестабильно работало со spawn-fcgi от Lighthttpd...
     
  • 1.3, DS (??), 00:23, 26/04/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лучше использовать такой скрипт запуска Spawn:

    #!/bin/sh
    # Define these fcgiphp_* variables in one of these files:
    #       /etc/rc.conf
    #       /etc/rc.conf.local
    #
    # DO NOT CHANGE THESE DEFAULT VALUES HERE
    #
    fcgiphp_enable=${fcgiphp_enable-"NO"}
    fcgiphp_flags=${fcgiphp_flags-"-s /tmp/php-fcgi.sock -u www -g www"}

    . /etc/rc.subr

    name="fcgiphp"
    rcvar='set_rcvar'
    command="/usr/local/bin/spawn-fcgi"
    fcgi_server="/usr/local/bin/php-cgi"
    fcgi_server_short="php-cgi"

    load_rc_config $name

    start_cmd="echo \"Starting ${name}.\"; ${command} -f ${fcgi_server} ${fcgiphp_flags}"
    stop_cmd="echo \"Stopping ${name}.\"; while [ 1 ]; do killall ${fcgi_server_short} || break; done"

    run_rc_command "$1"


    А в конфиге nginx'a сделать так:

    location ~ \.php$ {
       fastcgi_pass   unix:/tmp/php-fcgi.sock;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME  /usr/local/www/nginx$fastcgi_script_name;
       include        fastcgi_params;
    }

     
  • 1.4, IVA (?), 01:02, 15/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на выполнение команды  /usr/local/etc/rc.d/spawn-php.sh фришка постоянно отвечает command not found.. помогите разобраться.. делаю все точь в точь по мануалу
     
  • 1.5, dirwar (?), 18:47, 18/09/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Да у меня такая же проблема , хотя тоже делаю всё по мануалу !!

    /usr/local/etc/rc.d/spawn-php.sh command not found

    Помогите пожалуйста !!

     
  • 1.6, Firefox (??), 01:07, 27/09/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >   слегка подправим /usr/local/etc/rc.d/spawn-php.sh
    >  
    >           #!/usr/local/bin/bash

    Возможно проблема в этом заголовке, то ли вы его не прописали, то ли прописали да не правильно. Попробуйте поставить
       #!/bin/bash

     
  • 1.7, Firefox (??), 01:52, 27/09/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    точно в файле /usr/local/etc/rc.d/spawn-php.sh изменить с
    #!/bin/bash
    на
    #!/usr/local/bin/bash
    как написал аффтар)
     
  • 1.8, dirwar (?), 05:19, 20/10/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    что в лоб что полбу , один фиг command not found , уже все перелопатил ! :(((
     
  • 1.9, z1 (??), 13:36, 04/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >command not found

    надо простаканить bash :)

     
  • 1.10, david (??), 22:53, 22/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    привет у меня проблема с nginx,nginx скачивает php файлы у меня сервер под cent ... большой текст свёрнут, показать
     
  • 1.11, david (??), 22:54, 22/11/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    привет у меня проблема с nginx,nginx скачивает php файлы у меня сервер под cent ... большой текст свёрнут, показать
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру