Apache — это самый популярный веб-сервер. Его задача как и любого другого веб-сервера — отдавать контент на запросы клиенто в. Apache обладает большим функционалом за счет подключаемых модулей.
Установка
$ sudo pacman -S apache php php-apache mysql
Это наиболее популярный вариант установки. Таким образом мы получим небезызвестный LAMP — Linux + Apache + MySQL + PHP
Если вы не нуждаетесь в каком-либо из компонентов, не ставьте его.
Не забудьте установить пароль для пользователя MySQL. Для этого
необходимо запустить сервер командой systemctl start httpd.service
,
а затем выполнить следующее (на примере установки с выбором mariadb):
$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
# systemctl start mysqld.service
# mysql_secure_installation
Теперь если вы попробуете зайти без пароля, у вас ничего не выйдет:
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
При необходимости (забытый пароль или ещё какое-нибудь недоразумение), сбросьте настройки:
# mysqld_safe --skip-grant-tables &
Команды на вход с паролем и выход:
# mysql -u root -p
\q
Теперь проверим, есть ли в /etc/shadow
пользователь http
:
# cat /etc/shadow | grep http:
http:x:14871::::::
Если такой строки вами найдено не было, добавляем пользователя вручную:
# useradd -d /srv/http -r -s /bin/false -U http
Смотрим содержание нашего /etc/hosts
:
# /etc/hosts: static lookup table for host names
#
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost linux
Примечание: здесь и далее linux
- имя хоста, т.е. вашей машины
Имя хоста должно быть прописано в /etc/hostname
:
$ cat /etc/hostname
linux
Итак, если вы ещё не запустили Apache, пришло время сделать это:
# systemctl start httpd.service
Проверим его работоспособность, пройдя по ссылке в браузере: http://localhost/
Если всё нормально, вы увидите следующее изображение:
Что делать с PHP?
Измените /etc/httpd/conf/httpd.conf
:
# закомментировать строку
# LoadModule mpm_event_module modules/mod_mpm_event.so
# и добавить
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Для того чтобы обрабатывались *.php
файлы:
# версия php зависит от установленной вами (в примере php7)
# после строки LoadModule dir_module modules/mod_dir.so
# добавить
LoadModule php7_module modules/libphp7.so
# в список Include где-нибудь после строк
# Various default settings
Include conf/extra/httpd-default.conf
# добавить
Include conf/extra/php7_module.conf
Удостоверьтесь, что корневая директория веб-сервера (по-умолчанию /srv/http/
)
находи тся в списке open_basedir
файла /etc/php/php.ini
open_basedir=/srv/http/:/home/:/tmp/:/usr/share/pear/:/path/to/documentroot
После чего понадобится перезапустить веб-сервер:
# systemctl restart httpd.service
Пришло время проверить отображение php-файлов. Можно создать каталог public_html,
внутрь которого положить файл test.php
стандартного содержания:
<html>
<head>
<title>PHP</title>
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>
Если php работает, при помощи функции phpinfo()
будет выведена служебная информация.
MySQL
Для поддержки MySQL в /etc/php/php.ini
раскомментируйте следующие строку:
;extension=mysql.so
Запустите mysql, если это не было сделано раньше. Убедитесь,
что группа и пользователь mysql
существуют.
Права на корневую директорию mysql должны принадлежать соответствующему пользователю:
# ls -l /var/lib/mysql
итого 110700
-rw-rw---- 1 mysql mysql 16384 июн
-rw-rw---- 1 mysql mysql 52 июн
Если это не так, измените владельца:
# chown -R mysql:mysql /var/lib/mysql
Кстати, файл конфигурации mysql расположен в /etc/mysql/my.cnf
.
Установка базы данных
Если вы хотите запускать mysql от имени суперпользователя,
можете не применять опцию --user
и не изменять владельца
# mysql_install_db --datadir=/var/lib/mysql --user=mysql
# chown -R mysql:mysql /var/lib/mysql
Для запуска MySQL:
# systemctl start mysqld.service
Тестируем mysql (как root):
# mysql -u root -p
Задать пароль для mysql :
# mysqladmin -u root password 'пароль_root'
Для входа в mysql:
# mysql -u root -h linux -p
где linux - не забывайте! - имя вашего хоста.
Установка phpMyAdmin (не бязательно)
Следует установить нужные пакеты:
$ sudo pacman -S php-mcrypt phpmyadmin
После чего убедиться, что в конфигурационном файле php раскомментированы две строк и:
extension=mysqli.so
extension=mcrypt.so
extension=bz2.so
extension=zip.so
И исправить несколько файлов как указано ниже.
/etc/php/php.ini (добавить /etc/webapps)
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps
/etc/httpd/conf/extra/phpmyadmin.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
DirectoryIndex index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
/etc/httpd/conf/httpd.conf
# phpMyAdmin configuration
Include conf/extra/phpmyadmin.conf
Можно взглянуть на файл конфигурации phpmyadmin, но исправлять там ничего не нужно, в примерах ниже мы проведём настройку другим способом.
// /etc/webapps/phpmyadmin/config.inc.php
// хост
$cfg['Servers'][$i]['host'] = 'localhost';
// по-умолчанию не предоставляется доступ без пароля
$cfg['Servers'][$i]['AllowNoPassword'] = true;
// имя пользователя и пароль
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
phpMyAdmin настроим из веб-интерфейса. Чтобы это стало возможным в соответствии с документацией создадим директорию, доступную на запись пользователю httpd:
# cd /usr/share/webapps/phpMyAdmin
# mkdir config
# chgrp http config
# chmod g+w config
После чего можно перейти к настройкам по адреcу http://localhost/phpmyadmin/setup
.
Отредактируем файл/etc/webapps/phpmyadmin/.htaccess
# /etc/webapps/phpmyadmin/.htaccess
deny from all
Теперь, перезагрузив наш httpd
, можно войти в phpmyadmin
по адресу http://localhost/phpmyadmin
. Для входа от рута используйте логин
root
и пароль, заданный при настройке mysql.