Система управления контентом.

проверено на 16.04.2

Один пользователь можно несколько сайтов.

Установка программ

sudo apt install apache2 mysql-server mysql-client vsftpd ssh mc git links

Настройка 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

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_bin;"
mysql -u root -p -e "CREATE USER drupal8db@localhost IDENTIFIED BY 'password';"
mysql -u root -p -e "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal8db.* TO 'drupal8db'@'localhost' IDENTIFIED BY 'password';"
mysql -u root -p -e "FLUSH privileges;"

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

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 сайт"

сохраняем логин и пароль, добавляем пару модулей

cd ..
composer require drupal/captcha  --prefer-dist
composer require drupal/recaptcha  --prefer-dist
composer require drupal/metatag  --prefer-dist

Завершающие настройки

устанавливаем права

chmod 544 /var/www/drupal8/web/sites/default/settings.php

в файл nano /var/www/drupal8/web/sites/default/settings.php добавляем строки с вашим айпи:

$settings['trusted_host_patterns'] = array(
    '^192\.168\.1\.39$',
    '^127\.0\.0\.1$',
    '^localhost$',
);
chmod 444 /var/www/drupal8/web/sites/default/settings.php

Запуск

Заходим на сайт http://192.168.1.39 . Входим по логину и паролю который выдали при инсталляции сайта.

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

прописываем drush для удобства в переменную path

 ../vendor/drush/drush/drush init --add-path=/var/www/drupal8/vendor/bin

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

у меня получился такой скрипт backup.sh:

backupdir="/home/yuraxu1804/backup/$(date)"
mkdir "$backupdir"
cd /var/www/drupal8/web
../vendor/bin/drush sset system.maintenance_mode 1

if ../vendor/bin/drush sql-dump --gzip --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 -C /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

потом запускаем crontab -e и прописываем

0 5 * * 1 backup.sh

backup.sh будет запускаться каждую неделю в 5 утра

Восстановление

cd /var/www/drupal8/web
drush -r $(pwd) sset system.maintenance_mode 1
cd /home/username/backupssd
tar -xzf archive.tar.gz -C /var/www
gunzip -d baza_drup8.sql.gz 
drush sqlc < baza_drup8.sql
#mysql -u root -p drupal8db < ./baza_drup8.sql 
cd /var/www/drupal8/web
drush -r $(pwd) sset system.maintenance_mode 0

Обновление

cd /var/www/drupal8/web
drush -r $(pwd) sset system.maintenance_mode 1
cd ..
composer update drupal/core --with-dependencies
cd web
drush -r $(pwd) updb
drush -r $(pwd) cr
drush -r $(pwd) sset system.maintenance_mode 0

TODO; что необходимо сделать

  • отправку почты с сайта (postfix)
  • шифрование tls (letsencrypt)
  • использование для администрирования БД Heidisql и Mysql workbench
  • использование shared folders в virtualbox

Ссылки