За год работы в сфере Web технологий, мне не раз приходилось настраивать своё рабочее окружение. Для новичков не так то просто найти хороший гайд по настройке рабочего окружения.

В этом топике я хочу собрать всё полезное, что возможно пригодится новичкам и хабраюзерам.

Всё это я буду поднимать на Ubuntu 13.04. Предполагается что вы уже скачали её с официального сайт, и установили.

Итак, начнем. Я зайду под root'ом. Если у вас нет такого желания, просто дописывайте во все команды sudo и вводите пароль от системы.

Для начала установим NGINX. Добавим репозиторий проекта NGINX
nano /etc/apt/sources.list

и добавим туда строки и не забываем сохранять
deb http://nginx.org/packages/ubuntu/ raring nginx
deb-src http://nginx.org/packages/ubuntu/ raring nginx

Скачиваем GPG ключ
wget http://nginx.org/keys/nginx_signing.key

Устанавливаем его
apt-key add nginx_signing.key

Обновляем список пакетов
apt-get update

И наконец устанавливаем NGINX
apt-get install nginx

Для проверки заходим в браузер, в адресной строке пишем localhost и если вы увидели страничку Welcome to nginx! значит вы на верном пути.

И так продолжаем. Устанавливаем PHP-FPM
apt-get install php5-cli php5-common php5-mysql php5-gd php5-fpm php5-cgi php5-fpm php-pear php5-mcrypt -y

Теперь нам нужно устранить уязвимости в PHP
nano /etc/php5/fpm/php.ini

Находим там строку
;cgi.fix_pathinfo = 1

И приводим её к виду
cgi.fix_pathinfo = 0

Делаем рестарт PHP-FPM
service php5-fpm restart

Изменяем настройки виртуального хоста
nano /etc/nginx/conf.d/default.conf

Удаляем все старые настройки и вставляем это
server {
        listen   80;     

        root /usr/share/nginx/html;
        index index.php index.html index.htm;

        server_name localhost;

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                
        }

}

Далее нам нужно проверить установился ли php-fpm. Для этого делаем следующее.
nano /usr/share/nginx/html/index.php

И пишем в него
<?php
        phpinfo();
?>

Удаляем index.html
rm /usr/share/nginx/html/index.html

В браузере открываем localhost и если вы видите страничку PHP Version значит вы на верном пути

Далее устанавливаем MySQL, вам предложат установить пароль на пользователя root. Установите и запомните его.
apt-get install mysql-server mysql-client mysql-common

Установим memcache. И после его установки перезапустим PHP(service php5-fpm restart)
apt-get install memcached php5-memcached

Теперь на страничке phpinfo нужно найти пункт memcache. Если он есть, значит вы всё еще с нами.

Управление базой из командной строки не всегда удобно. Поэтому мы установим phpMyAdmin
apt-get install phpmyadmin

У вас спросят кокой сервер вы ходите использовать, оставляем это поле пустым. Далее вам будет предложено настроить базу для работы сервиса. Сначала вводим пароль для root пользовате��я, далее для базы данных phpMyAdmin.

Открываем настройку виртуального хоста и вставляем в секцию server{ } следущее
        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

В конечном итоге у вас должен получится конфиг вида
server {
        listen   80;     

        root /usr/share/nginx/html;
        index index.php index.html index.htm;

        server_name localhost;

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

	location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php5-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }
}


Устанавливаем xdebug для отладки наших приложений.
apt-get install php5-xdebug

После чего перезапускаем php и ищем на localhost пункт xdebug

Для разработки я использую PHP IDE PhpStorm. Скачать её можно на официальном сайте www.jetbrains.com/phpstorm. Скачиваем и распаковываем в удобную для вас папку. Но для начала нам нужно установить Oracle Java 7.
Добавляем нужный репозиторий и обновляемся
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update

Затем устанавливаем JDK (Java Development Kit)
sudo apt-get install oracle-jdk7-installer

После установки заходим в папку PhpStorm/bin и запускаем phpstorm.sh, после чего настраиваем IDE.
Теперь настраиваем IDE для работы с xdebug.
Открываем настройки идём в PHP, там выбираем:
PHP Languege level: 5.4
Добавляем интерпритатор: Name php5.4, PHP Home /usr/bin/, Debugger: Xdebug
и в Include path добавляем то что в ковычках: "/usr/share/php", ".", "/usr/share/pear"
Далее PHP->Servers нажимаем на + и добавляем сервер.
Name: localhost
Host: localhost
Port: 80
Debagger: Xdebug
И жмём OK.
Далее переходим в PHP->Debug. Находим тут секцию Xdebug и в ней Debug port пишем 9001
Теперь в PHP->Debug->DBGp Proxy и проверяем чтобы порт был 9001 и нажимаем ОК.
Выходи в главное окно и жмём там стрелку вниз и жмём Edit Configurations нажимаем на + и выбираем там PHP Web Aplication. Заполняем настройки:
Name: localhost
Server: выбираем localhost
Browser: Chrome скачанный с google.ru

Теперь нужно настроить php.ini для работы с xdebug
nano /etc/php5/fpm/php.ini

И добавляем в конец файла
zend.ze1_compatibility_mode = off

[xdebug]

xdebug.remote_enable = On
xdebug.max_nesting_level = 500
xdebug.remote_port = 9001


Сохраняем. Перезапускаем nginx, php.

Настраиваем Chrome. Настройки->Внешний вид->Всегда показывать панель закладок. У вас должна появится панель закладок. Идём на сайт www.jetbrains.com/phpstorm/marklets и жмём кнопку Generate в разделе Xdebug, Перетаскиваем на панель Start debugger и Stop debugger.

Заходим в PhpStorm, открываем на индексный файл с phpinfo ставим точку останова на строке phpinfo(); и жмем трубку на панеле. После нажатия, верх трубки должен загорется зеленым. Открываем Chrome, заходим на localhost, жмем закладку «Start debugger», обновляем страницу и на мониторе видим PhpStorm с открытой панелью дебага.

На этом мой «небольшой» гайд подошел к концу. Надеюсь он кому то пригодится, кроме как мне.
Всем спасибо, с уважением amstr1k.