Установка и настройка LAMP (Linux, Apache, MySQL, PHP) в Fedora

Где-то на заре этого сайта я писал о том, как сделать то же самое в Ubuntu. Сейчас моей системой по умолчанию является Fedora 16 64. Следовательно, пришло время переписать этот man. В те годы на Ubuntu установка всего этого хозяйства была плевым делом, но Fedora — это другое…

Почти все команды, используемые в статье, нужно выполнять с root-привилегиями.

Установка Apache

В программе «Установка и удаление программ» ставим:

  • httpd

Зависимости по традиции ставятся автоматически. Apache установлен, теперь нужно запустить и активировать автозагрузку его сервиса:

systemctl start httpd.service
systemctl enable httpd.service

Проверим работоспособность, набрав в браузере адрес: localhost. В случае успеха вы увидите страницу с логотипом Fedora, а в случае ошибки ничего не увидите.

Установка PHP

Интересующий нас пакет:

  • php

Во время установки PHP по зависимости установился пакет php-cli. Он позволяет использовать PHP в командной строке, если вкратце. С его помощью мы можем протестировать работу PHP, «не отходя от кассы». Открываем «Терминал», вводим и запускаем следующее:

php -r 'echo phpinfo();'

В ответ получим информацию о PHP, если, конечно, установка прошла успешно.

Установка MySQL

Нужные пакеты:

  • mysql-server
  • phpmyadmin

mysql-server — сам MySQL сервер
phpmyadmin — удобнейшая программа для администрирования баз данных

Назначить новый пароль на root-аккаунт можно командой:

mysqladmin -u root password ваш-пароль

Запуск и активация автозагрузки MySQL:

systemctl start mysqld.service
systemctl enable mysqld.service

Настройка Apache: использование виртуальных хостов, основанных на имени

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

Для начала сделаем виртуальные хосты (адреса сайтов, если хотите), на которых будут работать будущие сайты. Хосты хранятся в специально предназначенном для этого файле hosts, который находится в каталоге /etc — /etc/hosts. В этот файл добавим приблизительно следующее:

127.0.0.1 имя-вашего-сайта имя-другого-сайта

В качестве имен можно использовать все то, из чего обычно состоят имена сайтов (Капитан очевидность. — Прим. ред.).

Теперь свяжем адреса и, собственно, файлы, которые будут там работать. Для этого создадим файл /etc/httpd/conf.d/vhosts.conf. Добавим в него следующие строки:

NameVirtualHost 127.0.0.1
ServerName localhost

<VirtualHost 127.0.0.1>
    DocumentRoot /home/имя-вашего-профиля/www/имя-вашего-сайта
    ServerName имя-вашего-сайта
</VirtualHost>

<VirtualHost 127.0.0.1>
    DocumentRoot /home/имя-вашего-профиля/www/имя-другого-сайта
    ServerName имя-другого-сайта
</VirtualHost>

AddDefaultCharset utf-8

NameVirtualHost — обязательная директива для использования виртуальных хостов, основанных на имени. В качестве параметра указывается IP-адрес, на который сервер будет получать запросы на наши виртуальные хосты
VirtualHost — контейнер, в котором хранятся директивы для определенного IP-адреса или хоста. В нашем случае IP-адрес должен совпадать с тем, который указан в директиве NameVirtualHost
DocumentRoot — папка, которую сервер будет использовать при ответе на запрос. В ней, например, могут быть файлы WordPress, Drupal, либо ваши собственные скрипты
ServerName — имя сервера. Должно соответствовать тому, которое записано в файле /etc/hosts
AddDefaultCharset — устанавливает кодировку по умолчанию. В нашем случае utf-8

Apache mod_rewrite

Мод работает «из коробки», но настройки сервера не позволяют нам использовать его прямо сейчас. Для исправления ситуации открываем и правим главный файл конфигурации Apache — /etc/httpd/conf/httpd.conf. Меняем:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

На:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

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

Apache полностью настроен. Чтобы все наши изменения вступили в силу, перезапускаем сервер командой:

systemctl restart httpd.service

Политики SELinux

Хотя мы и настроили все что необходимо, работать ничего не будет. Дело в том, что Fedora использует SELinux — нечто вроде дополнительного контроля доступа. В этой системе нам нужно разрешить Apache делать некоторые вещи. Хотя, возможно, проще выключить весь этот SELinux. Первое. Разрешить использовать файлы из /home-директории:

setsebool -P httpd_enable_homedirs 1

И второе. Разрешаем Apache изменять файлы:

setsebool -P httpd_unified 1

Как оказалось, и третье. Доступ к пользовательскому контенту:

setsebool -P httpd_read_user_content 1

Четвертое. Доступ в интернет для Apache:

setsebool -P httpd_can_network_relay 1

Пятое, последнее. Работа Apache через прокси:

setsebool -P httpd_can_network_connect 1

Права на папку с нашим профилем

Это последнее действие, которое надо сделать. Установим права 711, чтобы Apache мог получить доступ к файлам, которые лежат в папке нашего профиля:

cd /home
chmod 711 имя-вашего-профиля

Вуаля! Легко и просто (сарказм).

2011-11-17 22:58
Комментариев: 0

Написать комментарий

Сперва представьтесь: