Нашим сотрудником опубликована статья по настройке веб-сервера с операционной системой Debian Squeeze и установке CMS Drupal. В статье рассмотрена установка и базовая настройка Apache, MySql и Php. Статья будет интересна специалистам, которые хотят перейти с shared хостинга на выделенный сервер.
Сегодня рассмотрим настройку веб-сервера "с нуля" и установку на него CMS Drupal. На сервере c Linux Debian Stretch/ Ubuntu будем настраивать стандартный набор Apache, MySql, Php и базовую настройку Drupal. Конфигурацию Apache, MySql, Php рассмотрим по умолчанию и изменять не будем.
В дальнейшем рассмотрим более тонкую настройку этого набора. У нас уже имеется сервер, с установленным Debian, и root пароль ssh для доступа к серверу, поэтому приступим. Наш сайт будет иметь адрес: drupaladmin-example.com
Примечание: Предварительно на DNS сервере для вашего домена должна быть создана A запись с ip адресом веб-сервера. Если домен еще не зарегистрирован, то можно настроить через файл hosts:
В Windows: c:\windows\system32\drivers\etc\hosts В Linux: /etc/hosts
Подготовка сервера
Нам понадобится консольный редактор, я частенько использую nano, поэтому устанавливаем текстовый редактор:
root@server:~# apt-get install nano
Создаем пользователя, который будет работать с сайтом, назовем его webmaster
root@server:~# adduser webmaster
Задаем пароль, отвечаем на все вопросы и пользователь готов к работе.
Подключаемся к серверу под пользователем webmaster и создаем структуру каталогов в домашней папке пользователя webmaster:
webmaster@server:~$ mkdir domains domains/tmp domains/drupaladmin-example.com domains/drupaladmin-example.com/logs domains/drupaladmin-example.com/html
В каталоге ~/domains/drupaladmin-example.com/html — будет лежать наш сайт. В каталоге ~/domains/drupaladmin-example.com/logs — будут лежать логи веб-сервера, относящиеся к нашему сайту. В каталоге ~/domains/tmp — временный каталог для Drupal. Даем полный доступ ~/domains/tmp:
webmaster@server:~$ chmod 777 /home/webmaster/domains/tmp
Установка Apache, MySql, PHP
Подключаемся к серверу под пользователем root.
Обновляем индексные файлы пакетов Debian под пользователем root:
root@server:~# apt-get update
Устанавливаем весь софт:
root@server:~# apt-get install apache2 mysql-server php7.0 php7.0-mysql php7.0-gd
Не забываем указывать пароль доступа root к mysql.
Настройка виртуального хоста Apache
Документацию по виртуальным хостам можно посмотреть на сайте Apache.org Всю настройку на этом этапе делаем под пользователем root Создаем файл /etc/apache2/sites-available/drupaladmin-example.com.conf:
root@server:~# nano /etc/apache2/sites-available/drupaladmin-example.com.conf
Cодержание файла:
Для Apache 2.2:
<VirtualHost *:80>
ServerAdmin info@drupaladmin-example.com
ServerName www.drupaladmin-example.com
ServerAlias drupaladmin-example.com
DocumentRoot /home/webmaster/domains/drupaladmin-example.com/html
<Directory /home/webmaster/domains/drupaladmin-example.com/html>
Options -Indexes +FollowSymLinks
AllowOverride all
order allow,deny
allow from all
</Directory>
ErrorLog /home/webmaster/domains/drupaladmin-example.com/logs/apache_errors.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
# LogLevel warn
CustomLog /home/webmaster/domains/drupaladmin-example.com/logs/apache_access.log combined
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>
Для Apache 2.4:
<VirtualHost *:80>
ServerAdmin info@drupaladmin-example.com
ServerName www.drupaladmin-example.com
ServerAlias drupaladmin-example.com
DocumentRoot /home/webmaster/domains/drupaladmin-example.com/html
<Directory /home/webmaster/domains/drupaladmin-example.com/html>
AllowOverride All
Options -Indexes +FollowSymLinks
Require all granted
</Directory>
ErrorLog /home/webmaster/domains/drupaladmin-example.com/logs/apache_errors.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
# LogLevel warn
CustomLog /home/webmaster/domains/drupaladmin-example.com/logs/apache_access.log combined
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>
Разрешаем серверу использовать этот виртуальный хост:
root@server:~# a2ensite drupaladmin-example.com
Активируем модуль Rewrite для чистых ссылок в Drupal
a2enmod rewrite
Перезагружаем конфигурацию Apache:
root@server:~# /etc/init.d/apache2 reload
Создание базы MySql
Подключаемся к mysql под пользователем root c вводом ранее заданного пароля:
mysql -uroot -p
Создаем базу данных drupal_admin и пользователя webmaster c паролем, например: dbpassword . Этот пароль приведен в целях обучения, поэтому на рабочих системах не забывайте использовать уникальные и сложные пароли.
CREATE DATABASE drupal_admin; GRANT ALL PRIVILEGES ON drupal_admin.* TO 'webmaster'@'localhost' IDENTIFIED BY 'dbpassword' WITH GRANT OPTION;
Выходим из клиента mysql используем команду quit. Наш сервер теперь готов к установке drupal.
Установка Drupal
Дальнейшие действия выполняем под пользователем webmaster.
Подробная инструкция по установке Drupal 7 - https://www.drupal.org/docs/7/install
Подробная инструкция по установке Drupal 8 - https://www.drupal.org/docs/8/install
Скачиваем с drupal.org последний релиз Drupal.
Для Drupal 7
webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ wget http://ftp.drupal.org/files/projects/drupal-7.59.tar.gz -O drupal.tar.gz
Для Drupal 8
webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ wget https://ftp.drupal.org/files/projects/drupal-8.5.5.tar.gz -O drupal.tar.gz
Разархивируем архив и переносим все файлы в каталог /home/webmaster/domains/drupaladmin-example.com/html:
webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ tar xvfz drupal.tar.gz
После разархивации в текущей папке будет папка вида drupal-x.x , где x.x скачанная версия drupal.
Далее перемещаем файлы:
webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ mv drupal-x.x/* ./ webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ mv drupal-x.x/.* ./ webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ rm drupal.tar.gz webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ rmdir drupal-x.x webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ chmod -R 777 sites/default/files webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ cp sites/default/default.settings.php sites/default/settings.php webmaster@server:/home/webmaster/domains/drupaladmin-example.com/html$ chmod 777 sites/default/settings.php
После этого из браузера заходим по адресу: http://drupaladmin-example.com/install.php и начинаем установку drupal.
В качестве базы данных указываем drupal_admin, имя пользователя webmaster, пароль dbpassword
Каталог для временных файлов устанавливаем в /home/webmaster/domains/tmp
В результате мы получили готовый к работе сервер с установленным drupal.
Возможен вариант совместного использования Apache и Nginx для снижения нагрузки на сервер. В базовой конфигурации Nginx может использоваться как фронтенд для раздачи статического контента, а Apache — для обработки PHP-запросов. Такая схема показывает наилучшие результаты при корректно настроенном кэшировании и высокой доле статики.
При развёртывании сайта на VDS важно учитывать контекст выполнения команд. Ошибка при создании каталогов, как правило, возникает из-за выполнения команд не из домашнего каталога пользователя. Все операции по созданию структуры сайта следует выполнять из /home/webmaster, предварительно перейдя в этот каталог.
Для каждого сайта в Apache требуется отдельный VirtualHost. Если используется поддомен, который указывает на тот же сайт, достаточно добавить его в ServerAlias. В случае мультисайтинга Drupal дополнительных VirtualHost не требуется — достаточно перечислить домены, а сам Drupal корректно обработает структуру сайтов.
Типичные ошибки Apache при запуске чаще всего связаны с некорректным копированием конфигурации или незакрытыми секциями. После исправления подобных опечаток сервер запускается корректно. Также стоит учитывать, что базы данных с дефисами в именах не создаются, поэтому рекомендуется использовать подчёркивания.
При установке Drupal вручную возможны предупреждения о недостающих каталогах files и settings.php. В отличие от локальных сборок (например, XAMPP), на сервере их необходимо создать вручную и корректно выставить права. Аналогично, для корректной работы требуется установка расширения GD (php-gd) и настройка временного каталога, доступного для записи.
Если основной домен сервера продолжает указывать на /var/www, а сайты пользователей — в домашних каталогах, это означает, что хост-нейм сервера привязан к дефолтному VirtualHost. Такая ситуация решается корректной настройкой VirtualHost для основного домена или его отключением.
При ошибках 403 Forbidden и некорректной обработке URL без index.php необходимо проверить включение mod_rewrite, корректность .htaccess и права доступа. Перед настройкой Nginx важно убедиться, что Apache полностью работоспособен сам по себе, например при обращении напрямую к порту 8080.
При использовании Nginx как фронтенда важно правильно настроить проксирование PHP-запросов. Некорректная конфигурация может привести к тому, что PHP-файлы будут отдаваться как обычный текст. Это критическая ошибка и требует обязательной передачи PHP-запросов в Apache или PHP-FPM.
Ошибки с загрузкой изображений и временными файлами (open_basedir restriction) указывают на неправильно заданный каталог временных файлов. Необходимо указать корректный путь и убедиться, что он доступен для записи Apache.
Для повышения безопасности и удобства администрирования рекомендуется использовать отдельного пользователя для каждого сайта. Такой пользователь не должен иметь root-прав и используется исключительно для работы с файлами проекта. Apache при этом можно запускать от имени этого пользователя либо использовать специализированные MPM-модули для шаред-окружений.
При выборе операционной системы Debian является стабильным вариантом и может содержать более свежие версии ПО, чем Ubuntu LTS. Это нормально и не указывает на нестабильность. Выбор 64-битной версии системы зависит от объёма оперативной памяти и перспектив её расширения.
Вопросы масштабирования, резервного копирования, безопасности и производительности требуют отдельного рассмотрения, однако базовая рекомендация — начинать с VDS, а при росте нагрузки переходить на выделенный сервер. Большое значение имеет не только железо, но и архитектура самого Drupal-сайта.
В целом статья и подход к настройке сервера показали себя на практике как рабочие. Большинство возникающих проблем решаются внимательной проверкой конфигураций, прав доступа и последовательности настройки компонентов.
Добавить комментарий