Skip to main content
Темплейты для Drupal
Установка LAMP сервера на Ubuntu для Drupal

Установка и настройка сервера для разработки Drupal на базе Ubuntu 13.10

Как поставить Ubuntu на локальную или виртуальную машину рассказывать нет смысла, в Интернете вы найдете подробные инструкции. Я остановлюсь именно на установке и настройке быстрого и сравнительно легкого web-сервера LAMP для разработки Drupal (и нетолько) сайтов.

LAMP = Linux + Apache + MySQL + PHP

Версия Ubuntu не важна - это может быть Ubuntu, Kubuntu, Ubuntu-server или что-то еще. Все действия проводим в терминале (Alt-Ctrl-T). Первым делом необходимо обновить пакеты
sudo apt-get update && sudo apt-get upgrade -y
В некоторых случаях после установки Ubuntu сервера не донастроена локаль. Если появляется подобная ошибка
locale: Cannot set LC_CTYPE to default locale: No such file or directory  
locale: Cannot set LC_MESSAGES to default locale: No such file or directory  
locale: Cannot set LC_ALL to default locale: No such file or directory
выполняем:
sudo locale-gen ru_RU.UTF-8
sudo dpkg-reconfigure locales
Midnight Commander ставим по двум причинам - навигация по каталогам и простой удобный редактор mcedit:
sudo apt-get install -y mc

Ставим LAMP сервер

sudo apt-get install -y build-essential curl
sudo apt-get install -y tasksel
sudo tasksel install lamp-server
sudo apt-get install -y php5-sqlite php5-json php5-curl php5-gd
Для доступа к серверу понадобится ssh. Если сервер будет использоваться исключительно на локальной машине, этот шаг можно пропустить.
sudo tasksel install openssh-server
Ставим дополнительния. Начнем с расширения uploadprogress:
sudo apt-get install -y php5-dev
sudo apt-get install -y php-pear
sudo pecl install uploadprogress
sudo sh -c 'echo "extension=uploadprogress.so" > /etc/php5/apache2/conf.d/uploadprogress.ini'
Ставим необходимые утилиты:
sudo apt-get install -y phpmyadmin
sudo apt-get install -y git
sudo apt-get install -y libpcre3-dev
Отключаем лишнее, включаем нужное:
sudo sh -c 'echo "FileETag none" > /etc/apache2/conf-available/etags-disable.conf'
sudo a2enconf etags-disable
sudo a2enmod rewrite
sudo a2enmod expires
sudo sh -c 'echo "AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript" > /etc/apache2/conf-available/deflate.conf'
sudo a2enmod deflate
sudo a2enconf deflate
sudo service apache2 restart
Если после перезагрузки апача появляется подобная ошибка, а она появится,
 * Restarting web server apache2
 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
выполняем следующее:
sudo sh -c 'echo "ServerName localhost" > /etc/apache2/conf-available/fqdn.conf'
sudo a2enconf fqdn
Чтобы не было проблем с правами на файловую систему и файлы, сделаем, чтобы апач запускался от имени пользователя. Редактируем файл /etc/apache2/envvars
sudo mcedit /etc/apache2/envvars
ищем эти строки, и вместо www-data вписываем логин пользователя
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
Далее, установим PHP акселератор - Zend Opcache (бывший Zend Optimizer+) либо APC. Утверждают, что первый быстрее на 5-20%, но это вопрос личных предпочтений. Редактируем:
sudo mcedit /etc/php5/mods-available/opcache.ini
Конфигурация для сервера разработки (объем памяти можно изменить, в зависимости от конфигурации и загруженности сервера):
; configuration for php ZendOpcache module
; priority=05
zend_extension=opcache.so
opcache.memory_consumption=128M
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
opcache.fast_shutdown=1
opcache.enable_cli=1
Для боевого сервера необходимо увеличить время проверки:
opcache.revalidate_freq=60
Установка APC. Автоматический вариант:
sudo apt-get install php5-apcu
Ручной вариант:
git clone https://github.com/krakjoe/apcu.git
cd apcu
pecl package package.xml
sudo pecl install -f apcu-4.0.2.tgz
Редактируем конфиг:
sudo mcedit /etc/php5/mods-available/apcu.ini
extension=apcu.so
apc.enabled=1
apc.write_lock=1
apc.shm_size=100M
apc.slam_defense=0
apc.enable_cli=1
Установка Memcached. Существенно ускоряет drupal, как и любую другую CMS.
sudo apt-get install php5-memcached memcached
Конфиг по умолчанию нас полностью устраивает, но если решите внести изменения, редактируйте /etc/memcached.conf. Описание внутри него вполне достаточное, чтобы понять что к чему
sudo mcedit /etc/memcached.conf
Memcached установлен, но для подключения к drupal установите модуль memcache_storage, инструкция настройки в файле INSTALL.TXT. Результат впечатлит. my.cnf Во время разработки, как правило, нагрузка на сайты минимальна, поэтому рекомендую создавать таблицы типа MyISAM. При разработке они быстрее InnoDB. Заметно при большом количестве нод. К тому же, таблицы занимают в несколько раз меньше места на диске.
sudo mcedit /etc/mysql/my.cnf
В секцию [mysqld] надо добавить одну строку:
[mysqld]
default-storage-engine=MyISAM
php.ini Drupal требователен к памяти, особенно на этапе разработки, поэтому в /etc/php5/apache2/php.ini надо изменить лимит памяти.
memory_limit = 256M
Drush Разрабатывать сайты на Drupal и не использовать drush? Так не бывает! Утилита настолько же мощная, насколько и необходимая. Ставим:
sudo apt-get install -y drush
drush status
Получаем ошибку:
The following restricted PHP modes have non-empty values:            [error]
disable_functions. This configuration is incompatible with drush.
Please check your configuration settings in /etc/php5/cli/php.ini or
in your drush.ini file; see examples/example.drush.ini for deta
Без паники! Просто отредактируйте конфиг /etc/php5/cli/php.ini
sudo mcedit /etc/php5/cli/php.ini
и закомментируйте переменную disable_functions.

Добавление виртуальных хостов

В конце статьи вы можете скачать простой скрипт a2addsite.sh, который добавляет виртуальные хосты в апач. Скачайте, переименуйте в .sh, положите в любую удобную папку. Отредактируйте! В начале файла надо изменить имя пользователя и, возможно, каталог с сайтами. Запуск простой, для добавления сайта my-develop-site.dev:
sudo sh a2addsite.sh my-develop-site.dev
Теперь в браузере открываем (иногда браузер требуется перезапустить после добавления домена) http://my-develop-site.dev/ , каталог сайта ~/www/my-develop-site.dev/www. В ~/www/my-develop-site.dev лежат логи access.log и error.log. Все. В результате имеем свой сервер для web разработки, быстрый и легкий. Добавление новых сайтов в апач автоматизировано. P.S. Спасибо мужу за любезно предоставленные буквы ツ
5

Comments

foreach's picture
foreach

Добрый день

Статья очень вовремя.
Решил переехать на linux, довольно давно. Процесс затянулся.
Постоянно возникали проблемы с новым железом, в семействе убунт, версия 13.10 стала первой подходящей.
Однако есть несколько вопросов.
Почему описывается работа через tasksel ?
Не возникнет ли с ним проблем, при удалении компонентов ?
Чисто случайно наткнулся на комментарии с проблемами и критикой такого подхода.
Да и однообразие статьи нарушается. Все описываеся подробно, а тут вдруг решили упростить.

git разве не установлен на убунтах по умолчанию ?
php5-sqlite просто чтобы был ?
Откуда информация о Zend Opcache и MyISAM, можете показать ссылки на обсуждения ?

Спасибо

Дмитрий Шерсков's picture
Дмитрий Шерсков

Добрый день. Отвечу как автор статьи :)

Через tasksel ставлю всегда, так быстрее. В одну строку ставятся все основные компоненты, потом "допиливается напильником". Проблем с удалением никогда не возникало.

git есть в сборке ubuntu-server, в ubuntu-desktop нет, насколько помню

php5-sqlite ставлю, т.к. иногда делаю сборку друпала на sqlite для визиток ;)

Про MyISAM. Почитать тут, тут, и тут, конечно.

Про Zend например тут и в гугле

Alexei's picture
Alexei

Спасибо огромное!
Все получилось, у меня была сохранена устаревшая инфа по настройке сервака и уже замучился дрикаться с серваком.

toshic's picture
toshic

Подскажите пожалуйста как прописать ярлык на phpmyadmin,так как по пути http://mysite.dev/phpmyadmin не открывается.

toshic's picture
toshic

Всё, разобрался.)