Ubuntu 16.04.2 + apache2 + mod-php7.0 + mysql + drupal 8

Аватар пользователя jura12

Решение представляет собой компиляцию советов собранных в интернете и учтены советы данные в комментариях.
Виртуалбокс удобен в использовании потомучто по сравнению с 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 следующие строки:

<VirtualHost *:80>
  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 a2dissite 000-default
sudo a2ensite drupal8
sudo service apache2 restart

Настройка php

Включаем php в виде модуля апачи:

sudo apt install php7.0 libapache2-mod-php7.0
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

Цитата:
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. link.

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update && sudo apt upgrade
sudo apt install php-uploadprogress
sudo service apache2 restart

Обновление composer

mkdir Загрузки && cd ~/Загрузки
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.

mysql -u root -p -e "CREATE DATABASE drupal8db CHARACTER SET utf8 COLLATE utf8_general_ci;
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';"

Инсталляция сайта

cd /var/www
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. Сохраняем логин и пароль выданный в консоле, добавляем пару модулей

cd ..
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. Входим по логину и паролю который выдали при инсталляции сайта.

Обслуживание

Резервное копирование

cd /var/www/drupal8/web
../vendor/bin/drush sset system.maintenance_mode 1
../vendor/bin/drush sql-dump --result-file=../baza_drup8.sql

скачать все файлы с помощью виндоуз программы filezilla из директории /var/www/drupal8

cd .. && composer update
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

Ключевые слова:
Тип материала:
Версия Drupal:
2 Спасибо

Комментарии

Аватар пользователя bsyomov
bsyomov 5 месяцев назад

С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.И забыть о таймаутах, битых дампах и.т.п..

0 Спасибо
Аватар пользователя gun_dose
gun_dose 5 месяцев назад

Зря ты так на пхпмайадмин. Довольно удобная утилита для просмотра структуры базы. Плюс встроенные инструменты статистики иногда полезны. А вот дампы дампить действительно лучше через консоль.

0 Спасибо
Аватар пользователя bsyomov
bsyomov 5 месяцев назад

Это просто неизбежное зло, т.к. на шаред хостингах было не дать иной доступ к базе. Собственно, только по этому он так распространён.
А так, там не раз были дыры, например. Ну и в принципе, это широко открытая дверь, если стащить пароль от базы - даже бекдор заливать не надо...
Ну и исполнение каких-то сервисных операций с базой в контексте веб сервера это очень плохая мысль.

0 Спасибо
Аватар пользователя multpix
multpix 5 месяцев назад

Сенкс за труды)))

Для локальной разработки имхо удобно использовать nginx
и стартовать его от своего пользователя (к примеру devel):

# nginx.conf
user devel;

Или, что еще проще в большинстве случаев,
с http://php.net/manual/ru/features.commandline.webserver.php
который просто:
drush rs

Тут не будет траблов с правами пользователя на ФС из коробки - грубо говоря.

Так-же для разработки вполне достаточно sqlite

У меня сложился следующий стек:
php7-fpm, mariadb || postgresql, nginx

ftp - не нужен, когда есть scp или даже sshfs

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

bsyomov

  1. composer в дистрибутиве идет старой версии. поэтому ставим актуальный
  2. php-fpm ставлю потомучто это популярно, производительно, при установке пакета php php-fpm сам ставится. для ретроградов я оставил старый способ установки.
  3. устанавливать сайт в домашней папке раньше было сложно. нужна донастройка. папка www нормально идет если еще сделать на нее ссылку в домашней дирректории. например так ln -s /var/www ~/www
  4. согласен. репозитарий ppa:ondrej/php добавлю в следующей версии инструкции
  5. vsftpd нужен чтоб работала установка модулей через админку
  6. Heidisql посмотрю, спасибо. Mysql workbench раньше глючный и неповоротливый был. да, таймауты это серьёзный аргумент.

multpix

  1. nginx у меня не зашел. сорри. пока не обещаю.
  2. я знаю что можно запускать сайты через командную строку. можно потестить. а если несколько сайтов?
  3. следующая инструкция будет про mariadb. postgresq это моя мечта. потом когда-н перейду на нее.
  4. фтр демон нужен для инсталляции модулей в админке. для передачи файлов я использую filezilla по sftp.
0 Спасибо
Аватар пользователя multpix
multpix 5 месяцев назад

1. У меня с этим вопросов нет))
вам скажу - там все очень просто как для локального конфига разраба,
вот мой путь - виртуальные хосты, запуск от системного пользователя, дистры в домашнем каталоге, и запись в hosts.
Но это только если мне нужен надолго какой-то пыхыпы проект для использования (не для разработки).
чтоб не путать с вебом, размещаю их в домене .local

2. Не потестить а разрабатывать - это очень удобно. зашел - запустил, остановил вышел. надо одновременно два и больше - изменил порт, надо много (и не только пыхыпы) в одном процессе - foreman - такое удобно для раздельных фронт/бек.
А держать постоянно работающим разрабатываемое - нет необходимости. Для друпал это rs ключ драш.
сборка дистра и запуск - это считанные минуты в одном терминальном сеансе.

3. Рекомендую для начала хорошо разобраться в этом вопросе самому, а только потом делиться с сообществом)
это единственная причина, почему статья не на главной (сыровато, есть неточности), но все равно - спасибо за труды!
Не стесняйтесь публиковаться, делитесь своим опытом и задавайте вопросы, чем смогём - помогём, сообщество отзывчивое)))

4. Это от-того что у вас пробелы по теме пользователь-права-файловая_система.
При верной и грамотной организации рабочего места этого не наблюдается)))

upd:
надо быть человеком с железными нервами, чтоб вопреки всему иметь основной системой вин, и при этом разрабатывать для веб))))

0 Спасибо
Аватар пользователя bsyomov
bsyomov 5 месяцев назад

По upd, никаких проблем с этим нет - проверено лично.
Мне, например, вообще всё равно, какая у меня хост система из win|lin|mac. Что phpstorm, что virtualbox, что ssh работает а них всех. =)

0 Спасибо
Аватар пользователя bsyomov
bsyomov 5 месяцев назад

1. И это вам чем-то мешает? через какое-то время, вы забываете про него и он становится уже совсем не актуальным и с не закрытыми дыами, в отличии от обновляемого регулярно из репозиториев. Если пользуетесь пакетным дистрибутивом, надо пользоваться для установки пакетным менеджером, иначе, система быренько превращается в помойку.

2. Тогда не надо ставить apache совсем. Ну и популярно, это не аргумент, надо понимать, как оно работает, и что и с какой целью ставится.
На самом деле, надо либо ставить apache + mod_php, либо nginx(или какой-нибудь другой лёгкий веб сервер) + php+fpm. Apache + fastcgi более накладный вариант, и в нём может быть смысл, разве что, в случае необходимости параллельной работы нескольких версий php.

5. Лучше чтобы она не работала. =)

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

1.вот Вы как используете композер? мне кажется что баги полезут и в том и в другом случае.
2. согласен. наверно так и надо сделать. но в следующий раз.

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

multpix "путь - виртуальные хосты, запуск от системного пользователя, дистры в домашнем каталоге, и запись в hosts." самый правильный вариант. просто время от времени ситуация меняется и меняются настройки.
на какой системе работаете?

0 Спасибо
Аватар пользователя multpix
multpix 5 месяцев назад

mint

0 Спасибо
Аватар пользователя Mihail.space
Mihail.space 5 месяцев назад
jura12 написал:
следующая инструкция будет про mariadb. postgresq это моя мечта. потом когда-н перейду на нее.

о postgresql https://rickl.ru/node/6

0 Спасибо
Аватар пользователя Mihail.space
Mihail.space 5 месяцев назад

Debian наше фсьио )

0 Спасибо
Аватар пользователя gun_dose
gun_dose 5 месяцев назад

Имхо ставить ради веба на винду в виртуалке целую убунту слишком расточительно по ресурсам. Плюс файлы через фтп - виртуалка сдохнет и что тогда? А сколько времени займёт клонирование этой виртуалки и параллельное поднятие с изменёнными настройками?

Почему бы не использовать вместо этого всего докер?

0 Спасибо
Аватар пользователя bsyomov
bsyomov 5 месяцев назад

Докер поставит полноценную операционку в виртуалке, и себя в неё, если мы говорим о win (даже на 10, просто это будет виртуалка на hyper-v и не придётся ставить virtualbox) или mac. А вот в ней уже будут контейнеры.

В принципе, разработка в контейнерах бывает удобна, и я не имею ничего против докера, но вокруг него масса хайпа и мифов. И многие используют его только из-за популярности, там где надо, и где не надо, забывая, что серебряной пули нет, и это не более чем один из инструментов со своими проблемами ограничениями и не удобствами.
Например, большой проблемой является использование сторонних образов, в которых может быть что угодно, которые могут не обновляться и.т.п., софт там может быть настроен как попало, и кем попало. А создание и поддержка своих образов это дополнительная, и не малая, работа.

0 Спасибо
Аватар пользователя gun_dose
gun_dose 5 месяцев назад

Под друпал хватает сборок от известных и проверенных разработчиков. У которых, к слову, инструкция работает))))

0 Спасибо
Аватар пользователя bsyomov
bsyomov 5 месяцев назад

Вот в том-то и проблема, что от разработчиков. =)
И к сожалению, при этом, абсолютное большинство PHP разработчиков не знают и свой-то стек толком, не то, чтобы тонкости настройки системы в целом.

0 Спасибо
Аватар пользователя gun_dose
gun_dose 5 месяцев назад

В любом случае, это лучше, чем новичок будет сам собирать абы что. Кроме того, сборки докера активно сопровождаются - люди открывают ишью на гитхабе, они обсуждаются и фиксятся, в итоге выходит проверенный и стабильный продукт, в отличие от 90% мануалов, которые написали и забыли.

0 Спасибо
Аватар пользователя bsyomov
bsyomov 5 месяцев назад

Не всё так просто - из коллективного сознания дилетантов, часто, не получается хороших решений, а кто умеет, обычно собирает себе сам. =)
Т.е. ситуация, на самом деле, та же, что и с так "любимыми" мной инструкциями. Ни лучше, и ни хуже.

0 Спасибо
Аватар пользователя gun_dose
gun_dose 5 месяцев назад

Если в wodby сидят дилетанты, то где же тогда профессионалы?

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

gun_dose каждый работает как умеет. мне нравится полноценное окружение потомучто туда можно еще что-н прикрутить.
хочу сообщить неприятную новость. инструкция не работает). провожу исследования. зависает при установке нового модуля. какой-то конфликт с базой данных. в заглавии добавил слово "проект".

0 Спасибо
Аватар пользователя bsyomov
bsyomov 5 месяцев назад

Вам не кажется, что просто не надо было это публиковать, особенно как "инструкцию", а не вопросы по настройке?

Инструкции, как мне кажется, должны писать те, кто разберется в том, о чём пишет, а не восторженные неофиты, которые открыли для себя возможность самостоятельно настроить что-то новое. Собственно, из-за таких "инструкций", которыми полон интернет только масса проблем.

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

я видел много инструкций которые не работали, а комментаторы исправляли ошибки. например был недавно случай с неработающим примером плугина для броузера Edge на сайте microsoft. исправили через 12 дней после обращения. эту инструкцию постараюсь довести до работоспособного состояния. придумал ее не я а является компиляцией советов.

0 Спасибо
Аватар пользователя bsyomov
bsyomov 2 месяца назад

Я вам даже больше скажу: не работает так, как задумано автором, или не работает универсально(и не сказано в каких случаях должно работать), более 90% таких пошаговых инструкций. И не надо их плодить. Особенно тем, кто даже сам не понимает, что делает.

Написание подобной инструкции, это реально большая и сложная работа, требующая довольно высокой квалификации, чтобы хотя бы грамотно написать область применимости инструкции, и продумать все последствия описанных действий.

А вам, да и всем совет: не используйте подобные инструкции вовсе, и, конечно, не пишите их. Читайте документацию, и разбирайтесь, как что работает. Только так вы что-то приличное, в итоге, сможете настроить.

0 Спасибо
Аватар пользователя multpix
multpix 5 месяцев назад
jura12 написал:
хочу сообщить неприятную новость. инструкция не работает

Прошу сообщить эту новость в начале вашего топика,
чтоб не сбивать с толку новичков, которые могут пытаться пойти по вашим стопам.

Еще наводка - вы попробуйте поработать с подсистемой linux которая есть в 10-ке.

При возникающих ошибках - не гадайте а спрашивайте, опишите ситуацию и публикуйте текст ошибки)
Может вам чем поможет мой древний ман)
https://bitbucket.org/multpix/ember2drupal/wiki/Drupal

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

топик обновил. вижу в Вашей инструкции недоустановленные пакеты. но это другая тема.

0 Спасибо
Аватар пользователя multpix
multpix 5 месяцев назад

Это всего-лишь достаточный минимум - небольшая шпаргалочка для быстрого старта разработчика дру)

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

Инструкцию обновил. У меня работает. Была проблема в php fpm . С английской версией сайта работал нормально а при включении русской локализации зависал при обновлении переводов. Никаких ошибок не выдавал только немного ругался при старте. Нагуглить решение не удалось поэтому я его вообще убрал. Для разработки хватит классического mod php.
Подсистема линукс в виндоуз не позволяет запускать демоны. Но в следующем обновлении виндоуз в сентябре октябре чтото там улучшат.

0 Спасибо
Аватар пользователя Mihail.space
Mihail.space 5 месяцев назад

может была проблема с правами на директорию для переводов?

0 Спасибо
Аватар пользователя jura12
jura12 5 месяцев назад

да. была такая мысль. но поскольку ошибку старта php fpm не смог убрать не стал дальше экспериментировать. тестировать все варианты то ли php fpm то ли drupal8 то ли composer, а может и mysql (при зависании было большое кол-во обращение к базе данных) нет возможности. конфигурацию c php fpm в виде nginx - php7-fpm - mariadb - drupal 7 правильно было бы использовать для продакшен системы, а для этого надо писать другую инструкцию.

0 Спасибо
Аватар пользователя itcrowd72
itcrowd72 2 месяца назад

Поправка к статье: Filezilla не виндоуз, а кроссплатформенное ПО

0 Спасибо