LAMP (Русский)
From ArchWiki
i18n |
---|
English |
Italiano |
Русский |
Česky |
Español |
(This wiki post copied from: http://bbs.archlinux.org/viewtopic.php?t=2409)
Contents |
Apache, PHP, и MySQL
Этот документ описывает, как поставить веб-сервер Apache на Arch Linux. Также он описывает, как дополнительно установить PHP и MySQL и встроить их в Apache-сервер.
Установка пакетов
# pacman -Sy # pacman -S apache # pacman -S php # pacman -S php-apache # 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. Если не запустился протестируйте настройку с помощью команды:
# apachectl configtest
- Редактирование
/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 и вам входить туда... Вы сами знаете, какой вы параноик :)
Настройка PHP4 и PHP5
PHP сейчас доступен из коробки.
- Раскомментируйте эти строки в
/etc/httpd/conf/httpd.conf
#LoadModule php5_module modules/libphp5.so
- потом, для PHP4, просто замените 4 на 5
LoadModule php4_module modules/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
- Если вам нужен модуль libGD, исправьте в
/etc/php/php.ini
:
;extension=gd.so
на
extension=gd.so
- Если ваш
DocumentRoot
находится вне директории/home/
, добавьте его вopen_basedir
в/etc/php/php.ini
как показано:
open_basedir = /home/:/tmp/:/usr/share/pear/:/path/to/documentroot
- Перезапустите 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/php.ini
(это в/usr/etc
на старых системах) раскомментируйте следующие строки:
;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 в качестве демона.
- запустите
Дополнительная настройка
- Тестируем 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
- PHPMyAdmin будет доступен через веб-адресс: http://localhost/phpMyAdmin/
---ИНСТРУКЦИИ ДЛЯ СТАРЫХ НАСТРОЕК---
- Отредактируйте файл настроек в соответствии с вашими потребностями:
/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
- PHPMyAdmin будет доступен через веб-адресс: http://localhost/phpMyAdmin/
Note: Необходимо отредактировать файл .htaccess
/home/httpd/html/phpMyAdmin/
и добавить строку allow from all
или allow from 127.0.0.1
или адрес, с которого должен быть доступ к http://localhost/phpMyAdmin/