Настраиваем рабочее окружение для Backend разработки на PHP

в 14:19, , рубрики: IDE, memcache, mysql, nginx, php, php-fpm, phpmyadmin, phpstorm, ubuntu 13.04, Веб-разработка, хабрахабр, метки: , , , , , , , ,

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

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

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

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

Для начала установим NGINX. Добавим репозиторий проекта NGINX

nano /etc/apt/sources.list

и добавим туда строки и не забываем сохранять

deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise 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

aptitude 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.

Автор: amstr1k

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js