Всем добрый вечер. Небольшая статейка будет полезна больше пользователям nix систем. Но всё это реализуемо и на windows.
Для меня как для разработчика является нудным и утомительным занятием развёртывание рабочей среды под проект. По хорошему среду надо разворачивать максимально приближенную к боевой конфигурации сервера (те кто работают с боевыми серверами на прямую - ай ай ай. Надо уже переходить хотя бы на локаль -> продакшн. Хотя в идеале лучше локаль -> тест сервер -> боевой с миграциями и прочими штуками). Каждый проект заслуживает особого внимания и я не люблю разворачивать проекты на одном окружении (конфиги всё равно разные).
Для windows систем есть веб окружения от вендора (от битрикса). Есть виртуальная машина от битрикс - по мне так ад адовый (не машина то очень неплохо собрана, просто хз как её на моей убунте запускать)
Все примочки вендора это хорошо и здорово. Но есть другие пути. Рабочее окружение можно развернуть в один клик так сказать. До настройки окружения чисто под битрикс мне ещё далеко, но я собрал типовое окружение LAMP (php, apache, mysql, linux). Делюсь наработкой.
VirtualBox - программное обеспечение для виртуализации операционных систем Vagrant - программное обеспечение для создания и конфигурирования виртуальной среды разработки Git - распределённая система управления версиями файлов.
После установки создаём папку проекта (например vagrant-lamp)
mkdir vagrant-lamp
Переходим в папку
cd vagrant-lamp
Инициализируем Vagrant
vagrant init
После этого в папке появляется файл Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "base"
end
После этого нам нужно выбрать box (это виртуалка, которую в последующем vagrant сам закачает на вашу машину). Выберем например Ubuntu 14.04 (хотя дебиан лучше наверное). Список доступных боксов
config.vm.box = "ubuntu/trusty64"
Доработаем файл
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 80, host: 8080 //пробрасываем порты (80 - порт на виртуалке, 8080 - порт на нашей машине)
config.vm.network "forwarded_port", guest: 3306, host: 33060 //пробрасываем порты для mysql (3306 - порт на виртуалке, 33060 - порт на нашей машине)
config.vm.synced_folder ".", "/home/vagrant" //проводим синхронизацию текущего каталога с каталогом на виртуальной машине (мощь!)
config.vm.provision :shell, :path => "bootstrap.sh" //скрипт который будет выполнен после разворачивания виртуалки
end
Создадим файл bootstrap.sh (bash)
#!/usr/bin/env bash
# Variables path
php_config_file="/etc/php5/apache2/php.ini"
xdebug_config_file="/etc/php5/mods-available/xdebug.ini"
mysql_config_file="/etc/mysql/my.cnf"
apache_config_file="/etc/apache2/apache2.conf"
host_document_root="/home/vagrant"
apache_document_root="/var/www/html"
apache_ports_config_file="/etc/apache2/ports.conf"
project_folder_name='public'
# Variables env
DBNAME=vagrant
DBUSER=vagrant
DBPASSWD=vagrant
echo "--- Начало установки ---"
echo "--- Обновление списка пакетов ---"
apt-get -qq upd ate
echo "--- Установка базовых пакетов ---"
apt-get -y install vim curl build-essential python-software-properties git
echo "--- Обновление списка пакетов ---"
apt-get upd ate
echo "--- Установка Apache2 ---"
apt-get install -y apache2
echo "--- Установка MySql ---"
echo "mysql-server mysql-server/root_password password ${DBPASSWD}" | debconf-set-selections
echo "mysql-server mysql-server/root_password_again password ${DBPASSWD}" | debconf-set-selections
echo "phpmyadmin phpmyadmin/dbconfig-install boolean true" | debconf-set-selections
echo "phpmyadmin phpmyadmin/app-password-confirm password ${DBPASSWD}" | debconf-set-selections
echo "phpmyadmin phpmyadmin/mysql/admin-pass password ${DBPASSWD}" | debconf-set-selections
echo "phpmyadmin phpmyadmin/mysql/app-pass password ${DBPASSWD}" | debconf-se t-selections
echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect none" | debconf-se t-selections
apt-get -y install mysql-server-5.5 mysql-client phpmyadmin
mysql -uroot -p${DBPASSWD} -e "CRE ATE DATABASE ${DBNAME}"
mysql -uroot -p${DBPASSWD} -e "grant all privileges on $DBNAME.* to '${DBUSER}'@'localhost' identified by '${DBPASSWD}'"
echo "--- Установка репозиториев ---"
add-apt-repository ppa:ondrej/php5
#uncomment to install NodeJS
#add-apt-repository ppa:chris-lea/node.js
apt-get -qq update
echo "--- Установка PHP ---"
apt-get install -y php5 libapache2-mod-php5 php5-curl php5-gd php5-mcrypt php5-mysql php-apc
echo "--- Установка и конфигурация xDebug ---"
apt-get install -y php5-xdebug
cat << EOF | sudo tee -a ${xdebug_config_file}
xdebug.scream=1
xdebug.cli_color=1
xdebug.show_local_vars=1
EOF
echo "--- Включение mod-rewrite ---"
a2enmod rewrite
echo "--- Установка root папки---"
sudo rm -rf ${apache_document_root}
sudo ln -fs ${host_document_root}/${project_folder_name} ${apache_document_root}
echo "--- Настройка php.ini и apache2.conf ---"
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" ${php_config_file}
sed -i "s/display_errors = .*/display_errors = On/" ${php_config_file}
#uncomment to work with Boris
#echo "--- Работа с Boris---"
#sed -i "s/disable_functions = .*//" /etc/php5/cli/php.ini
sudo sed -i 's/AllowOverride None/AllowOverride All/g' ${apache_config_file}
a2enconf phpmyadmin
echo "--- Перезагрузка Apache2 ---"
service apache2 restart
echo "--- Перезагрузка mysql ---"
service mysql restart
#echo "--- Установка composer ---"
#uncomment to install coomposer
#curl --silent https://getcomposer.org/installer | php
#mv composer.phar /usr/local/bin/composer
#echo "--- Установка NodeJS и NPM ---"
#uncomment to install NodeJS NPM
#apt-get -y install nodejs
#curl --silent https://npmjs.org/install.sh | sh
#echo "--- Установка Gulp, Bower ---"
#uncomment to install Gulp and Bower
#npm install -g gulp bower
#echo "--- Обновление компонентов проекта ---"
#uncomment to update packages
#cd /vagrant
#sudo -u vagrant -H sh -c "composer install"
#cd /vagrant/client
#sudo -u vagrant -H sh -c "npm install"
#sudo -u vagrant -H sh -c "bower install -s"
#sudo -u vagrant -H sh -c "gulp"
Таким образом установим на машину всё необходимое.
Создадим в текущем каталоге папку public и в неё положим index.php
Кстати есть вот такой сервис на основе puppet puphpet.com где через интерфейс можно собрать любой конфиг и быстро сляпать необходимый сервер - очень круто.
Микулич Евгений, вот это уже ближе к реальной жизни) но скорее частный случай, чем общий и как собрать этот конфиг и ничего не забыть? Тут уже "развернуть за 5 сек" не получится никак. И такое скорее пригодится для больших серьезных проектов, а для серьезных проектов с некоторой долей вероятности железо на локальной машине будет недотягивать до боевого удаленного сервера.
Остаюсь при своем мнении. Вы виртуализировали свою рабочую станцию, дав себе возможность править конфиги независимо по проектам, а в моем представлении реально надо виртуализировать продакшн.
Пример чего? Вы хотите создать упрощенную настройку виртуальной среды, возможно универсальной (хотя это невозможно), под любой проект, с возможностью править независимо конфиги. И изначально делаете эту среду на убунте (как пример и с другими возможными вариантами, конечно, но ведь делаете), на которой не будет ни одного продакшна. Я это понимаю как виртуализацию своей рабочей станции, а не создание приближенного к боевой версии продакшна.
Это всё, конечно, здорово, но как версию php в данном боксе сменить, например до 7.0, подскажите, пожалуйста. И прям подробно, если можно... Инструкций в интернете много, но они больше только запутывают
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».