Решение представляет собой компиляцию советов собранных в интернете и учтены советы данные в комментариях.
Виртуалбокс удобен в использовании потомучто по сравнению с hyper-v поддерживает буфер обмена, изменение размера окна. ставил ubuntu 16.04 сервер в виртуалбокс виндовс 10.
Один пользователь может запускать несколько сайтов. Конфигурация для разработки, а не для продакшена.
Установка программ
sudo apt install apache2 mysql-server mysql-client vsftpd ssh mc git
Настройка apache2
добавляем в sudo nano /etc/apache2/sites-available/drupal8.conf следующие строки:
ServerAdmin webmaster@localhost
ServerName drupal8
DocumentRoot /var/www/drupal8/web
<Directory /var/www/drupal8/web/>
Options FollowSymlinks -MultiViews
AllowOverride All
</Directory>
</VirtualHost>
т.к. используем сервер для своей разработки то меняем владельца папки www для удобства работы:
sudo chown -R $USER:$USER /var/www
включаем сайт:
sudo a2ensite drupal8
sudo service apache2 restart
Настройка php
Включаем php в виде модуля апачи:
sudo a2enmod rewrite
sudo apt install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext
включаем uploadprogress
link.Note: PECL uploadprogress (upload progress) only works if you are running in mod_php mode as a native Apache extension. This means PECL uploadprogress will not work with the following: FastCGI, IIS, Lighttpd, Pantheon, Nginx.
sudo apt-get update && sudo apt upgrade
sudo apt install php-uploadprogress
sudo service apache2 restart
Обновление composer
wget https://getcomposer.org/installer
php installer
sudo mv composer.phar /usr/local/bin/composer
Настройка ftp сервера
Для загрузки файлов в файле настройке сервера sudo nano /etc/vsftpd.conf разрешаем право на запись: write_enable=YES и local_umask=022 . Далее рестарт сервера
sudo service vsftpd restart
Создание БД
mysql будет спрашивать root пароль который вы устанавливали при установке mysql.
CREATE USER drupal8db@localhost IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal8db.* TO 'drupal8db'@'localhost' IDENTIFIED BY 'password';"
Инсталляция сайта
composer create-project drupal-composer/drupal-project drupal8 --stability=dev --no-interaction --prefer-dist
mkdir drupal8/config
mkdir drupal8/config/sync
sudo chown -R www-data:www-data /var/www/drupal8/config/sync
cd drupal8/web
../vendor/bin/drush site-install --db-url=mysql://drupal8db:password@localhost/drupal8db --site-name="Drupal 8 сайт"
Скачался и установился drupal 8.3.2. Сохраняем логин и пароль выданный в консоле, добавляем пару модулей
composer require drupal/metatag --prefer-dist
composer require drupal/bootstrap --prefer-dist
Завершающие настройки
устанавливаем права
в файл nano /var/www/drupal8/web/sites/default/settings.php добавляем строки с вашим айпи:
<?php$settings['trusted_host_patterns'] = array(
'^192\.168\.1\.43$',
'^127\.0\.0\.1$',
'^localhost$',
);?>
chmod 444 /var/www/drupal8/web/sites/default/settings.php
Запуск
Заходим на сайт http://192.168.1.43. Входим по логину и паролю который выдали при инсталляции сайта.
Обслуживание
Резервное копирование
../vendor/bin/drush sset system.maintenance_mode 1
../vendor/bin/drush sql-dump --result-file=../baza_drup8.sql
скачать все файлы с помощью виндоуз программы filezilla из директории /var/www/drupal8
cd web
../vendor/bin/drush sset system.maintenance_mode 0
Восстановление
TODO
что необходимо сделать.
- отправку почты с сайта (postfix)
- шифрование tls (letsencrypt)
- использование для администрирования БД Heidisql и Mysql workbench
upd1: убрал php-fpm, переработал разделы.
upd2: убрал mcedit, вместо него добавил nano
upd3: добавил -MultiViews
upd4: добавил предупреждение насчет uploadprogress
Комментарии
Сomposer есть в репозиториях ubuntu 16.04, и лучше оттуда его и ставить. Хотя приведённый способ рабочий.
Зачем вам apache + php-fpm, с чего бы это предпочтительно? Если уж у вас на фронте апач, то лучше использовать mod_php* - это меньшие накладные расходы.
«т.к. используем сервер для своей разработки то меняем владельца папки www для удобства работы:»
Так а что мешает просто в своей домашней папке разрабатывать - сайты совершенно не обязаны лежать в /var/www на самом деле...
«sudo pecl install uploadprogress»
Ну не надо так делать. Не надо использовать pecl. Используйте пакетный менеджер системы. В случае Ubuntu есть PPA где можно его найти. Например, ppa:ondrej/php. А вообще - это лишнее в принципе.
FTP, вероятно, вам не нужен и его установка это лишний шаг. SFTP у вас уже есть из коробки.
PhpMyAdmin не надо ставить, этот мусор давно пора выбросить - лучше использовать Heidisql какой-нибудь или Mysql workbench через ssh.И забыть о таймаутах, битых дампах и.т.п..
Зря ты так на пхпмайадмин. Довольно удобная утилита для просмотра структуры базы. Плюс встроенные инструменты статистики иногда полезны. А вот дампы дампить действительно лучше через консоль.
Это просто неизбежное зло, т.к. на шаред хостингах было не дать иной доступ к базе. Собственно, только по этому он так распространён.
А так, там не раз были дыры, например. Ну и в принципе, это широко открытая дверь, если стащить пароль от базы - даже бекдор заливать не надо...
Ну и исполнение каких-то сервисных операций с базой в контексте веб сервера это очень плохая мысль.
Сенкс за труды)))
Для локальной разработки имхо удобно использовать nginx
и стартовать его от своего пользователя (к примеру devel):
user devel;
Или, что еще проще в большинстве случаев,
с http://php.net/manual/ru/features.commandline.webserver.php
который просто:
drush rs
Тут не будет траблов с правами пользователя на ФС из коробки - грубо говоря.
Так-же для разработки вполне достаточно sqlite
У меня сложился следующий стек:
php7-fpm, mariadb || postgresql, nginx
ftp - не нужен, когда есть scp или даже sshfs
bsyomov
multpix
1. У меня с этим вопросов нет))
вам скажу - там все очень просто как для локального конфига разраба,
вот мой путь - виртуальные хосты, запуск от системного пользователя, дистры в домашнем каталоге, и запись в hosts.
Но это только если мне нужен надолго какой-то пыхыпы проект для использования (не для разработки).
чтоб не путать с вебом, размещаю их в домене .local
2. Не потестить а разрабатывать - это очень удобно. зашел - запустил, остановил вышел. надо одновременно два и больше - изменил порт, надо много (и не только пыхыпы) в одном процессе - foreman - такое удобно для раздельных фронт/бек.
А держать постоянно работающим разрабатываемое - нет необходимости. Для друпал это rs ключ драш.
сборка дистра и запуск - это считанные минуты в одном терминальном сеансе.
3. Рекомендую для начала хорошо разобраться в этом вопросе самому, а только потом делиться с сообществом)
это единственная причина, почему статья не на главной (сыровато, есть неточности), но все равно - спасибо за труды!
Не стесняйтесь публиковаться, делитесь своим опытом и задавайте вопросы, чем смогём - помогём, сообщество отзывчивое)))
4. Это от-того что у вас пробелы по теме пользователь-права-файловая_система.
При верной и грамотной организации рабочего места этого не наблюдается)))
upd:
надо быть человеком с железными нервами, чтоб вопреки всему иметь основной системой вин, и при этом разрабатывать для веб))))
По upd, никаких проблем с этим нет - проверено лично.
Мне, например, вообще всё равно, какая у меня хост система из win|lin|mac. Что phpstorm, что virtualbox, что ssh работает а них всех.
1. И это вам чем-то мешает? через какое-то время, вы забываете про него и он становится уже совсем не актуальным и с не закрытыми дыами, в отличии от обновляемого регулярно из репозиториев. Если пользуетесь пакетным дистрибутивом, надо пользоваться для установки пакетным менеджером, иначе, система быренько превращается в помойку.
2. Тогда не надо ставить apache совсем. Ну и популярно, это не аргумент, надо понимать, как оно работает, и что и с какой целью ставится.
На самом деле, надо либо ставить apache + mod_php, либо nginx(или какой-нибудь другой лёгкий веб сервер) + php+fpm. Apache + fastcgi более накладный вариант, и в нём может быть смысл, разве что, в случае необходимости параллельной работы нескольких версий php.
5. Лучше чтобы она не работала.
1.вот Вы как используете композер? мне кажется что баги полезут и в том и в другом случае.
2. согласен. наверно так и надо сделать. но в следующий раз.
multpix "путь - виртуальные хосты, запуск от системного пользователя, дистры в домашнем каталоге, и запись в hosts." самый правильный вариант. просто время от времени ситуация меняется и меняются настройки.
на какой системе работаете?
mint
о postgresql https://rickl.ru/node/6
Debian наше фсьио )
Имхо ставить ради веба на винду в виртуалке целую убунту слишком расточительно по ресурсам. Плюс файлы через фтп - виртуалка сдохнет и что тогда? А сколько времени займёт клонирование этой виртуалки и параллельное поднятие с изменёнными настройками?
Почему бы не использовать вместо этого всего докер?
Докер поставит полноценную операционку в виртуалке, и себя в неё, если мы говорим о win (даже на 10, просто это будет виртуалка на hyper-v и не придётся ставить virtualbox) или mac. А вот в ней уже будут контейнеры.
В принципе, разработка в контейнерах бывает удобна, и я не имею ничего против докера, но вокруг него масса хайпа и мифов. И многие используют его только из-за популярности, там где надо, и где не надо, забывая, что серебряной пули нет, и это не более чем один из инструментов со своими проблемами ограничениями и не удобствами.
Например, большой проблемой является использование сторонних образов, в которых может быть что угодно, которые могут не обновляться и.т.п., софт там может быть настроен как попало, и кем попало. А создание и поддержка своих образов это дополнительная, и не малая, работа.
Под друпал хватает сборок от известных и проверенных разработчиков. У которых, к слову, инструкция работает))))
Вот в том-то и проблема, что от разработчиков.
И к сожалению, при этом, абсолютное большинство PHP разработчиков не знают и свой-то стек толком, не то, чтобы тонкости настройки системы в целом.
В любом случае, это лучше, чем новичок будет сам собирать абы что. Кроме того, сборки докера активно сопровождаются - люди открывают ишью на гитхабе, они обсуждаются и фиксятся, в итоге выходит проверенный и стабильный продукт, в отличие от 90% мануалов, которые написали и забыли.
Не всё так просто - из коллективного сознания дилетантов, часто, не получается хороших решений, а кто умеет, обычно собирает себе сам.
Т.е. ситуация, на самом деле, та же, что и с так "любимыми" мной инструкциями. Ни лучше, и ни хуже.
Если в wodby сидят дилетанты, то где же тогда профессионалы?
gun_dose каждый работает как умеет. мне нравится полноценное окружение потомучто туда можно еще что-н прикрутить.
хочу сообщить неприятную новость. инструкция не работает). провожу исследования. зависает при установке нового модуля. какой-то конфликт с базой данных. в заглавии добавил слово "проект".
Вам не кажется, что просто не надо было это публиковать, особенно как "инструкцию", а не вопросы по настройке?
Инструкции, как мне кажется, должны писать те, кто разберется в том, о чём пишет, а не восторженные неофиты, которые открыли для себя возможность самостоятельно настроить что-то новое. Собственно, из-за таких "инструкций", которыми полон интернет только масса проблем.
я видел много инструкций которые не работали, а комментаторы исправляли ошибки. например был недавно случай с неработающим примером плугина для броузера Edge на сайте microsoft. исправили через 12 дней после обращения. эту инструкцию постараюсь довести до работоспособного состояния. придумал ее не я а является компиляцией советов.
Я вам даже больше скажу: не работает так, как задумано автором, или не работает универсально(и не сказано в каких случаях должно работать), более 90% таких пошаговых инструкций. И не надо их плодить. Особенно тем, кто даже сам не понимает, что делает.
Написание подобной инструкции, это реально большая и сложная работа, требующая довольно высокой квалификации, чтобы хотя бы грамотно написать область применимости инструкции, и продумать все последствия описанных действий.
А вам, да и всем совет: не используйте подобные инструкции вовсе, и, конечно, не пишите их. Читайте документацию, и разбирайтесь, как что работает. Только так вы что-то приличное, в итоге, сможете настроить.
Прошу сообщить эту новость в начале вашего топика,
чтоб не сбивать с толку новичков, которые могут пытаться пойти по вашим стопам.
Еще наводка - вы попробуйте поработать с подсистемой linux которая есть в 10-ке.
При возникающих ошибках - не гадайте а спрашивайте, опишите ситуацию и публикуйте текст ошибки)
Может вам чем поможет мой древний ман)
https://bitbucket.org/multpix/ember2drupal/wiki/Drupal
топик обновил. вижу в Вашей инструкции недоустановленные пакеты. но это другая тема.
Это всего-лишь достаточный минимум - небольшая шпаргалочка для быстрого старта разработчика дру)
Инструкцию обновил. У меня работает. Была проблема в php fpm . С английской версией сайта работал нормально а при включении русской локализации зависал при обновлении переводов. Никаких ошибок не выдавал только немного ругался при старте. Нагуглить решение не удалось поэтому я его вообще убрал. Для разработки хватит классического mod php.
Подсистема линукс в виндоуз не позволяет запускать демоны. Но в следующем обновлении виндоуз в сентябре октябре чтото там улучшат.
может была проблема с правами на директорию для переводов?
да. была такая мысль. но поскольку ошибку старта php fpm не смог убрать не стал дальше экспериментировать. тестировать все варианты то ли php fpm то ли drupal8 то ли composer, а может и mysql (при зависании было большое кол-во обращение к базе данных) нет возможности. конфигурацию c php fpm в виде nginx - php7-fpm - mariadb - drupal 7 правильно было бы использовать для продакшен системы, а для этого надо писать другую инструкцию.
Поправка к статье: Filezilla не виндоуз, а кроссплатформенное ПО
Установил, но возникла проблема. Подскажите, в чем может быть причина, браузеры теперь не открывают как предыдущий локальный сайт, так и установленный по статье, а пишет: "Проверьте настройки прокси-сервера и брандмауэра". Поменять я их не могу браузер берет системные настройки.
Заработало, ошибка была в VirtualHost *:80. Но теперь другое: The website encountered an unexpected error. Please try again later. Это с самим Друпал проблема?
А не наконец-то разобрался, всё заработало
редактировать не дают.
upd5:
Options +FollowSymlinks -MultiViews
mysql -u root -p -e "CREATE DATABASE drupal8db CHARACTER SET utf8 COLLATE utf8_bin;
FLUSH privileges;