Тестировал в виртуалбоксе но подойдет и как отдельная установка.
Установка программ
sudo apt-get update && sudo apt upgrade
sudo apt install apache2 mariadb-server mariadb-client php vsftpd git
дополнительные и необязательные программы:
sudo apt install mc ssh adminer postfix
Настройка 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 systemctl reload apache2
Настройка php
sudo a2enmod rewrite
включаем 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.
sudo systemctl restart apache2
Настройка 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 systemctl restart vsftpd
Создание БД
входим в mysql
sudo mysql -u root -p
вводим 4 команды указанные ниже и выходим:
CREATE USER drupal8db@localhost IDENTIFIED BY 'drupal8password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal8db.* TO 'drupal8db'@'localhost' IDENTIFIED BY 'drupal8password';
FLUSH privileges;
quit
Инсталляция сайта
composer create-project drupal-composer/drupal-project:8.x-dev drupal8 --no-interaction
cd drupal8
mkdir -p config/sync
cd /var/www/drupal8/web/sites/default/files
mkdir private
Заходим на сайт http://192.168.1.43 инстиллируем или автоматически
../vendor/drush/drush/drush site-install --db-url=mysql://drupal8db:drupal8password@localhost/drupal8db --site-name="Drupal 8 сайт"
не забудьте записать выданный логин и пароль.
Завершающие настройки
устанавливаем права
в файл nano /var/www/drupal8/web/sites/default/settings.php добавляем строки с вашим айпи:
<?php$settings['trusted_host_patterns'] = array(
'^jura12\.ru\.43$',
'^www\.jura12\.ru\.43$',
'^109\.172\.13\.224$',
'^192\.168\.1\.43$',
'^127\.0\.0\.1$',
'^localhost$',
);
$settings['file_private_path'] = 'sites/default/files/private';
?>
chmod 444 /var/www/drupal8/web/sites/default/settings.php
Надо закрыть на доступ папки sync и private записав в файл .htaccess строки.
В nano /var/www/drupal8/web/sites/default/files/private/.htaccess:
# Turn off all options we don't need.
Options None
Options +FollowSymLinks
# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
# Override the handler again if we're run later in the evaluation list.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>
# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
php_flag engine off
</IfModule>
sudo chmod 755 /var/www/drupal8/web/sites/default/files
В nano /var/www/drupal8/config/sync/.htaccess:
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Deny all requests from Apache 2.0-2.2.
<IfModule !mod_authz_core.c>
Deny from all
</IfModule>
# Turn off all options we don't need.
Options -Indexes -ExecCGI -Includes -MultiViews
# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
# Override the handler again if we're run later in the evaluation list.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>
# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
php_flag engine off
</IfModule>
TODO
letsencrypt
Комментарии
Докер же сейчас в тренде, либо проще можно:
sudo tasksel install lamp-server
если апач нужен
https://medium.com/@neelmg/install-drupal-8-on-ubuntu-18-04-16a40a8be210
Владельца ставьте:
sudo chown -R www-data:www-data
Жить намного легче станет, заодно с правами заморачиваться не будете, крон автоматом все расставит.
насколько я помню tasksel ставит mysql, а у меня mariadb.
мануал что вы дали среднячек. он без composer и drush . которые для 8го друпала нужны.
владельца ставить конечно правильно было бы. но потом когда надо будет обновлять друпал с помощью composer опять все менять.
а без гугла разницу между mysql из tasksell и mariadb сможешь рассказать? А если даже и сможешь - реально есть смысл при локальной разработке использовать марию?
для локальной разработки нет смысла. разница как я понимаю в лицензировании и некоторых тонкостях работы.
мне захотелось именно mariadb поскольку mysql уже был в предыдущем моем мануале https://drupal.ru/node/133046
+ php 7.3 по дефолту идет в убунте 18.04
Используется для других версий php
Да и запоздали вы что-то с конфигом, в апреле 20.04 LTS выходит. Устареет ваш мануал очень быстро.
у меня 7.2 было по дефолту. репозитарий ondrej/php нужен для php-uploadprogress. вообще то 18.04 будет поддерживаться до апреля 2023 года. скорее друпал 8 устареет.
изначально php 7.2 может потомучто я на xubuntu 18.04 тестировал. друпал 8.7.9 поставился.
Лампа устраивает с головой для локали https://www.apachefriends.org/ru/index.html
Бэкап сайта скрипт кладем например в /etc/cron.weekly .
у меня получился такой скрипт:
mkdir "$backupdir"
cd /var/www/drupal8/web
../vendor/bin/drush sset system.maintenance_mode 1
if ../vendor/bin/drush sql-dump --result-file="$backupdir"/baza_drup8.sql
then echo "Backup of sql successful"
else echo "Backup of sql failed"
fi
if tar cfz "$backupdir"/archive.tar.gz /var/www/drupal8
then echo "Backup of files successful"
else echo "Backup of files failed"
fi
cd /var/www/drupal8/web
../vendor/bin/drush sset system.maintenance_mode 0