Apache HTTP Server (Русский)

From ArchWiki
Revision as of 21:56, 3 August 2007 by Progdan (Talk | contribs)

Jump to: navigation, search

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end (This wiki post copied from: http://bbs.archlinux.org/viewtopic.php?t=2409)

Apache, PHP, и MySQL

Этот документ описывает, как поставить веб-сервер Apache на Arch Linux. Также он описывает, как дополнительно установить PHP и MySQL и встроить их в Apache-сервер.

Установка пакетов

# pacman -Sy
# pacman -S apache
# pacman -S php
# pacman -S mysql

Если вы хотите, вы можете установить только apache, apache и php, или всё. Этот документ описывает установку всех трёх составляющих, но если вы хотите, вы можете остановиться после любой из команд.


Настройка Apache

  • Добавьте строку в /etc/hosts (Если файла не существует, создайте его)
127.0.0.1  localhost.localdomain   localhost

Note: если вы хотите другое имя хоста, добавьте его в конец строки:

127.0.0.1  localhost.localdomain   localhost myhostname
  • Редактирование /etc/rc.conf:

Если вы установили имя хоста в первом шаге, имя хоста должно совпадать. например localhost:

#
# Networking
#
HOSTNAME="localhost"
  • Запустите через терминал (от имени root):
# /etc/rc.d/httpd start
  • Apache должен запуститься. Протестируйте, введя http://localhost/ в веб-браузере. Он покажет простую домашнюю страницу Arch Linux.
  • Редактирование /etc/rc.conf (для старта Apache при загрузке):
DAEMONS=(... другие сервисы ... httpd)

Или добавьте эту строку в rc.local:

/etc/rc.d/httpd start
  • Если вы хотите чтобы папка юзера (например: ~/public_html на машине будет доступна как http://localhost/~user/) была доступна через веб, раскомментируйте следующие строки в /etc/httpd/conf/extra/httpd-userdir.conf:
UserDir public_html

и

<Directory /home/*/public_html>
  AllowOverride FileInfo AuthConfig Limit Indexes
  Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI
  <Limit GET POST OPTIONS PROPFIND>
    Order allow,deny
    Allow from all
  </Limit>
  <LimitExcept GET POST OPTIONS PROPFIND>
    Order deny,allow
    Deny from all
  </LimitExcept>
</Directory>

У вас должны быть правильно выставлены права на директорию, чтобы apache смог брать данные. Ваша домашняя директория ~/public_html/ должна быть "запускаема" для всех ("rest of the world"). Этого будет достаточно:

$ chmod o+x ~
$ chmod o+x ~/public_html

Здесь может быть что-нибудь ещё, более безопасные пути установки прав на доступ созданием специальной группы и разрешение только apache и вам входить туда... Вы сами знаете, какой вы параноик :)

Configure PHP4 & PHP5

PHP сейчас доступен из коробки.

  • Раскомментируйте эти строки в /etc/httpd/conf/httpd.conf
#LoadModule php5_module lib/apache/libphp5.so
потом, для PHP4, просто замените 4 на 5
LoadModule php4_module lib/apache/libphp4.so
  • Для заголовочных файлов PHP5 уже сделаны настройки
<IfModule mod_php5.c>
 DirectoryIndex index.php index.html
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php-source .phps
</IfModule>

DirectoryIndex index.html index.html.var
Также, для поддержки PHP4 вам необоходимо сделать следующее:
#<IfModule mod_php5.c>
 DirectoryIndex index.php index.html index.html.var
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php-source .phps
#</IfModule>

#DirectoryIndex index.html index.html.var
  • Также для использования PHP4 или PHP5 надо добавить расширение .phtml если это необходимо
DirectoryIndex index.php index.phtml index.html
  • Перезапустите Apache Server для того, чтобы изменения применились (как root):
# /etc/rc.d/httpd restart
  • Протестируйте PHP с помощью простого, но очень информативного скрипта:
<html>
<head>
<title>PHP Test Page</title>
</head>

<body>
This is Arch Linux, running PHP.

<?php
  phpinfo();
?>
</p>
</body>
</html>

Сохраните этот файл как test.php и скопируйте в /home/httpd/html/ или в ~/public_html если вы указали это в конфигурации. Также надо сделать его запускаемым (chmod a+x test.php).

  • Тестирование PHP:
 http://localhost/test.php или http://localhost/~myname/test.php

Установка поддержки MySQL

Делайте это, если вам нужна поддержка MySQL

Начальная настройка
  • Отредактируйте /etc/php.ini (это в /usr/etc на старых системах) раскомментируйте следующие строки:

;extension=php_mysql.dll

и измените на следующее:

extension=mysql.so

  • Для настройки вашей системы сделайте /etc/rc.d/mysqld start как root ИЛИ сделайте следующие шаги самостоятельно:
  • Добавьте группу с именем mysql
# groupadd -g 89 mysql
  • Добавьте юзера с именем mysql
# useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql
  • измените владельца корневой папки MYSQL - её ещё может не существовать
# chown -R mysql:mysql /var/lib/mysql
  • Установка базы данных. Если вы хотите запускать mysql как root вы можете не применять опцию --user и изменять владельца
# mysql_install_db --datadir=/var/lib/mysql --user=mysql
# chown -R mysql:mysql /var/lib/mysql
  • запустите /etc/rc.d/mysqld start для старта mysql как Arch сервис.
Дополнительная настройка
  • Тестируем mysql (как root):
# mysql
  • Создайте root пароль для mysql (в терминале, как root):
# mysqladmin -u root password 'roots_password'
  • Добавьте mysqld в список сервисов в /etc/rc.conf (как для httpd выше)
  • Для входа в mysql, напишите (в терминале, hostname такой же, как в /etc/hosts)
# mysql -u root -h hostname -p
  • Вы можете добавить менее привелигерованного пользователя для доступа к редактированию таблиц в вашей базе данных mysql через веб-скрипты. Вы должны перезапустить mysql, чтобы применить изменения.
    Не забудьте проверить mysql/users таблицу. Если при повторном входе от имени root и с вашего хоста не был поставлен пароль, кто угодно с вашего хоста сможет получить полный доступ.
    Для подготовки к этим работам смотри следующую секцию.
  • Вы можете получить сообщение об ошибке "error no. 2013: Lost Connection to mysql server during query" при соединении к сервису mysql через TCP/IP. Это может быть система TCP wrappers (tcpd), которая использует систему hosts_access(5) для разрешения или запрета соединения.
  • Если у вас появилась данная ошибка, добавьте это в файл /etc/hosts.allow:
 # mysqld : ALL : ALLOW
 # mysqld-max : ALL : ALLOW
 # and similar for the other MySQL daemons.
  • Notes: Пример сверху говорит tcpd, чтоб разрешил все соединения отовсюду. Вы можете использовать более безопасные приёмы для доступа, просто замените ALL. Только удостоверьтесь, что localhost и IP адресс (численный или DNS) с которого вы соединяетесь разрешались для доступа.
  • Также может потребоваться редактирование /etc/my.cnf и изменение следующей строки:
  skip-networking

на

  #skip-networking

Настройка PHPMyAdmin

Если вы, или ваши пользователи желают использовать PHPMyAdmin для доступа к базам данных, вы можете это сделать:

  • Установка пакета
# pacman -S phpmyadmin
  • phpMyAdmin был изменен, сейчас доступно:
  • Создание директории для настроек:
# cd /home/httpd/html/phpMyAdmin/
# mkdir config
# chmod o+rw config
  • Создание файла настроек, посетите:
http://localhost/phpMyAdmin/scripts/setup.php
*Как минимум добавьте сервер в секцию "Servers". Используйте "cookie" для аутентификации  (user/password аутентификация).
*Сохраните файл настроек через веб-интерфейс в секции "Configuration".
  • Переместите файл настроек в директорию phpMyAdmin для использования:
# mv config/config.inc.php config.inc.php

---ИНСТРУКЦИИ ДЛЯ СТАРЫХ НАСТРОЕК---

  • Отредактируйте файл настроек в соответствии с вашими потребностями:
/home/httpd/html/phpMyAdmin/config.default.php
  • Поместите данную строку в переменную PmaAbsoluteUri, это будет выглядеть так
 $cfg['PmaAbsoluteUri'] = 'http://hostname/phpMyAdmin/';
  • Прочтите информацию о сервере mysql. В PHPMyAdmin, мульти-сервера должны быть описаны в массиве Servers. Для доступа к вашей базе данных mysql, вы можете сделать следующее; и пропустить остальные настройки.

На постоянной системе настройте доступ auth_type к http. Это потому что phpMyAdmin использует введённого пользователя и пароль для доступа к серверу mysql, он не должен быть главным пользователем mysql.

 $cfg['Servers'][$i]['auth_type']     = 'http';

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

  • Переименуйте файл настроек в:
/home/httpd/html/phpMyAdmin/config.inc.php

Note: Необходимо отредактировать файл .htaccess /home/httpd/html/phpMyAdmin/ и добавить строку allow from all или allow from 127.0.0.1 или адрес, с которого должен быть доступ к http://localhost/phpMyAdmin/