Linux. Настройка рабочего окружения веб-сервера в Debian - insbor.ru
insbor.ru

insbor.ru

Привет, это я

Читаю, пишу, перечитываю и исправляю.


Что здесь происходит


Предыдущие записи


Linux. Настройка рабочего окружения веб-сервера в Debian

Опубликовано :   |  Кем :   |  Категория :  Linux

Сегодня пришлось переезжать с одного компьютера на другой, вспомнил всё самое важное, что использую для работы: Linux (У меня Mint), PhpStorm, PHP7 + composer + PHPUnit + Xdebug, nginx, Apache, MySQL, PostgreSQL, git + git-fat, Node.js + npm и, конечно же, Docker.

Начнём по порядку. Nginx, Apache, MySQL, PostgreSQL, PHP вместе с Xdebug, Redis, глобальным PHPUnit, Composer и нужными мне расширениями. xDebug можно поставить как готовым расширением php7.1-xdebug, так и вручную - выбирать вам.

sudo su 
apt-get update
apt-get install nginx apache2 nodejs npm
apt-get install mysql-server mysql-workbench
mysql_secure_installation
apt-get install postgresql postgresql-contrib

# Docker
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
apt-get update
apt-get install docker-engine
usermod -aG docker $(whoami)
# Docker Compose
sudo curl -o /usr/local/bin/docker-compose -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)"
chmod +x /usr/local/bin/docker-compose

# PHP7
# add php-7.1 source list by [Ondřej Surý](https://github.com/oerdnj)
add-apt-repository ppa:ondrej/php
apt-get install php7.1 php7.1-fpm php7.1-cli php7.1-dev php7.1-xdebug php7.1-common php7.1-curl php7.1-gd \
 php7.1-json php7.1-mbstring php7.1-mcrypt php7.1-redis php7.1-opcache php-mysqli php7.1-mysql php7.1-odbc \ 
 php7.1-pgsql php7.1-readline php7.1-soap php7.1-sqlite3 php7.1-xml php7.1-zip
# Xdebug - ручная установка
wget -O /tmp/xdebug.tgz https://xdebug.org/files/xdebug-2.5.3.tgz
cd /tmp/
tar -xvzf xdebug.tgz
cd xdebug-2.5.3/
phpize
./configure --enable-xdebug
make
cp modules/xdebug.so /usr/lib/
cd ..
rm -rf xdebug-2.5.3
rm xdebug.tgz
# Redis - ручная установка
git clone https://github.com/phpredis/phpredis.git
cd phpredis
git checkout php7
phpize
./configure
make && make install
cd ..
rm -rf phpredis
# PHPUnit
curl https://phar.phpunit.de/phpunit.phar -L -o phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit
# Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
alias composer='/usr/local/bin/composer.phar'

# git и git-fat
apt-get install git
curl https://raw.github.com/cyaninc/git-fat/master/git_fat/git_fat.py | tee /usr/local/bin/git-fat
chmod +x /usr/local/bin/git-fat

Конечно, nginx и Apache нужно настраивать для одновременной работы. Поскольку мне просто приходится изредка переключаться на Apache для отдельных проектов, ещё не упакованных в Docker, просто отключаю авто-запуск одного из серверов:

sudo apt-get install rcconf
# Графический интерфейс (в терминале)
sudo rcconf
# Прямая команда
sudo update-rc.d -f service_name (disable|enable|add|remove)

Вообще для доступа к проекту под Docker локальный веб-сервер не нужен, но тогда придётся обращаться к нему не по доменному имени, а по адресу localhost:port. Образец конфига для nginx:

server {
 server_name site.dev; # Ваш локальный домен
 listen 80;

 location / {
 proxy_pass http://localhost:10080; # Внешний порт nginx в docker-compose.yml
 proxy_set_header Host site.dev;
 }
}

Указываем все используемые в рабочих проектах домены в /etc/hosts. Создадим в /etc/php/7.1/mods-available/ конфиги для xDebug и Redis, а затем в /etc/php/7.1/fpm/conf.d/ и /etc/php/7.1/cli/conf.d/ ссылки на них для php-fpm (nginx) и cli (Apache и консоль) :

echo "extension=redis.so" > /etc/php/7.1/mods-available/redis.ini
echo -e "zend_extension=\"/usr/lib/xdebug.so\"\nxdebug.remote_enable=1" > /etc/php/7.1/mods-available/xdebug.ini 

ln -sf /etc/php/7.1/mods-available/redis.ini /etc/php/7.1/fpm/conf.d/20-redis.ini
ln -sf /etc/php/7.1/mods-available/redis.ini /etc/php/7.1/cli/conf.d/20-redis.ini
ln -sf /etc/php/7.1/mods-available/xdebug.ini /etc/php/7.1/fpm/conf.d/20-xdebug.ini
ln -sf /etc/php/7.1/mods-available/xdebug.ini /etc/php/7.1/cli/conf.d/20-xdebug.ini
service php7.1-fpm restart

В Chrome можно добавить расширение Xdebug helper для удобного включения/выключения отладки. К git добавляем git-fat для сохранения больших бинарных файлов на отдельном от репозитория сервере. Для работы с MySQL можно поставить Workbench, хотя лично я на деле чаще использую PhpStorm.

Инициализируем PostgreSQL:

# Подставьте свою версию PostgreSQL
echo -e "listen_addresses = 'localhost'" > /etc/postgresql/X.X/main/postgresql.conf
sudo -u postgres psql template1
# Установим пароль существующему пользователю
ALTER USER postgres WITH ENCRYPTED password 'password';
# Или лучше создадим новую БД и нового пользователя
CREATE USER username WITH ENCRYPTED password 'password';
CREATE DATABASE dbname;
GRANT ALL privileges ON DATABASE dbname TO username;

Подробнее про установку и настройку MySQL, PostgreSQL, nginx, LAMP, LEMP, LAMP (rus), LEMP (rus), Node, Docker, Docker Compose. Все приведённые английские статьи доступны и в русском переводе. И вообще, стоит оглядеться в поиске по тегам.

Настраиваем интеграцию с репозиториями с помощью ssh (у меня github и bitbucket). Утилита xclip служит для работы с буфером обмена.

# Генерируем ключи ssh и копируем публичный ключ в буфер обмена
ssh-keygen -t rsa -b 4096 -C "you@example.com"
sudo apt-get install xclip
cat ~/.ssh/id_rsa.pub | xclip -sel clip

# Указываем данные пользователя git
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Добавляем скопированный публичный ключ в наши репозитории:

bitbucket.org: Bitbucket settings -> SSH keys -> Add key -> Ctrl+V

github.com: Settings -> SSH and GPG keys -> New SSH key -> Ctrl+V

Ставим удобный эмулятор терминала Terminator (rus), Oh-My-Zsh для его оформления, архиватор 7-zip и текстовый редактор Sublime:

# Terminator
sudo su
add-apt-repository ppa:gnome-terminator
apt-get update
apt-get install terminator
# Вообще, приложение для терминала можно задать через GUI в меню 
# Параметры / Параметры системы / Предпочитаемые приложения
gsettings set org.cinnamon.desktop.default-applications.terminal exec /usr/bin/terminator

# Oh My Zsh
apt-get install zsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# Sublime
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text

# 7-zip
sudo apt-get install p7zip-rar p7zip-full

Перезапускаем терминал и смотрим, как он выглядит. В начале файла ~/.zshrc находим строку: ZSH_THEME='...', указывающую на одну из стандартных *.zsh-theme тем в папке ~/.oh-my-zsh/themes. Я использую gentoo.

Ну вот и всё, система готова к работе. Удачи!