|
Ключевые слова: 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.
|
Обсуждение | [ Линейный режим | Показать все | RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |