Создание и настройка web сервера arch linux

Обновлено: 04.07.2024

После переезда с Ubuntu на Arch появилась необходимость настроить данную связку, однако, в отличие от Ubuntu, под Arch подобного мануала всё-в-одном не нашлось. Собрав идеи с разных руководств, включая те, что были написаны под Ubuntu, и решил написать на хабр такой цельный гайд.

Сразу хочу сказать, что это базовая установка, без виртуальных хостов в количестве n-штук, просто настройка для локальной разработки.

XAMPP мне не подошёл просто по идейным соображениям.

Итак, приступим.

Предполагается, что yaourt у вас уже установлен и вы хотя бы немного умеете им пользоваться, а также настроено выполнение root-команд от своего пользователя (ставим пакет sudo, потом раскомментируем строчку "%wheel ALL=(ALL) ALL" в файле /etc/sudoers и релогинимся; при выполнении команд с sudo пароль вводим от своего пользователя, а не от root'a).

Также перед непосредственно установкой, убедитесь, что у вас подключены extra- и community-репозитории.
Для этого:

sudo nano /etc/pacman.conf

И проверяем, чтобы секции этих репозиториев выглядели аналогично.

И синхронизируем списки пакетов.

Вначале поставим Apache и PHP и, соответственно, немного поправим конфиги.

sudo pacman -S apache php-apache
yaourt mod-rpaf

  1. Меняем «Listen 80» на «Listen 81», поскольку 80 порт будет слушать nginx.
  2. В секцию LoadModule добавляем 2 строчки.
    LoadModule rpaf_module modules/mod_rpaf-2.0.so
    LoadModule php5_module modules/libphp5.so
  3. Можете поменять электропочту в строке «ServerAdmin», хотя это опциональный пункт. Я обычно по привычке меняю.
  4. Чуть ниже идёт закомментированная строчка «ServerName» — раскомментируем и заменяем на «ServerName 127.0.0.1:81»
  5. Проверяем, чтобы в секции "<IfModule mime_module>" не была закомментирована строчка «TypesConfig conf/mime.types»
  6. Также расскомментируем строчку «MIMEMagicFile conf/magic»
  7. В секции "<IfModule dir_module>" заменяем приводим строчку с параметром «DirectoryIndex» к такому виду:
    DirectoryIndex index.php
  8. И наконец в конце файла дописываем.
    Include conf/extra/php5_module.conf
    RPAFenable On
    RPAFproxy_ips 127.0.0.1 10.0.0.1
    RPAFsethostname On
    RPAFheader X-Forwarded-For

Сохраняем файл (Ctrl + O) и выходим (Ctrl + X).

Теперь нам осталось второй конфигурационный файл Апача чуть-чуть изменить.

Меняем «Listen 80» на «Listen 81».

На этом с настройкой Apache мы закончили. Переходим к PHP.

sudo nano /etc/php/php.ini

Сохраняем файл (Ctrl + O) и выходим (Ctrl + X).

Далее для проверки создадим файл index.php. (Здесь вводим пароль не от своего пользователя, а от root'a.)

su -c "echo '<?php phpinfo(); ?>' > /srv/http/index.php"


Переходим к установке и настройке NGINX

Установим последнюю (dev-ветка) версию. Если же хотите стабильную — то просто вместо команды ниже напишите „sudo pacman -S nginx“.

И приведём вид конфига к следующему виду.

sudo nano /etc/nginx/conf/nginx.conf

И перезапускаем nginx.

sudo rc.d restart nginx

И последний этап — установка PerconaDB

Как известно, сама по себе MySQL далеко не самая шустрая БД, так что я обычно устанавливаю форк — PerconaDB. Поподробнее о фичах можете почитать на официальном сайте, от себя разве что скажу, что обратная совместимость с MySQL полная, так что неожиданных проблем не будет.

Эта инструкция расскажет вам о том, как установить одну из самых часто используемых связок в веб-разработке: LAMP (Linux, Apache, MySQL/MariaDB и PHP/PhpMyAdmin). Кроме подробной пошаговой инструкции по настройке сервера вам также будут представлены несколько замечательных возможностей (быстрых и грязных Bash скриптов), которые отсутствуют в системе Arch Linux, но которые могут облегчить работу по созданию множества виртуальных хостов, генерации SSL сертификатов и ключей, необходимых для безопасных транзакций HTTS.

Шаг 1: Установка базового программного обеспечения LAMP

1. Обновим нашу систему с помощью утилиты pacman.

2. Когда процесс обновления завершиться, установим LAMP по частям, начнём с установки веб-сервера Apache Web Server и запустим/проверим демон каждого серверного процесса.


3. Установим динамический скриптовый язык на стороне сервера PHP и его модуль для Apache.

4. Последним шагом установим систему управления базами данных MySQL, выберите вариант 1 (MariaDB) – форк от сообщества.

Запустите и проверьте статус демона.


Не запутайтесь. Мы устанавливаем MariaDB, но она настолько совместима с MySQL, что служба запускается аналогичной командой. Аналогичной же командой производится подключение к БД. Вы можете установить оригинальную MySQL из AUR – если это кому-то интересно, то пишите в комментариях и материал будет добавлен.

Теперь мы имеем установленное базовое программное обеспечение LAMP с настройками по умолчанию.

Шаг 2: Обезопасим СУБД MySQL

5. Следующим шагом обезопасим СУБД MySQL настроив пароль для аккаунта root, удалив анонимные пользовательские аккаунты, удалив тестовую базу данных и отключив удалённый вход для пользователя root (когда попросят ввести текущий пароль, то просто нажмите клавишу [Enter] затем введите два раза новый пароль, на все вопросы выбирайте ответы по умолчанию, т.е. Да).

6. Проверьте подключение к базе данных MySQL следующей командой, для выхода наберите quit или exit.

Шаг 3: Модификация главного конфигурационного файла Apache

Для начала откройте конфигурационный файл Apache вашим любимым текстовым редактором.

И в низ этого файла добавьте следующие две строки.

После того, как Apache был проинструктирован этими двумя директивами, создайте необходимые системные директории следующими командами.

Путь sites-available содержит файлы настроек всех виртуальных хостов, которые не активированы на Apache, но следующий скрипт Bash будет использовать эту директорию для связи и задействования веб-сайтов, которые там расположены.

Шаг 4: Создание команд Apache a2eniste и a2diste

9. Теперь время создать скрипты Apache a2ensite и a2dissite, которые будут выполнять команды по включению и отключению файлов настроек виртуальных хостов. Наберите команду cd для возвращения в вашу домашнюю директорию и создайте a2eniste и a2dissite используя ваш любимый редактор.

Добавьте следующие содержимое в этот файл.

Теперь создайте файл баш скрипта a2dissite.

Добавьте следующее содержание.

После того, как файлы были созданы, назначьте им права выполнения и скопируйте их в директорию для исполнимых файлов, чтобы они были доступны во всей системе.

10. Установка ServerName для подавления предупреждения

Откройте главный конфигурационный файл текстовым редактором:

Внутри, в конце файла добавьте директиву ServerName, указывающую на ваше основное доменное имя. Если у вас нет связанного с вашим сервером доменного имени, вы можете использовать внешний IP сервера:

Если вы забыли внешний IP сервера, то проверить его можно так:

Для локального веб-сервера можно сделать следующую запись:

Когда закончите, сохраните и закройте файл.

Для того, чтобы изменения вступили в силу, перезапустите Apache:

Шаг 5: Создание виртуальных хостов в Apache

Использование путей sites-available и sites-enable, здорово упрощает работу по включению и отключению веб-сайтов и также сохраняет конфигурационные файлы всех веб-сайтов в независимости от того, активированы они или нет.

Здесь добавьте следующие директивы Apache.


Шаг 6: Включение SSL с виртуальным хостингом на LAMP (опционально)

Этот шаг можно пропустить. На локальном сервере (localhost) этот шаг рекомендуется пропустить.

Но для упрощения, мы собираемся создать новый модульный файл для SSL в директории mods-enabled, главный конфигурационный файл Apache оставить нетронутым. Создайте следующий файл для модуля SSL и добавьте следующее содержимое.

15. Теперь создайте файл виртуального хоста, который указывает на то же самое имя localhost, но использует в это же время конфигурационный файл сервера SSL и слега измените его имя на то, которое бы напоминало вам, что он здесь для localhost с SSL.

Добавьте следующее содержимое в этот файл.

Кроме директив Port и ServerName, другие важные директивы это указание на файл сертификата SSL и файл ключей SSL, которые ещё не созданы, поэтому не перезапускайте веб-сервер Apache или вы получите ошибки.

16. Для создания требуемых файлов сертификата SSL установите пакет OpenSSL набрав нижеприведённую команду.

Добавьте в этот файл следующий контент, сохраните его и сделайте исполнимым.

Если вы хотите, чтобы этот скрипт был доступен во всей системе по короткой команде, то сделайте так.

18. Теперь сгенерируйте ваш сертификат и ключи запустив этот скрипт. Предоставьте ваши SSL опции и не забудьте чтобы имя сертификата и общее имя соответствовали вашему официальному имени домена (FQDN).

После того, как сертификат был создан, не забудьте изменить ваши настройки виртуального хоста для SSL: путь до сертификата и ключа, чтобы они соответствовали имени этого сертификата.

Для соответствия вышеприведённым настройкам, переименуем файлы сертификатов:

19. Последний шаг – это активация нового виртуального хоста SSL и перезапуск сервера, чтобы изменения вступили в силу.

Шаг 7: Включение PHP 7 на Apache

20. По умолчанию сервер Apache в Arch Linux обслуживает только содержимое статичных HTML файлов без поддержки динамических скриптовых языков. Для активации PHP начните с открытия главного конфигурационного файла Apache, найдите и закомментируйте следующую строку LoadModule (php-apache не работает с mod_mpm_event в Arch Linux).

Для поиска используйте /.

Найдите и раскомментируйте строку:

Добавьте в точности следующий контент (вы должны использовать mod_mpm_prefork).

Чтобы подключить PHP к Apache создайте символьную ссылку:


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

Шаг 8: Установка и настройка PhpMyAdmin

23. Если вы не мастер по командной строке MySQL и хотите простой удалённый доступ к СУБД MySQL через веб-интерфейс, тогда вам нужен установленный пакет phpMyAdmin на ваш Arch.

24. После того, как пакеты были установлены вам нужно включить некоторые расширения PHP (mysqli.so) и вы также можете включить другие модули, которые необходимы для будущих платформ CMS, к примеру openssl.so, imap.so или iconv.so и т.д..

Найдите и раскомментируйте следующие расширения.

В этом же файле найдите строку

если она закоментирована, то раскоментируйте её, чтобы получилось

28. Включение дополнительных возможностей phpMyAdmin. Это необязательно, но для получения дополнительной функциональности и отсутствия предупреждений, добавьте в файл /etc/webapps/phpmyadmin/config.inc.php строку

И импортируйте файл /usr/share/webapps/phpMyAdmin/sql/create_tables.sql.

Шаг 9: Включение LAMP при загрузке

29. Если вы хотите, чтобы стек LAMP загружался автоматически после перезагрузки системы, то выполните следующую команду.

Здесь были описаны главные конфигурационные настройки LAMP, которые нужны для превращения вашей системы на Arch Linux в простую, но мощную и крепкую веб-платформу с самым последним серверным программным обеспечением для маленький некритичных окружений. Но для использования в рабочем окружении вам нужно продолжить изучение опций и особенностей обслуживания веб-серверов, уделять особое внимание обновлению пакетов и делать регулярное резервное копирование образов для быстрого восстановления системы в случае аварий.

В данной статье я расскажу как происходит базовая установка и настройка Arch Linux в качестве сервера.

Загрузка ISO образа и запись диска

Загрузить ISO образ можно с официального сайта Arch Linux

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

Также можно загрузить образ на флешку.

После записи диска/флешки, вставьте его и дождитесь загрузки диска:

Окно загрузки Arch Linux

01_Select_Arch_linux_x86_64

В данном окне выберите Boot Arch Linux (x86_64)

Подключение будущего сервера к интернету

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

Проще всего проверить это выполнив команду ping:

02_check_internet_connection

Создание и монтирование разделов жесткого диска

03_select_label_type_dos

В моем случае у меня был диск на 80гб:

04_create_new_partition_for_free_space

Создадим / (корневой) раздел, размером 76гб:

05_create_partition_for_root

Создадим swap раздел (4гб):

06_create_partition_for_swap

Создадим файловую систему на корневом / разделе. Для этого отформатируем его в файловую систему ext4:

07_format_root_partition_with_ext4

Отформатируем раздел /dev/sda2 , для создания swap:

Подключим swap:

08_format_swap_partition

Примонтируем корневой раздел (/dev/sda1) в /mnt:

Установка базовой системы

Перед установкой вы можете изменить файл /etc/pacman.d/mirrorlist , для указания предпочтительных серверов обновлений:

09_mirrorlist

Также копия этого файла будет установлена в вашу систему.

Далее, установим базовую систему с помощью pacstrap. Если вы собираетесь компилировать ПО из AUR, также установите группу пакетов base-devel.

10_Install_the_Base_System

Генерация fstab

Сгенерируем файл fstab с UUID в качестве имен устройств:

Проверим правильность сгенерированного fstab:

11_generate_fstab

Войдем (chroot) в свежеустановленную, но не настроенную систему:

Настройка интернет соединения

Для начала узнаем имя сетевой карты сервера:

17_configure_network_connection1

В нашем случае это enp0s3. Попытаемся получить IP автоматически, используя DHCP:

Установка языка, часового пояса и прочих настроек

В этом шаге зададим язык системы, время, дату и часовой пояс.

Для начала откроем файл /etc/locale.gen:

13_setting_language

После чего сгенерируем выбранные локали:

Укажем язык по умолчанию:

Для русской локали следует заменить en_US.UTF-8 на ru_RU.UTF-8

14_generate_languages

Далее укажем часовой пояс, но перед этим найдем наш часовой пояс (в статье будет использован часовой пояс America/New_York):

15_setting_time_zone

Например, для России и московского времени это будет часовой пояс Europe и подпояс Moscow.

Создадим ссылку на выбранный часовой пояс:

Настроим системные часы:

Установка репозитория Arch Linux

Настроим репозиторий Arch Linux, для этого откроем файл /etc/pacman.conf

Включим репозиторий multilib, он нужен, если вы на 64-битной версии захотите запустить 32-битные приложения. Для включения репозитория нужно раскомментировать строки:

Добавим неофициальный репозиторий:

16_setting_repository

Сохраним изменения и обновим репозиторий Arch Linux:

Настройка имени сервера (hostname)

Запишем нужное имя сервера в файл /etc/hostname:

Например:

Замените archserver на нужное вам имя.

Проверим установленное имя:

12_setting_hostname1

Создание пользователя и выдача sudo привилегий

Теперь нам нужно создать пользователя. Этот пользователь должен будет подключаться к серверу, дадим ему sudo привелегии, для выполнения задач от имени администратора:

Например:

Далее установим sudo и bash-completion:

Откроем файл /etc/sudoers

найдем и раскомментируем следующую строку:

Указание пароля для root пользователя

Укажем пароль для root пользователя:

И введем новый пароль 2 раза

Установка SSH сервера

Установим SSH сервер:

Добавим его в автозагрузку:

Установка и настройка загрузчика GRUB

Установим пакеты grub и os-prober:

Установим grub на жесткий диск:

Создадим файл конфигурации GRUB:

Выход из системы(chroot) и отмонтирование файловой системы

Выйдем из chroot сессии:

Отмонтируем файловую систему:

Перезапустим Arch Linux:

Подключение по SSH

Теперь мы можем подключиться к нашему серверу по SSH:


Шаг 1. Обновите систему Arch Linux / Manjaro

Начнем установку с обновления системы:

После обновления системы выполните установку веб-сервера Apache:

Установить имя сервера:

После установки запустите веб-сервер Apache:

Подтвердим статус услуги:

Шаг 3: Установите PHP в Arch Linux / Manjaro Linux

Выполните следующие команды, чтобы установить PHP и базовые расширения в Arch Linux / Manjaro:

Раскомментируйте следующие строки в /etc/php/php.ini для расширений MySQL / MariaDB:

Шаг 4: Установите сервер базы данных MariaDB

Далее идет установка сервера базы данных MariaDB на Arch Linux / Manjaro:

Инициализируйте сервер базы данных, используя следующие команды:

Запустите и включите службу MariaDB:

Защитите свой сервер базы данных:

Откройте оболочку MySQL от имени пользователя root:

Создайте базу данных для WordPress, пользователя и предоставьте права:

Не забудьте изменить имя пользователя и базы данных WordPress соответственно.

Шаг 5: Загрузите WordPress в Arch Linux / Manjaro

Загрузите последнюю версию WordPress:

Распакуйте скачанный файл:

Создайте файл конфигурации:

Измените файл и предоставьте сведения о подключении к базе данных:

Установите права доступа к корневому веб-каталогу:

Измените файл VirtualHost, чтобы он выглядел, как показано ниже:

Поместите это в конец списка Включить:

Шаг 6. Настройте WordPress из веб-консоли

Введите необходимую информацию и нажмите кнопку «Установить WordPress» . Если все пойдет хорошо, вы должны получить страницу входа.

Нажмите «Войти» и укажите имя пользователя и пароль.

При входе в систему вы должны попасть на панель администратора WordPress.

Заключение

Мы рассмотрели, как настроить WordPress и настроили в Arch Linux все необходимое для запуска и размещения сайта WordPress. Теперь вы можете настроить WordPress и добавить любой плагин, который хотите, но будьте осторожны с количеством подключаемых плагинов, которые вы активируете, поскольку они могут серьезно повлиять на ваш сайт.

Читайте также: