Настройка веб-сервера для разработки Drupal сайтов

Опубликовано admin - вт, 07/17/2012 - 11:40

Мы в drupal-coder.ru решили сделать выделенный сервер разработки, чтобы разработчики могли быстрее создавать drupal сайты, не тратя времени на прописывание virtual хостов, добавление записей в DNS, создание базы MySQL, установку Drupal. Также на этом сервере будет сдаваться работа заказчику.
Под эту тему мы даже зарегистрировали домены для сайтов на Drupal 6, Drupal 7, Drupal 8 (хотя таких и нет пока что, но все впереди) соответсвенно.
Занялись этой задачей я и наш сотрудник Сергей. В этой статье Сергей описал настройку такого сервера для домена example-d7.ru. Думаю, что статья будет интересна командам, специализирующихся на разработке под Drupal.

Постановка задачи

Сервер для разработки должен позволять:

  • Быстро создавать VirtualHost для поддоменов, не требуя настройки VirtualHost в конфигурации Apache.
  • Быстро заводить записи для поддоменов на DNS.
  • Быстро создавать базы данных для Drupal сайтов.
  • Быстрая установка Drupal.
  • Использовать единый robots.txt для все сайтов, чтобы поисковые системы не индексировали сайты для разработки.
  • Работать по протоколу FTP.

Также должен стоять всякий нужный софт: drush, git, rsync, patch, diffutils.

Решение

Сервер будем поднимать на Linux Debian, просто потому, что мы с ним имеем большой опыт работы и практически везде используем именно этот дистибутив.

  1. Для быстрого создания VirtualHost для поддоменов используем настройку Apache VirtualDocumentRoot, которая позволяет автоматически делать виртуальные хосты для поддоменов простым созданием папки с именем сайта.
  2. Для быстрого заведения записей для поддоменов на DNS используем запись Wildcard DNS. В ISP Manager для домена вписываем A запись *.example-d7.ru и в качестве IP указываем наш сервер. После этого все запросы на поддомены example-d7.ru будут направлены на наш сервер.
  3. Для быстрого создания баз данных и установки друпал используем drush, ниже напишу команды с помощью которых мы заводим сайты.
  4. Для использования единого robots.txt для всех сайтов используем Alias в настройках виртуального хоста Apache.
  5. Для настройки FTP сервера используем vsftpd.

Установка программного обеспечения

Устанавливаем программное обеспечение

apt-get install apache2 apache2-suexec mysql-server php5 php5-mysql php5-gd patch git-core diffutils rsync drush

Добавляем пользователя webmaster

adduser webmaster

Создаем каталоги

mkdir /home/webmaster/domains/drupal1.ru /home/webmaster/domains/drupal1.ru/logs

Включаем модули Apache

a2enmod suexec
a2enmod vhost_alias  

Настраиваем виртуальный хост в Apache

Создаем конфигурацию виртуального хоста apache /etc/apache2/sites-available/example-d7.ru

<VirtualHost *:80>
        UseCanonicalName off
        ServerAdmin info@example-d7.ru
        ServerName example-d7.ru
        ServerAlias *.example-d7.ru
        VirtualDocumentRoot /home/webmaster/domains/example-d7.ru/%0
        SuexecUserGroup webmaster webmaster
        Alias /robots.txt /home/webmaster/domains/robots.txt
	<Directory />
		AllowOverride none
        </Directory>
        <Directory "/home/webmaster/domains/example-d7.ru/*/">
                Options -Indexes FollowSymLinks

	        RewriteEngine On 
	        RewriteBase / 
	        RewriteCond %{REQUEST_FILENAME} !-d 
	        RewriteCond %{REQUEST_FILENAME} !-f 
	        RewriteRule ^/home/webmaster/domains/example-d7.ru/(.*)/(.*)$ index.php?url=$2 [QSA,L] 

	        <Files sitemap.xml>
	           RewriteEngine Off 
        	</Files> 
        </Directory>
        ErrorLog /home/webmaster/domains/example-d7.ru/logs/apache_errors.log
        CustomLog /home/webmaster/domains/example-d7.ru/logs/apache_access.log
 
        php_flag log_errors on
        php_flag display_errors on
        php_value error_reporting 2147483647
        php_value error_log /home/webmaster/domains/example-d7.ru/logs/php_error.log

        php_admin_value open_basedir "/home/webmaster/domains:/tmp:."
        php_admin_value upload_tmp_dir "/home/webmaster/domains/tmp"
        php_admin_value session.save_path "/home/webmaster/domains/tmp"
        AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
        AddType application/x-httpd-php-source .phps
</VirtualHost>

В этой конфигурации мы:

  • Использовали VirtualDocumentRoot /home/webmaster/domains/example-d7.ru/%0, что позволило создавать виртуальные хосты для поддоменов простым созданием каталога.
    Например: для работы виртуального хоста для поддомена drupal.example-d7.ru достаточно создать папку /home/webmaster/domains/example-d7.ru/drupal.example-d7.ru
  • Прямо в конфигурации Apache добавили все RewriteRule для "чистых ссылок" Drupal и запретили использовать файлы .htaccess в папках, так как обычно их редактирование при разработке не требуется
  • Включили вывод всех ошибок php.
  • С помощью SuexecUserGroup webmaster webmaster разрешили запуск всего php кода из под пользователя webmaster. Это нужно для того, чтобы не пришлось при разработке тратить время на изменение прав доступа к файлам на www-data.
  • С помощью Alias указали использование единого файла robots.txt.

Теперь активируем виртуалхост и перезапускаем apache

a2ensite example-d7.ru
/etc/init.d/apache2 restart

Установка и настройка FTP сервера

Устанавливаем пакет vsftpd

apt-get install vsftpd

Вносим изменения в файл настройки FTP сервера /etc/vsftpd.conf

#Директива описывающая метод работы сервера, сервер будет работать в фоновом режиме и #автоматически обрабатывать соединения
listen=YES 
# Наш сервер будет анонимным и без пароля
anonymous_enable=NO
no_anon_password=NO
# Папка для хранения данных анонимных пользователей
anon_root=/var/ftp
# Разрешение заливать информацию на ftp пользователу anonymous (ftp)
anon_upload_enable=NO
# Разрешение анонимным пользователям создавать новые дирректории
anon_mkdir_write_enable=NO
# Разрешение анономимному пользователю записывать, удалять и переименовывать файлы
anon_other_write_enable=NO
# Открываем локальным пользователям доступ к домашним директориям по FTP и разрешаем 
# команды на запись
local_enable=YES
local_umask=022
write_enable=YES
# Включение логов аплоада и даунлоада и указание файла логов
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
# "Запираем" пользователей в домашних папках
chroot_local_user=YES

Сервер настроен без анонимного доступа и все пользователи попадают в свои локальные папки /home/
Для применения всех настроек рестартуем сервер:

/etc/init.d/vsftpd restart

Быстрое добавление сайтов для разработки

Теперь для создания нового сайта для разработки, например, dev.example-d7.ru, необходимо выполнить несколько команд.
Переходим в каталог example-d7.ru

cd /home/webmaster/domains/example-d7.ru

C помощью drush cкачиваем drupal и указываем полное имя сайта в параметре drupal-project-rename

drush dl drupal --drupal-project-rename=dev.example-d7.ru

Drupal скачался и поместился в каталог dev.example-d7.ru. Переходим в этот каталог

cd dev.example-d7.ru

Устанавливаем Drupal c помощью drush, необходимо указать имя пользователя (root) и пароль к MySQL (rootpassword) с правами на создание базы, имя базы (dbname) MySQL нашего нового сайта, а также имя пользователя (drupaluser) и пароль (drupaluserpwd) к Drupal:

drush site-install standard --db-url=mysql://root:rootpassword@localhost/dbname --account-name=drupaluser --account-pass=drupaluserpwd

После выполнения этой команды мы сможем зайти на сайт dev.example-d7.ru c именем пользователя drupaluser и паролем drupaluserpwd, база данных MySQL будет называться dbname.

Надеюсь, понятно написал, если будут вопросы, добро пожаловать в комменты.

Насколько этот сервер актуален на сегодняшний день? Для работы с Друпал 8? Для установки в Linux Mint 18.3?
Надеюсь,что кто-то ответит.

Добрый день! Как простое решение достаточно актуален, но обязательно нужно следить за безопасностью и закрывать неиспользуемые проекты.

Добавить комментарий

Filtered HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.
  • Web page addresses and email addresses turn into links automatically.