Среда web-разработки на Mac OS X Leopard (часть 2) Среда web-разработки на Mac OS X Leopard (часть 4 – последняя)
Окт 18

Сегодня, продолжая тему создания среды для web-разработки на Mac OS X Leopard, я расскажу о шагах, необходимых для того, чтобы собрать на вашем компьютере такие продукты, как nginx, memcached и xdebug.

Логотип nginx Логотип Memcached Логотип Xdebug


nginx

Что такое nginx, знает, пожалуй, каждый web-разработчик. Если же вы только начинаете осваивать азы web-строительства, то более подробную информацию об использовании nginx вы можете почитать на сайте разработчика этого продукта. Существует несколько разных способов использования этого продукта, но сегодня я остановлюсь лишь на том, как установить этот сервер в вашу систему и настроить для работы с установленным ранее PHP+FPM.

Для начала необходимо скачать исходные тексты nginx. Их можно получить на сайте сервера, скачав архив с необходимой вам версией (в тексте рассматриваются примеры с версией nginx-0.7.62)

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

./configure --help

После того, как вы определитесь с опциями, сконфигурируйте пакте для сборки. Я, как указывал в одном из предыдущих руководств, устанавливаю пакеты для web-разработки в директорию /usr/local, и конфигурировал nginx с такими опциями:

./configure --prefix=/usr/local/nginx-0.7.62 --with-pcre --with-http_flv_module

Теперь запускаем сборку:

make

и установку

sudo make install

Как и раньше, для последующего удобства, делаем ссылку на установленный сервер:

sudo ln -s /usr/local/nginx-0.7.62/ /usr/local/nginx

Ну а теперь запускаем сервер:

sudo /usr/local/nginx/sbin/nginx

Важно: по умолчанию nginx настроен на работу с 80-м портом, поэтому если у вас запущен встроенный в Leopard сервер Apache, nginx не запустится и выдаст ошибку. Поэтому предварительно убедитесь, что Apache выключен: это можно сделать запустив программу "Системные настройки" а затем, перейдя в раздел "Общий доступ", снять включение с сервиса "Общий веб-доступ".

Отключить Apache в Leopard

Если вы не получили никакого уведомления об ошибке, и встроенный Apache у вас выключен, то nginx, вероятнее всего, нормально запустился. Теперь в любом браузере наберите адрес http://localhost и на экране появится приветствие, сообщающее о том, что nginx был благополучно запущен.

nginx запущен

Если же вам требуется остановить сервер, то выполните в терминале команду

sudo /usr/local/nginx/sbin/nginx -s stop

Для того, чтобы научить nginx работать с установленным ранее PHP+FPM, придётся выполнить несколько дополнительных шагов:

  • создать в файловой директорию, в которой будет расположен ваш сайт
  • внести изменения в файл настроек nginx
  • запустить PHP+FPM
  • перезапустить nginx

Теперь по порядку.
Для примера я буду использовать директорию /usr/local/site, но вы можете указать другой путь. Главное, не забудьте отредактировать указанные мною примеры, чтобы они соответствовали вашим реальным данным.
Итак, создайте директорию для сайта, и положите туда какой-нибудь php-файл (например, index.php который выведет на экран phpinfo(); )
Отредактируйте файл настроек nginx (/usr/local/nginx/conf/nginx.conf) поместив в него следующее содержимое:

user www;
worker_processes  1;
 
pid        /var/run/nginx.pid;
 
events {
    worker_connections  1024;
    use kqueue;
}
 
http {
    include       mime.types;
    default_type  text/html;
 
    keepalive_timeout                 65;
    client_header_timeout       3m;
    client_body_timeout         3m;
    send_timeout                3m;
    client_header_buffer_size   1k;
    large_client_header_buffers 4 4k;
    output_buffers              4 128k;
    postpone_output             1460;
    sendfile                    on;
    tcp_nodelay                 on;
    tcp_nopush                  on;
    send_lowat                  12000;
    gzip                        on;
    gzip_min_length             1100;
    gzip_buffers                4 8k;
    gzip_types                  text/plain;
    proxy_redirect      off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 10M;
    client_body_buffer_size 512k;
    client_body_temp_path /tmp/client_body_temp;
    proxy_connect_timeout       180;
    proxy_send_timeout  180;
    proxy_read_timeout  180;
    proxy_send_lowat    12000;
    proxy_buffer_size   64k;
    proxy_buffers               4 128k;
    proxy_busy_buffers_size 256k;
    proxy_temp_file_write_size 256k;
    proxy_temp_path /tmp/proxy_temp;
 
     server {
          listen       80;
          server_name  localhost;
          index        index.php;
          root         /usr/local/site;
 
          location ~ \.php$ {
 
               fastcgi_pass  127.0.0.1:9000;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_NAME $fastcgi_script_name;
               fastcgi_param REQUEST_URI $request_uri;
               fastcgi_param DOCUMENT_URI $document_uri;
               fastcgi_param DOCUMENT_ROOT $document_root;
               fastcgi_param REMOTE_ADDR $remote_addr;
               fastcgi_param REMOTE_PORT $remote_port;
               fastcgi_param SERVER_ADDR $server_addr;
               fastcgi_param SERVER_PORT $server_port;
               fastcgi_param SERVER_NAME $server_name;
               fastcgi_param SCRIPT_FILENAME  /usr/local/site$fastcgi_script_name;
               fastcgi_param QUERY_STRING $query_string;
               fastcgi_param REQUEST_METHOD $request_method;
               fastcgi_param CONTENT_TYPE $content_type;
               fastcgi_param PATH_INFO $request_uri;
               fastcgi_param CONTENT_LENGTH $content_length;
          }
     }
}

Теперь, если у вас не запущен PHP, запустите его. Как это сделать, написано в этом руководстве. Осталось перезапустить nginx с новыми настройками

sudo /usr/local/nginx/sbin/nginx -s reload

По идее, если вы не меняли настройки FPM, PHP должен работать у вас на 9000-м порту, а nginx будет принимать все соединения на 80-м и перенаправлять их на PHP, так что попытавшись открыть адрес http://localhost вы получите не приветствие nginx, а результат работы вашего php-скрипта.


Memcached

Собственно, сборка Memcached довольно проста, но требует некоторой подготовки. В частности, для работы Memcached необходимо библиотека libevent, которую нужно установить при помощи уже знакомого вам по одному из предыдущих руководств MacPorts. Выполните в терминале команду

sudo port install libevent

Теперь необходимо скачать исходники (их можно взять на этой странице [http://danga.com:80/memcached/download.bml]) и распаковать их.
Далее всё, как обычно:

/configure --help
./configure --prefix=/usr/local/memcached-1.4.1 --with-libevent=/opt/local
make
sudo make install
sudo ln -s /usr/local/memcached-1.4.1/ /usr/local/memcached

Теперь запускаем:

sudo /usr/local/memcached/bin/memcached -d -m 2048 -u nobody

Чтобы остановить Memcached, выполните команду

sudo killall memcached

Но недостаточно только установить этот daemon, — необходимо так же научить установленный у вас PHP работать с ним. Это делается при помощи внешнего расширения для PHP, которое нужно собрать, а затем указать PHP на необходимость его использования. Эта библиотека называется memcache и её исходные коды доступны для скачивания на этой странице. Скачайте и распакуйте архив. Теперь, используя терминал, перейдите в директорию с исходными текстами и подготовьте их к сборке, выполнив команду

/usr/local/php/bin/phpize

Дальше конфигурация:

./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config

Важно подчеркнуть, что в опции --with-php-config обязательно нужно указать путь к утилите php-config вашего PHP, иначе библиотека будет сконфигурирована для PHP, установленного в Mac OS X Leopard по умолчанию.

После конфигурации выполните сборку и установку:

make && sudo make install

Теперь нужно указать вашему PHP на необходимость подключения нового расширения. Если вы устанавливали PHP используя это руководство, то файл php.ini расположен у вас в директории /usr/local/php/lib/

Отредактируйте его, дописав в конец файла всего одну строчку:

extension=memcache.so

Сохраните php.ini и перезапустите PHP. Теперь, чтобы убедиться, что у вас включена поддержка memcache, можете выполнить команду

/usr/local/php/bin/php -i | grep memcache


Установка Xdebug

Xdebug — это расширение для PHP, позволяющее более детально отслеживать и анализировать работу PHP. Подробнее почитать об этом расширении, если вы с ним ещё не сталкивались, можно на странице документации по адресу xdebug.org/docs/. Сборка этого расширения практически такая же, как и сборка расширения memcache, речь о котором шла немного выше в этой теме. Скачайте с этой страницы архив с исходниками и распакуйте его. Перейдите в директорию с исходными текстами и выполните там команду:

/usr/local/php/bin/phpize

Теперь нужно сконфигурировать расширение:

./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config

Как и в случае с memcache, очень важно указать правильный путь к php-config.
Теперь выполните сборку и установку расширения:

make && sudo make install

Осталось последнее действие: необходимо указать PHP использовать при работе Xdebug. Для этого откройте на редактирование php.ini и добавьте в конец файла вот такую строку

zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"

Теперь перезапустите PHP. Вот и всё, можете профилировать ваш код и искать в нём "узкие" места.

Заключение

Это последнее руководство в серии про среду web-разработки, в котором нужно что-то компилировать. В заключительном посте я лишь приведу список тех приложений, с которыми мне доводилось работать под Mac OS X, и которые себя с той или иной стороны хорошо зарекомендовали.
Комментарии к предыдущим сообщениям явно показывают, что без проблем пройти по всем, описанным мною шагам, удалось не всем. Это нормально, потому что сборка продукта из исходных текстов далеко не всегда проходит гладко от начала и до самого конца. И мне остаётся лишь надеяться, что у вас не возникнет непреодолимых препятствий на этом пути.

Если этот блог нравится Вам настолько, что Вы хотели бы перечислить его автору денег, просто сделайте это, нажав на кнопку Donate:

Спасибо в любом случае. :)

Связанные записи

метки: , , , , , , , , ,

оценка:
НеинтересноИнтересно - рейтинг: +6, голосов: 10

Комментарии к статье “Среда web-разработки на Mac OS X Leopard (часть 3)”

  1. KsenZ

    Все встало отлично, только вот попасть не могу на страницы, пишет “403 Forbiden”, думаю где то я, что то упустил, как найду причину, отпишу :)

  2. KsenZ

    нашел в чем было дело, я же говорил, что все из-за моей невнимательности :)

  3. SashaBorandi

    А у меня почемуто… сервер nginx не хочет выполнять PHP файлы… Всякие там HTML открывает а PHP не хочет… Даже простой файл с содержащим phpinfo(); не выводит.. только белый экран и все… в лога ни каких ошибок по этому поводу… В чем причина?

  4. SashaBorandi

    Вродебы, удалось передавать php файлы интерпретатору…. Но теперь при обращении к php файлам, получаю вот такую ошибку:
    Warning: Unknown: Filename cannot be empty in Unknown on line 0

    Fatal error: Unknown: Failed opening required ” (include_path=’.:/usr/local/php-5.3.0/lib/php’) in Unknown on line 0

    Что делать?

  5. SashaBorandi

    Все… наконец php начались обрабатываться… Оказывается нужно было в php.ini прописать include_path = “.:/usr/local/php/includes”… Но теперь другая проблема… почемуто php файл с phpinfo(); выводится не полностью… Такое ощущение будто php прерывается….

  6. SashaBorandi

    Теперь я все понял… При компиляции у меня быявлены ошибки… это иза патча… Эх.. придется работать на апаче…. жаль…

  7. doug

    elaine@cherokee.lalauries” rel=”nofollow”>.…

    спасибо за инфу….

  8. dennis

    brass@simplex.hemisphere” rel=”nofollow”>.…

    ñïñ….

Написать отзыв

Подписаться именем или OpenID