Установка и настройка Vagrant в Ubuntu 16.04
12 июня 2017Установка Vagrant в Ubuntu 16.04
Установим самую последнюю версию на данный момент из репозитория Ubuntu
sudo apt install virtualbox vagrant
или с сайта Vagrant
sudo apt install virtualbox
wget https://releases.hashicorp.com/vagrant/1.9.2/vagrant_1.9.2_x86_64.deb
sudo dpkg -i vagrant_1.9.2_x86_64.deb
rm -f vagrant_1.9.2_x86_64.deb
Настройка конфигурации бокса, Nginx, PHP-FPM, MySQL, виртуальных хостов
В домашней директории текущего пользователя будет следующая структура файлов и директорий:
~/Vagrant
└── php-server
├── bootstrap.sh
├── nginx
│ └── test.com
└── Vagrantfile
Основной файл - это Vagrantfile. Именно в нем содержатся настройки виртуальной машины:
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.network "forwarded_port", guest: 80, host: 80
config.vm.synced_folder "/var/www/test.com", "/var/www/test.com"
config.vm.provision "shell", path: "bootstrap.sh"
end
Добавим файл bootstrap.sh, который служит для установки дополнительного программного обеспечения на виртуальной машине:
#!/usr/bin/env bash
export DEBIAN_FRONTEND=noninteractive
sudo apt update
sudo apt -y upgrade
sudo apt install -y mc nano curl git debconf-utils
# NGINX
sudo apt install -y nginx
sudo cp /vagrant/nginx/* /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/* /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
# PHP-FPM
sudo apt install -y php7.0-cli php7.0-common php7.0-mysql php7.0-gd php7.0-fpm php7.0-cgi php7.0-mcrypt php7.0-curl php7.0-json php7.0-mbstring php7.0-intl
sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.0/cli/php.ini
sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.0/cli/php.ini
sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.0/fpm/php.ini
sudo sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.0/fpm/php.ini
# COMPOSER
sudo curl -sS https://getcomposer.org/installer | php
chmod 755 composer.phar
mv composer.phar /usr/local/bin/composer
# MYSQL
debconf-set-selections <<< "mysql-server mysql-server/root_password password 12345"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password 12345"
sudo apt install -y mysql-server
sudo usermod -a -G www-data vagrant
sudo systemctl stop nginx.service php7.0-fpm.service mysql.service
sudo systemctl enable nginx.service php7.0-fpm.service mysql.service
sudo systemctl start nginx.service php7.0-fpm.service mysql.service
В директории nginx располагаются файлы виртуальных хостов.
Пример настройки хоста (файл test.com):
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com/www/;
index index.php;
charset utf-8;
client_max_body_size 128M;
sendfile off;
access_log /var/log/nginx/test.com_access.log;
error_log /var/log/nginx/test.com_error.log;
location ~* \. (eot|svg|ttf|woff|txt|jpeg|jpg|gif|png|ico|css|tgz|gz|rar|bz2|doc|xls|exe|pdf)$ {
expires 480h;
root /var/www/test.com/www/;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php7-fpm.sock;
try_files $uri =404;
}
location ~ /\.ht {
deny all;
}
}
Директива sendfile off добавлена, т.к. иногда возникают проблемы с отдачей статики (браузер может получать старый контент).
Добавим в /etc/hosts:
127.0.0.1 test.com
127.0.0.1 www.test.com
Запуск виртуальной машины
Переходим в директорию с Vagrantfile и выполняем команду:
vagrant up
Должен загрузиться бокс (первый запуск длится довольно долго), установлены и настроены Nginx, PHP-FPM, MySQL, Composer. После успешного запуска виртуальной машины сайт должен быть доступен по адресу test.com.
Примечания:
MySQL доступен через SSH-туннель (хост 127.0.0.1, порт 2222, пользователь ubuntu, файл ключа /home/dima/Vagrant/server/.vagrant/machines/default/virtualbox/private_key) с следующими параметрами подключения к MySQL - хост 127.0.0.1, порт 3306, пользователь root, пароль 12345.
Можно создать алиасы основных команд для данной виртуальной машины. В файл .bash_aliases в корневой директории пользователя, под которым вы работаете, добавим строки:
alias php-server-start="cd ~/Vagrant/php-server && vagrant up"
alias php-server-stop="cd ~/Vagrant/php-server && vagrant halt"
alias php-server-ssh="cd ~/Vagrant/php-server && vagrant ssh"
Чтобы изменения были приняты, выполните
. ~/.bashrc
Теперь запустить сервер можно командой php-server-start, остановить - php-server-stop, доступ по SSH - php-server-ssh.
Источники:
https://www.vagrantup.com/docs/