<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Юникс и другие &#187; Для начинающих</title>
	<atom:link href="http://boombick.org/blog/posts/category/%d0%b4%d0%bb%d1%8f-%d0%bd%d0%b0%d1%87%d0%b8%d0%bd%d0%b0%d1%8e%d1%89%d0%b8%d1%85/feed" rel="self" type="application/rss+xml" />
	<link>http://boombick.org/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 29 Nov 2011 22:14:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Установка nginx, php5 CGI и MySQL</title>
		<link>http://boombick.org/blog/posts/79</link>
		<comments>http://boombick.org/blog/posts/79#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:40:19 +0000</pubDate>
		<dc:creator>boombick</dc:creator>
				<category><![CDATA[*NIX]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[web-servers]]></category>
		<category><![CDATA[Для начинающих]]></category>

		<guid isPermaLink="false">http://boombick.org/blog/posts/79</guid>
		<description><![CDATA[Nginx (произносится как &#8220;энджин икс&#8221;) &#8211; это легкий высокопроизводительный веб-сервер с открытым исходным кодом. Он известен своей стабильностью, большим набором функций, сравнительной простотой конфигурации, а также весьма низкой требовательностью к ресурсам. В этой статье я опишу процесс установки nginx, PHP5 в CGI-режиме и MySQL на Debian Lenny. В нашем примере установка будет производится на сервер [...]]]></description>
			<content:encoded><![CDATA[<p>Nginx (произносится как &#8220;энджин икс&#8221;) &#8211; это легкий высокопроизводительный веб-сервер с открытым исходным кодом. Он известен своей стабильностью, большим набором функций, сравнительной простотой конфигурации, а также весьма низкой требовательностью к ресурсам. В этой статье я опишу процесс установки nginx, PHP5 в CGI-режиме и MySQL на Debian Lenny.<br />
<span id="more-79"></span><br />
В нашем примере установка будет производится на сервер с доменным именем <code>server1.example.com</code> и IP-адресом <code>192.168.1.100</code></p>
<p><strong>Установка MySQL 5.0</strong></p>
<blockquote><p>aptitude install mysql-server mysql-client</p></blockquote>
<p>В процессе установки вас попросят ввести пароль для пользователя root. Этот пользователь не имеет ничего общего с системным пользователем root. Этот пароль будет использован для пользователя, обладающего суперпривелегиями для самой MySQL:</p>
<blockquote>
<pre>
New password for the MySQL "root" user: &lt;-- yourrootsqlpassword
Repeat password for the MySQL "root" user: &lt;-- yourrootsqlpassword</pre>
</blockquote>
<p><strong>Установка Nginx</strong><br />
Nginx есть в репозитории Debian, что существенно упрощает нашу задачу :)<br />
Установим и запустим его:</p>
<blockquote><p>aptitude install nginx<br />
/etc/init.d/nginx start</p></blockquote>
<p>Наберите в браузере IP-адрес или хостнейм сервера (например <code>http://192.168.0.100</code>) и вы увидите стартовую страницу nginx<br />
<a href="http://boombick.org/blog/wp-content/uploads/2009/08/1.png" title="1.png"><img src="http://boombick.org/blog/wp-content/uploads/2009/08/1.thumbnail.png" alt="1.png" /></a></p>
<p><strong>Установка PHP5</strong><br />
Для &#8220;общения&#8221; между nginx и PHP мы будем использовать FastCGI. К счастью, в репозиториях Debian есть пакет, обеспечиващий поддержку FCGI в PHP. Установим PHP</p>
<blockquote><p>aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl</p></blockquote>
<p>Отредактируйте файл <code>/etc/php5/cgi/php.ini</code> добавив в его конец следующую строку:</p>
<blockquote>
<pre>
cgi.fix_pathinfo = 1</pre>
</blockquote>
<p>В Debian нет самостоятельного приложения для FastCGI, поэтому мы воспользуемся <code>spawn-fcgi</code>, которая входит в состав lighttpd:</p>
<blockquote><p>aptitude install lighttpd</p></blockquote>
<p>И после установки получим сразу же получим ошибку:</p>
<blockquote>
<pre>Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can't bind to port: 80 Address already in use
 failed!</pre>
</blockquote>
<p>Логично, 80-й порт у нас занят nginx-ом. Поэтому сделаем так, чтобы Лайти не запускался при загрузке системы:</p>
<blockquote><p>update-rc.d -f lighttpd remove</p></blockquote>
<p>Мы установили Лайти только для того, чтобы воспользовать крайне полезной для наших целей программой, идущей с ним в комплекте: <code>/usr/bin/spawn-fcgi</code>, именно ее мы будем использовать для запуска процессов FastCGI. Для краткого ознакомления с ее возможностями выполните команду</p>
<blockquote><p>spawn-fcgi &#8211;help</p></blockquote>
<p>Для запуска PHP FastCGI-демона на 9000 порту на сервере <code>localhost</code> от пользователя <code>www-data</code> выполните</p>
<blockquote>
<pre>
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
</pre>
</blockquote>
<p>И чтобы каждый раз не приходилось вводить это вручную, команду можно прописать в <code>/etc/rc.local</code></p>
<p><strong>Настройка Nginx</strong><br />
Конфигурационный файл nginx расположен здесь: <code>/etc/nginx/nginx.conf</code>. Для начала (необязательно) увеличим количество рабочих процессов и поменяем параметр <code>keepalive_timeout</code>:</p>
<blockquote>
<pre>[...]
worker_processes  5;
[...]
    keepalive_timeout   2;
[...]</pre>
</blockquote>
<p>Настройки виртуальных хостов расположены в секции <code>server {}</code>, хост по умолчанию описан в <code>/etc/nginx/sites-available/default</code>, модифицируйте его следующим образом:</p>
<blockquote>
<pre>
[...]
server {
        listen   80;
        server_name  _;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }

        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
                #proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny  all;
        }
}
[...]</pre>
</blockquote>
<p><code>server_name _;</code> &#8211; имя хоста &#8220;по умолчанию&#8221; (конечно же, никто не мешает явно указать имя хоста, например <code>example.com</code>)<br />
В выражении <code>location /</code> мы указываем индексный файл (<code>index.php</code>) и document root (<code>/var/www/nginx-default</code>)<br />
Важная часть для PHP &#8211; это <code>location ~ \.php$ {}</code>, раскомментируйте ее. Не забудьте проверить, что вы изменили строку <code>fastcgi_param</code> на <code>fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name</code> (замените <code>/var/www/nginx-default</code> на ваш реальный путь к document root), иначе интерпретатор PHP может не найти запрашиваемый вами через браузер скрипт.<br />
Удостоверьтесь, что между <code>include</code> и <code>fastcgi_params</code> есть пробел, в оригинальном файле они записаны как одно слово &#8211; это ошибка.<br />
Перезапустите <code>nginx</code></p>
<blockquote><p>/etc/init.d/nginx restart</p></blockquote>
<p>Создайте тестовый файл PHP со следующим содержанием</p>
<blockquote>
<pre>
&lt;?php
phpinfo();
?&gt;</pre>
</blockquote>
<p>Сохраните в вашей document root и откройте его в браузере (<code>http://192.168.0.100/info.php</code>)<br />
<a href="http://boombick.org/blog/wp-content/uploads/2009/08/2.png" title="2.png"><img src="http://boombick.org/blog/wp-content/uploads/2009/08/2.thumbnail.png" alt="2.png" /></a><br />
Обратите внимание на строку ServerAPI</p>
]]></content:encoded>
			<wfw:commentRss>http://boombick.org/blog/posts/79/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	<img style='margin:0;padding:0;border:0;' width='1px' height='1px' src="http://boombick.org/blog/wp-content/plugins/mystat/mystat.php?act=time_load&id=0&rnd=1395948760" /></channel>
</rss>

