Документация по ОС FreeBSD Воскресенье, 28.04.2024, 00:09
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Apache

Настройка связки Nginx, PHP и Spawn-fcgi [2007]
И так, давайте приступим. (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.


Источник: http://www.lissyara.su/?id=1532
Категория: Apache | Добавил: oleg (29.01.2008) | Автор: RageLT
Просмотров: 1591 | Рейтинг: 5.0/1 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024