После переезда с 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
И проверяем, чтобы секции этих репозиториев выглядели аналогично.
[extra]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist
[community]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist
И синхронизируем списки пакетов.
sudo pacman -Sy
Вначале поставим Apache и PHP и, соответственно, немного поправим конфиги.
sudo pacman -S apache php-apache
yaourt mod-rpaf
Теперь нам надо отредактировать /etc/httpd/conf/httpd.conf: включить 2 модуля для апача — rpaf и php5, плюс для rpaf добавить конфигурацию и ещё по-мелочи.
sudo nano /etc/httpd/conf/httpd.conf
- Меняем «Listen 80» на «Listen 81», поскольку 80 порт будет слушать nginx.
- В секцию LoadModule добавляем 2 строчки.
LoadModule rpaf_module modules/mod_rpaf-2.0.so
LoadModule php5_module modules/libphp5.so
- Можете поменять электропочту в строке «ServerAdmin», хотя это опциональный пункт. Я обычно по привычке меняю.
- Чуть ниже идёт закомментированная строчка «ServerName» — раскомментируем и заменяем на «ServerName 127.0.0.1:81»
- Проверяем, чтобы в секции "<IfModule mime_module>" не была закомментирована строчка «TypesConfig conf/mime.types»
- Также расскомментируем строчку «MIMEMagicFile conf/magic»
- В секции "<IfModule dir_module>" заменяем приводим строчку с параметром «DirectoryIndex» к такому виду:
DirectoryIndex index.php
- И наконец в конце файла дописываем.
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).
Теперь нам осталось второй конфигурационный файл Апача чуть-чуть изменить.
sudo nano /etc/httpd/conf/ports.conf
Меняем «Listen 80» на «Listen 81».
На этом с настройкой Apache мы закончили. Переходим к PHP.
sudo nano /etc/php/php.ini
- Настраиваем «post_max_size». Обычно, 60M хватает вполне, а то и много меньше — смотрите по ситуации. Аналогично настраиваем «upload_max_filesize» и «max_file_uploads».
- Включаем модули. Какого-то единственного решения тут не может быть, однако моего варианта под большинство нужд должно хватить (http://pastebin.com/cZwepL0T). Если какие-то дополнительные модули нужны, которых нет в списке — в первую очередь ищем в yaourt.
- Советую расскомментировать и настроить «date.timezone» (http://php.net/date.timezone).
- Раскомментируем строку «session.save_path = „/tmp“.
Сохраняем файл (Ctrl + O) и выходим (Ctrl + X).
Перезапускем apache.
sudo rc.d restart httpd
Далее для проверки создадим файл index.php. (Здесь вводим пароль не от своего пользователя, а от root'a.)
su -c "echo '<?php phpinfo(); ?>' > /srv/http/index.php"
После этого, если вы зайдёте по адресу http://localhost:81/, вы должны увидеть страничку с полной информацией о PHP и Apache. Что-то типа такого.
Переходим к установке и настройке NGINX
Установим последнюю (dev-ветка) версию. Если же хотите стабильную — то просто вместо команды ниже напишите „sudo pacman -S nginx“.
yaourt nginx-devel
И приведём вид конфига к следующему виду.
sudo nano /etc/nginx/conf/nginx.conf
Стираем всё и копируем всё отсюда — http://pastebin.com/2S8KnqkH.
И перезапускаем nginx.
sudo rc.d restart nginx
Теперь, можно заходить по 80 порту и вы тоже должны увидеть информацию о php, как это было раньше (http://localhost).
И последний этап — установка PerconaDB
Как известно, сама по себе MySQL далеко не самая шустрая БД, так что я обычно устанавливаю форк — PerconaDB. Поподробнее о фичах можете почитать на официальном сайте, от себя разве что скажу, что обратная совместимость с MySQL полная, так что неожиданных проблем не будет.
sudo pacman -S percona-server
И настроим пароль для административного пользователя PerconaDB.
mysql_secure_installation
Вот так мы получили достаточно шустрый конфиг локального веб-сервера. Надеюсь, данный топик окажется кому-то полезным.
p.s. если есть какие-то предложения по улучшению материала — пишем в комментариях.
p.p.s. не покидает меня ощущение, что секция „gzip_types“ в конфиге nginx'a не совсем оптимальна — так что тоже выслушаю предложения.
Забыл написать про автозагрузку служб при старте ОС
sudo nano /etc/rc.conf
И в самом низу файла в массив „DAEMONS“ дописываем:
@nginx @httpd @mysqld
Автор: arinoki