Это старая версия документа!


Homebrew + Nginx + PHP-FPM + Redis + MongoDB + MariaDB on MAC OS

nano ~/install.sh

#!/usr/bin/bash
 
# Перед запуском обязательно установите последний JDK
# http://www.oracle.com/technetwork/java/javase/downloads/index.html
# wget http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-macosx-x64.dmg
 
# Устанавливаем Xcode
 
# Устанавливаем Command Line Tools
xcode-select --install
 
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 
# Устанавливаем репозитории
brew tap homebrew/versions/bison27
brew tap homebrew/versions
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
brew tap dart-lang/dartbrew tap dart-lang/dart
brew tap homebrew/nginx
 
brew update
brew upgrade
 
brew install caskroom/cask/brew-cask
brew install lzlib
 
BREW=$(cat <<BREW
aircrack-ng
android-sdk
ant
atk
autoconf
autoconf-archive
automake
bash
binutils
bison27
boost
boost-build
brew-cask
cabextract
cairo
cloog
cloog-ppl015
cloog018
cmake
coreutils
cpanminus
curl
dart
diffutils
drush
ed
elasticsearch
erlang
file-formula
findutils
flex
fontconfig
freetype
gawk
gcc
gd
gdbm
gdk-pixbuf
gearman
geoip
gettext
git
glib
gmp
gmp4
gnu-indent
gnu-sed
gnu-tar
gnu-which
gnutls
gobject-introspection
gpatch
grep
gzip
harfbuzz
htop-osx
icu4c
isl
isl011
jasper
jpeg
less
libbson
libconfig
libev
libevent
libffi
libgcrypt
libgpg-error
libgphoto2
libicns
libmemcached
libmpc
libmpc08
libpng
libsodium
libssh2
libtasn1
libtiff
libtool
libusb
libusb-compat
libxml2
libyaml
little-cms2
logrotate
lzip
lzo
m4
make
makedepend
mariadb
mcrypt
memcached
mercurial
mhash
midnight-commander
mongodb
mongodb24
mpfr
mpfr2
nano
ncurses
nettle
nginx
ngrep
node
nspr
openssl
openvpn
ossp-uuid
p7zip
pango
pbzip2
pcre
perl518
phantomjs
php54 --with-fpm
php54-apc
php54-gearman
php54-geoip
php54-mcrypt
php54-memcache
php54-memcached
php54-mongo
php54-pcntl
php54-redis
php54-xdebug
php54-yaml
pigz
pixman
pkg-config
popt
postgresql
pyqt5
python
python3
qcachegrind
qt
qt5
rbenv
re2c
readline
reaver
redis
ruby
ruby-build
s-lang
samba
sane-backends
scons
sip
sphinx
spidermonkey
sqlite
tuntap
unixodbc
unoconv
unrar
v8
watch
wdiff
wget
wxmac
xz
BREW
)
 
brew install `echo $BREW|sed "s/screen//"|sed "s/brew-cask//"|sed "s/dart//"`
 
brew install libpng --universal  
brew install wine --with-gcc
 
brew install wine winetricks
 
brew unlink php54 && brew link php54
 
#brew install php-code-sniffer
 
#brew install composer
 
PROFILE=$(cat <<PROFILE
export PATH=/usr/local/bin:/usr/local/sbin:/usr/local/libexec:~/bin:$PATH
export PATH=$PATH:/usr/local/etc/bash_completion.d
export PATH="$(brew --prefix php54)/bin:$PATH"
export PEAR_HOME="/usr/local/lib/php/PEAR"
export PATH="$PEAR_HOME:$PATH"
export PATH=/usr/local/apache2nginx/bin:$PATH
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"
export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
 
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
export MANPATH="/usr/local/opt/gnu-sed/libexec/gnuman:$MANPATH"
 
export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512M"
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
export PKG_CONFIG_PATH=$(find /usr/local/Cellar -name 'pkgconfig' -type d | grep lib/pkgconfig | tr '\n' ':' | sed s/.$//)
 
# pip install --upgrade setuptools
# pip install --upgrade pip
 
# ARCHFLAGS="-arch x86_64" gem install pg
 
export TERM=xterm-256color
export LANG=ru_RU.UTF-8
 
# CMAKE_PREFIX_PATH
export CMAKE_PREFIX_PATH="/usr/local/opt/qt5/lib/cmake"
export QTPATH=/usr/local/opt/qt5/bin
alias qmake=/usr/local/opt/qt5/bin/qmake
 
# Дополнительные свойства для текта:
BOLD='\033[1m'       #  ${BOLD}      # жирный шрифт (интенсивный цвет)
DBOLD='\033[2m'      #  ${DBOLD}    # полу яркий цвет (тёмно-серый, независимо от цвета)
NBOLD='\033[22m'      #  ${NBOLD}    # установить нормальную интенсивность
UNDERLINE='\033[4m'     #  ${UNDERLINE}  # подчеркивание
NUNDERLINE='\033[4m'     #  ${NUNDERLINE}  # отменить подчеркивание
BLINK='\033[5m'       #  ${BLINK}    # мигающий
NBLINK='\033[5m'       #  ${NBLINK}    # отменить мигание
INVERSE='\033[7m'     #  ${INVERSE}    # реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)
NINVERSE='\033[7m'     #  ${NINVERSE}    # отменить реверсию
BREAK='\033[m'       #  ${BREAK}    # все атрибуты по умолчанию
NORMAL='\033[0m'      #  ${NORMAL}    # все атрибуты по умолчанию
 
# Цвет текста: 
BLACK='\033[0;30m'     #  ${BLACK}    # чёрный цвет знаков
RED='\033[0;31m'       #  ${RED}      # красный цвет знаков
GREEN='\033[0;32m'     #  ${GREEN}    # зелёный цвет знаков
YELLOW='\033[0;33m'     #  ${YELLOW}    # желтый цвет знаков
BLUE='\033[0;34m'       #  ${BLUE}      # синий цвет знаков
MAGENTA='\033[0;35m'     #  ${MAGENTA}    # фиолетовый цвет знаков
CYAN='\033[0;36m'       #  ${CYAN}      # цвет морской волны знаков
GRAY='\033[0;37m'       #  ${GRAY}      # серый цвет знаков
 
# Цветом текста (жирным) (bold) :
DEF='\033[0;39m'       #  ${DEF}
DGRAY='\033[1;30m'     #  ${DGRAY}
LRED='\033[1;31m'       #  ${LRED}
LGREEN='\033[1;32m'     #  ${LGREEN}
LYELLOW='\033[1;33m'     #  ${LYELLOW}
LBLUE='\033[1;34m'     #  ${LBLUE}
LMAGENTA='\033[1;35m'   #  ${LMAGENTA}
LCYAN='\033[1;36m'     #  ${LCYAN}
WHITE='\033[1;37m'     #  ${WHITE}
 
# Цвет фона 
BGBLACK='\033[40m'     #  ${BGBLACK}
BGRED='\033[41m'       #  ${BGRED}
BGGREEN='\033[42m'     #  ${BGGREEN}
BGBROWN='\033[43m'     #  ${BGBROWN}
BGBLUE='\033[44m'     #  ${BGBLUE}
BGMAGENTA='\033[45m'     #  ${BGMAGENTA}
BGCYAN='\033[46m'     #  ${BGCYAN}
BGGRAY='\033[47m'     #  ${BGGRAY}
BGDEF='\033[49m'      #  ${BGDEF}
 
# Finished adapting your PATH environment variable for use with MacPorts.
# export PROMPT_COMMAND="history -a; history -c; history -r;  $PROMPT_COMMAND"
 
#export PHP_AUTOCONF=/usr/local/bin/autoconf
#export PHP_AUTOHEADER=/usr/local/bin/autoheader
export PHP_AUTOCONF="'$(which autoconf)'"
export PHP_AUTOHEADER="'$(which autoheader)'"
 
# history
# Не сохраняем в историю
export HISTIGNORE="\&:ls:ln:ll:la:cd:fg:bg:exit:clear:mc:source:ep:er:h:history:man:pwd:." 
export HISTSIZE=90000 # Сохранение истории за сессию
export HISTFILESIZE=${HISTSIZE} # Межсессионое хранение истории
export HISTTIMEFORMAT="[%Y-%m-%d - %H:%M:%S] "
export HISTCONTROL=ignoreboth:erasedups
export HISTFILE=~/.bash_history
 
# grep
export GREP_OPTIONS='--color=auto'
#export GREP_COLOR='5;38' #мигающий
export GREP_COLOR='1;33' #ярко-желный на черном
 
shopt -s cmdhist
shopt -s histappend
 
#export CLICOLOR=1
#export LSCOLORS=dxfxcxdxbxegedabagacad
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad
 
PS1="\[$GREEN\]\u \[$LBLUE\]\w \[$LGREEN\]\$ \[\033[0m\]"
 
#ln -s mate ~/bin/mate_wait # run this once to create the link
#export EDITOR='~/bin/mate -w'     # use in your ~/.bash_profile
#alias nano='nano -u'
alias nano='nano'
export EDITOR='nano'
alias m='~/bin/mate -w '
 
#alias sssh="ssh -C -Xv "
#alias c='tabc SSH;sssh centre;tabc'
alias newip="sudo ipconfig set en0 BOOTP;sudo ipconfig set en0 DHCP"
alias localip="ipconfig getifaddr en0 2>&1"
alias remoteip='dig +short myip.opendns.com @resolver1.opendns.com'
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //'"
#alias rp="source ~/.profile "
 
# history
alias h="history|grep -i ${1}"
alias hc="history -c"
 
alias groups="groups | tr  ' ' '\n'"
 
# Операции с group
alias group="dseditgroup -v -o read -t group ${1}"
alias groupcreate="sudo dseditgroup -v -o create -t group ${1}"
alias groupdel="sudo dseditgroup -v -o delete -t group ${1}"
 
# Операции с User (Добавление/удаление в/из группу ${1})
alias groupcheck="dseditgroup -v -o checkmember -m $USER -t group ${1}"
alias groupadd="dseditgroup -v -p -o edit -a $USER -t user ${1}"
alias grouprm="dseditgroup -v -p -o edit -d $USER -t user ${1}"
 
# Composer
alias getcomposer='wget https://getcomposer.org/composer.phar'
alias ci='rm ./composer.phar && getcomposer && php ./composer.phar install'
alias getyii2='rm ./composer.par && getcomposer && php ./composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic ./yii && cd yii && ./yii'
alias getyii2-advanced='rm ./composer.par && getcomposer && php ./composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced ./yii && cd yii && ./yii'
 
#alias grep='grep -ilr --color=auto'
alias grep='grep --color=auto'
alias ls="ls -lahFG --color=auto"
alias cp="cp -ivpRP " # interactive, verbose
alias rm='rm -Rifv' # interactive
alias rmf='rm -Rf' 
alias mv="mv -iv"   # interactive, verbose
alias ln='ln -ivs'
alias chown='chown -vR '
alias chmod='chmod -v '
alias chgrp='chgrp -v '
alias make="make"
alias curl='curl '
alias mkdir='mkdir -pv'
alias diff='colordiff'
alias mount='mount |column -t'
#alias x='exit'
alias which='which -a ${1}'
alias locateupdate='sudo /usr/libexec/locate.updatedb'
alias cls='clear'
 
# Sudo
alias tcp="sudo lsof -iTCP -sTCP:LISTEN -P -n|  grep ${1}"
alias udp="sudo lsof -iUDP -P -n| grep ${1}" #  |egrep -v '(127|::1)
alias ports="sudo lsof -iTCP -iUDP -sTCP:LISTEN -P -n"
#sudo lsof -iTCP:80 -sTCP:LISTEN
#alias port="sudo port ${1}"
alias upgrade="brew update && brew upgrade"
 
# alias wget="sudo curl -O -C - "
alias wget="wget --no-check-certificate  "
alias path='echo ${PATH//:/\\n}'
alias listuser="users | tr  ' ' '\n'; echo '====================='; "
#alias ej="diskutil eject /Volumes/*[!Pro_HD]"
alias ping='ping -c 5 -s 2'
 
alias ~='cd ~/;pwd;'
alias .='pwd;'
alias ..='cd ..;pwd;'
alias ...='cd ../..;pwd;'
alias ....="cd ../../..;pwd;"
 
alias wbc24="cd /usr/local/var/www/wbc-24.loc"
 
# Обновление всего программного обеспечения
alias update='sudo softwareupdate -i -a; brew update; brew upgrade; brew cleanup; npm update npm -g; npm update -g; sudo gem update; cpan -u'
 
alias soffice='/Applications/LibreOffice.app/Contents/MacOS/soffice'
alias soffice.bin=soffice
 
# Конфигурации / Редактирование
alias vhn="m /opt/local/apache2/conf/httpd.conf"
alias er='source ~/.profile'
alias ep='m ~/.profile'
 
#
# mysql
#
alias mysqlup='mysql_upgrade -u root -p'
 
#
# Server
#
 
alias startserver='bash ~/bin/server-resart.sh'
alias stopserver='bash ~/bin/server-stop.sh'
alias restartserver='bash ~/bin/server-resart.sh'
alias serverstart=startserver
alias serverstop=stopserver
alias serverrestart=restartserver
 
#
# Функции
#
 
ssr()
{
	cat ~/.ssh/id_rsa.pub | ssh "${1}" 'cat >> .ssh/authorized_keys'
}
 
man()
{
	#alias man='LANG=C man'
	sudo LANG=C man -t "${1}" |  open -f -a /Applications/Preview.app
}
 
function locate ()
{
    local MAXAGE=$(( 24 * 60*60 )) # twenty-four hours, in seconds.
    local NOW="$(date +%s)"
    local DB="/var/db/locate.database"
 
    if [ ! -e "$DB" ]
    then
        echo "$FUNCNAME: $DB does not exist. Initializing..." > /dev/stderr
        sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist > /dev/stderr
        echo "$FUNCNAME: Please try again in a few minutes." > /dev/stderr
        return -1 # stop and fail, there's nothing we can do until the database has been created.
    fi
 
    local DBCREATED="$(eval $(stat -s $DB); echo $st_mtime )"
    local DBAGE="$(( $NOW - $MAXAGE ))"
 
    if [ $DBAGE -gt $NOW ]
    then
        echo "$FUNCNAME: $DB is more than $(( $MAXAGE / (60*60) )) hours old. Updating..." > /dev/stderr
        #sudo launchctl start com.apple.locate > /dev/stderr
        sudo /usr/libexec/locate.updatedb
		echo "$FUNCNAME: stale results: " > /dev/stderr
    fi
 
    command locate "$@"
}
 
#ulimit -S -n 4096
 
function xt() 
{
  # xt = eXTract, a wrapper to extract many different archive formats
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2)   tar xvjf $1     ;;
      *.tar.gz)    tar xvzf $1     ;;
      *.bz2)       bunzip2 $1      ;;
      *.rar)       unrar x $1      ;;
      *.gz)        gunzip $1       ;;
      *.tar)       tar xvf $1      ;;
      *.tbz2)      tar xvjf $1     ;;
      *.tgz)       tar xvzf $1     ;;
      *.zip)       unzip $1        ;;
      *.Z)         uncompress $1   ;;
      *.7z)        7z x $1         ;;
      *)           echo "'$1' cannot be extracted via >extract<" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}
 
# function procs()
# {
#
# 	n=`netstat -an | wc -l`
# 	nw=`netstat -an | grep WAIT | wc -l`
# 	p=`ps -ef | wc -l`
# 	psh=`ps -ef | fgrep sh | wc -l`
#
# 	echo "netstat: $n   wait: $nw      ps: $p   sh: $psh"
#
# }
 
function commands
{
   	if [ -z "$1" ]; then ALIASES=`alias`;
		else ALIASES=`alias | grep $1`;
		fi
 
	 echo "$ALIASES" | sort -u
}
 
# Вывод списка установленных программ, доступных через путь $PATH
function progs
{
	echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'
}
 
# Поиск файлов
f()
{ 
	sudo find "${1}" -type f -print 2>/dev/null; 
}
 
# Поиск папок
fd()
{ 
	sudo find "${1}" -type d -print 2>/dev/null; 
}
 
sshr(){
	cat ~/.ssh/id_rsa.pub | ssh "${1}" 'cat >> .ssh/authorized_keys'
}
 
# git clone + submodules
gc(){
	git clone 
	cd "${1}" && git submodule update --init --recursive
}
 
# Удаление новой строки и замена ее на пробел
trim(){
	tr '\n' ' '
}
alias rmnl=trim
 
#
# Ruby On Rails
#
alias ruby=/usr/local/bin/ruby
alias gem=/usr/local/bin/gem
alias irb=/usr/local/bin/irb
alias rails=/usr/local/bin/rails
 
alias redis=/usr/local/bin/redis-cli
 
export HOMEBREW_GITHUB_API_TOKEN="396dfcaf6d372299678bf6274114acf84a84457c"
 
#
# Подключаемые скрипты
#
source /Users/mirocow/.iterm2_shell_integration.bash
 
ulimit -S -n 4096
PROFILE
)
 
echo $PROFILE > ~/.profile