О себе
self-development, машины, интернет и кот(tm) - основные интересы на сегодняшний день
Поиск
Последние записи
Ссылки
Октябрь 15th, 2007. comments are open Wordpress, Nginx, fastcgi php & все-все-все.

Итак, некий голос совести не позволил мне поднять свой блог на традиционно обкатанном решении, которым почти все пользуются: apache + mod_php5 + mod_rewrite, так что авантюрная жилка подсказала заняться сабжем.Итак, что мы имеем:

  • FreeBSD
  • /usr/ports/www/nginx (stable)
  • /usr/ports/lang/php5 (как fastcgi)

Думаю подробно останавливаться на этом нет смысла.

Вопрос 1: Как запустить и настроить php под fastcgi ?

Вариант 1: использовать spawn-fcgi из комплекта light-httpd. Лично мне не понравилось, лишняя примочка.

Вариант 2: использовать php-fpm патч. Хорошая штука, но про нее я расскажу в другом обзоре, т.к. более полезна она для несколько иных вещей.

Вариант 3: заставить php самостоятельно выполнять этот тяжкий труд. На просторах инета был встречен красиво причесанный скрипт для автостарта, который умеет массу полезных вещей:

  • хранить в rc.conf переменные, которые рассказывают php как жить и что делать (пользователь из под кого работать, ip, порт, список разрешенных переменных окружения)
  • и, соответственно, как полагается честному скрипту - стопить/стартить демона

Вопрос 2: Как настроить nginx

Весьма полезным будет прочитать документацию и архив рассылки.

nginx.conf

 
user  www www;
worker_processes  2;
events {
  worker_connections  1024;
  use    kqueue;
}
 
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" "$uri?$args"';
 
  access_log  /var/log/nginx-access.log  main;
 
  sendfile        on;
 
  keepalive_timeout  65;
 
  # не то чтобы я экономил на траффике, но все же текст к пользователю прийдет быстрее
  gzip  on;
  # т.к. хостов у меня крутится много - в одном конфиге держать неудобно
  include     vhost/*;
}

vhost/domain.com

 
server {
  listen       192.168.111.222:80;
  server_name  domain.com www.domain.com;    root   /.1/www/domain/public_html;
  index  index.html index.php;
  # хочу кешировать картинки и фильмы 30 дней
  # css и js кешировать тоже можно, но пока не хочу т.к. правлю тему.
  location ~* ^.[^&?]+\.(jpg|jpeg|gif|rar|zip|bmp|wmv|m4v|png)$ {
    expires 30d;
  }
  # Поддержка permalinks (ЧПУ)
  if (!-e $request_filename ) {
    rewrite  ^/.*   /index.php  break;
  }
 
  # фактически, не имеет смысла т.к. !-e секцией выше отрабатывает только
  # если файл/директория/симлинк не найден, т.е. 404
  error_page  404   /index.php;
 
  # отправим запрос бэкенду
  location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /.1/www/zlovred/public_html$fastcgi_script_name;
    include        fastcgi_params;
  }
 
  location ~ /\.ht {
    deny  all;
  }
}

Вопрос 3: ЧПУ (Permalinks) в Wordpress

Идем в Options » Permalinks и выбираем понравившийся стиль ссылок.

Ньюанс: wordpress может предложить URL вида:

http://www.domain.com/index.php/2007/10/15/sample-post/

Наличие index.php нам абсолютно неинтересно и, если все сделано правильно, мы можем выбрать кастомную настройку и удалить вручную index.php, оставив что-то вида:

/%year%/%monthnum%/%day%/%postname%/

3 Comments. Add your own

Ad Discendum, Non Ad Doce  |  Ноябрь 15th, 2007 at 6:38 пп

[…] оказалось, мой rc.script для PHP-FCGI кому то да пригодился кроме […]

zdudefx  |  Ноябрь 29th, 2007 at 5:03 дп

Привет!
Обменяемся ссылками?

admin  |  Ноябрь 29th, 2007 at 7:46 дп

дарова) ты в блогролле)

Leave a Comment





Trackback this post  |  Subscribe to the comments via RSS Feed