После обновления OSx Yosemite, необходимо настроить рабочую систему. Мы установим и настроим пакеты php-fpm, nginx, mongo, nodejs. Для начала установим Xcode из App Store обновим консольные команды $ xcode-select --install
и уберем apache из автозагрузки $ sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
. Так как у Apple не появилось своего менеджера пакетов будем использовать проверенный brew.
nodejs/bower
Можно установить воспользовавшись инструкцией на официальной документации nodejs, но тогда нужно учитывать права доступа при установке глобальных пакетов. Также в проектах мы используем bower сразу установим его глобально.
$ brew install node $ npm install -g bower
mongodb
Ничего нового воспользуемся менеджером пакетов и добавим в автозапуск.
$ brew install mongodb $ mkdir -p ~/Library/LaunchAgents $ ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents
Nginx
Установка $ brew install nginx.
Добавим в автозагрузку $ sudo cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
нам необходимо доавить его к системным так как для запуска на 80 порту необходимы права root.
Создадим необходимые папки:
$ mkdir /usr/local/etc/nginx/sites $ mkdir /usr/local/etc/nginx/templates
Для проектов на Symfony2 будем использовать шаблон $ vim /usr/local/etc/nginx/templates/symfony.conf
listen 80; # strip app.php/ prefix if it is present rewrite ^/app\.php/?(.*)$ /$1 permanent; location / { index app_dev.php; try_files $uri @rewriteapp; } location @rewriteapp { rewrite ^(.*)$ /app_dev.php/$1 last; } # pass the PHP scripts to FastCGI server from upstream phpfcgi location ~ ^/(app|app_dev|config)\.php(/|$) { fastcgi_pass phpfcgi; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS off; }
Настроим базовый проект на Symfony2 $ vim /usr/local/etc/nginx/sites/symfony.conf
, установим мы его позже.
server { server_name symfony.local; error_log /usr/local/var/log/nginx/symfony.error.log; access_log /usr/local/var/log/nginx/symfony.access.log; root /Users/andrey/Sites/symfony/web; include templates/symfony.conf; }
Настроим nginx $ vim /usr/local/etc/nginx/nginx.conf
изменим пользователя и добавим настройки для php-fpm
user _www; http { upstream phpfcgi { # server 127.0.0.1:9000; server unix:/var/run/php5-fpm.sock; #for PHP-FPM running on UNIX socket } include sites/*.conf; }
Для настройки других проектов Symfony2 необходимо
$ cp /usr/local/etc/nginx/sites/symfony.conf /usr/local/etc/nginx/sites/blog.conf $ vim /usr/local/etc/nginx/sites/blog.conf $ sudo nginx -s reload
php
Многое можно подчеркнуть из предыдущей статьи, но некоторые вещи мы будем делать по другому. Поставим необходимые зависимости.
$ brew install wget freetype libjpeg autoconf
добавим пакет icu4c
$ wget http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz $ tar -xzf icu4c-54_1-src.tgz $ cd icu/source/ $ ./configure $ make $ sudo make install
Можно воспользоваться менеджером brew, но мы поставим php из исходников. На момент написания статьи была версия 5.6.2
$ wget http://ru2.php.net/distributions/php-5.6.2.tar.gz $ tar -xzf php-5.6.2.tar.gz $ ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/private/etc --with-apxs2=/usr/sbin/apxs --enable-cli --with-config-file-path=/private/etc --with-config-file-scan-dir=/private/etc/php.d --with-libxml-dir=/usr --with-openssl=/usr --with-kerberos=/usr --with-zlib=/usr --enable-bcmath --with-bz2=/usr --enable-calendar --with-curl=/usr --enable-dba --enable-exif --enable-fpm --enable-ftp --with-gd --with-freetype-dir=/BinaryCache/apache_mod_php/apache_mod_php-93~55/Root/usr/local --with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-93~55/Root/usr/local --with-png-dir=/BinaryCache/apache_mod_php/apache_mod_php-93~55/Root/usr/local --enable-gd-native-ttf --with-icu-dir=/usr/local --with-ldap=/usr --with-ldap-sasl=/usr --with-libedit=/usr --enable-mbstring --enable-mbregex --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/mysql/mysql.sock --with-readline=/usr --enable-shmop --with-snmp=/usr --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --enable-wddx --with-xmlrpc --with-iconv-dir=/usr --with-xsl=/usr --enable-zip --with-pcre-regex --enable-opcache --enable-intl $ make $ make test $ sudo make install
Создадим папку для наших расширений $ sudo mkdir /etc/php.d
настроим php
$ sudo cp /etc/php.ini.default /etc/php.ini $ sudo chmod u+w /etc/php.ini
Изменим файл $ sudo vim /etc/php.ini
добавим часовой пояс
date.timezone = Europe/Simferopol
Настроим php-fpm $ sudo vim /etc/php-fpm.conf
нас интересуют данные настройки:
user = _www group = _www ;listen = 127.0.0.1:9000 listen = /var/run/php5-fpm.sock; listen.owner = _www listen.group = _www ;listen.mode = 0660
Для добавления php-fpm в автозагрузку необходимо создать файл $ sudo vim /Library/LaunchDaemons/net.php.php-fpm.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>net.php.php-fpm</string> <key>LaunchOnlyOnce</key> <true/> <key>NetworkState</key> <true/> <key>ProgramArguments</key> <array> <string>/usr/sbin/php-fpm</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceDescription</key> <string>PHP FastCGI Process Manager</string> <key>StandardErrorPath</key> <string>/var/log/system.log</string> </dict> </plist>
Добавим в загрузку: $ sudo launchctl load Library/LaunchDaemons/net.php.php-fpm.plist
composer
В проектах мы очень часто используем пакеты из packagist, поэтому поставим Composer глобально.
$ curl -sS https://getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer
Настройка git
Для работы мы используем систему контроля версий git, не забываем настроить git.
$ git config --global user.name "andrey1s" $ git config --global user.email “andrey@4devs.org”
Добавим файлы в игнор глобальный. $ vim ~/.gitignore_global
# OS generated files # ###################### .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes Icon? ehthumbs.db Thumbs.db # Dev # ###################### .idea
$ git config --global core.excludesfile ~/.gitignore_global
Настроим необходимые алиасы. Подробнее про алиасы можно узнать в статье Git, используем алиасы.
$ git config --global alias.st status $ git config --global alias.cm 'commit -m' $ git config --global alias.cma 'commit -a -m’ $ git config --global alias.co checkout $ git config --global alias.nb 'checkout -b’
Установка и настройка Symfony2
Для того чтобы при установке использовать структуру директорий Symfony3 необходимо добавить в файл $ vim ~/.bash_profile
строку export SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
Создадим стандартный проект
$ mkdir Sites $ cd Sites $ composer create-project symfony/framework-standard-edition symfony/ "2.5.*”
Настроим права к папкам. В проектах где используется Swiftmailer добавим папку var/spool
$ mkdir var/spool $ rm -rf var/cache/* $ rm -rf var/logs/* $ rm -rf var/spool/*
Настроим права доступа, подробнее можно узнать на сайте
$ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1` $ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs var/spool $ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs var/spool
Также добавим к hosts новый сайт $ sudo vim /etc/hosts
127.0.0.1 symfony.local
Вывод
В итоге у нас рабочая настроена машина со всеми необходимыми пакетами для разработки на Symfony2.