- PVSM.RU - https://www.pvsm.ru -
В четвертом уроке цикла статей о настройке стека web-приложений [1] мы поговорим о сервере Apache.
Web-сервер Apache отвечает за предоставление доступа к динамическому контенту по HTTP или HTTPS протоколу. В этом примере мы установим и будем использовать web-сервер Apache2 + php5, а так же установим DocumentRoot на vm05:/exports/html, смонтировав его в /var/www/html. Для этого мы введем следующие команды на нашем виртуальном сервере vm02 с IP-адресом 192.168.1.11.
С помощью yum-менеджера [2] установим пакеты NFS-клиента:
# yum groupinstall "Network file system client"
Или чуть проще:
# yum install nfs-utils nfs4-acl-tools
Включим службы NFSv4-клиента:
# chkconfig rpcbind on
# chkconfig rpcidmapd on
# chkconfig nfslock on
Отредактируем файл конфигурации nfs-клиента
# vi /etc/idmapd.conf
Убедитесь, что параметры выставлены в соответствии с доменным именем NFS-сервера:
Domain = cyberciti.biz
[Mapping]
Nobody-User = nobody
Nobody-Group = nobody
Сохраните и закройте файл. Запустим все службы NFS-клиента:
# /sbin/service rpcbind start
# /sbin/service rpcidmapd start
# /sbin/service nfslock start
Введите следующую команду
# showmout -e vm05
Или:
# showmout -e 192.168.1.14
Пример вывода команды:
Export list for v.txvip1:
/exports/html 192.168.1.10,192.168.1.11
/exports/static 192.168.1.10,192.168.1.11
Смонтируем /exports/html файловую систему в /var/www/html, введя следующую команду:
# /bin/mount -t nfs4 -orsize=32768,wsize=32768,intr,hard,proto=tcp,sync vm05:/exports/html /var/www/html/
Или:
# /bin/mount -t nfs4 -orsize=32768,wsize=32768,intr,hard,proto=tcp,sync 192.168.1.14:/exports/html /var/www/html/
Отредактируем /etc/fstab:
# vi /etc/fstab
Добавим следующую строку:
vm05:/exports/html /var/www/html nfs4 orsize=32768,wsize=32768,intr,hard,proto=tcp,sync
Сохраним и закроем файл. Убедимся, что netfs-служба включена:
# chkconfig netfs on
Убедимся, что пользователь apache видит наши файлы
# su - apache
$ ls /var/www/html/
$ exit
#
Обратите внимание, что root-пользователь или любой другой пользователь не видит /var/www/html из-за установленной нами политики безопасности. Только apache-пользователь должен получить доступ к DocumentRoot. Это наши настройки по умолчанию.
Установим пакеты Apache2 [3] через yum-менеджер:
# yum install httpd
Введите следующие команды, что бы установить php5, модули, предоставляющие доступ к mysql, модули работы с графическими файлами и все остальные, необходимы в работе вашего приложения модули:
# yum install -y php-pear php-common php-bcmath php-mbstring php-cli php-pdo php-php-gettext php-mcrypt php-gd php-xml php-pecl-apc php php-mysql php-xmlrpc
Для того чтобы получить доступ к memcached-серверу, установленному на vm03 необходимо установить php кэш- сервер:
# yum install -y php-pecl-memcache
Отредактируем файл конфигурации сервера Apache /etc/httpd/conf/httpd.conf:
# vi /etc/httpd/conf/httpd.conf
Добавьте или отредактируйте следующие настройки (DocumentRoot должен указывать на nfs-раздел, смонтированный в /var/www/html):
# Разрешить прокси-серверу коммуникации по локальной сети
Listen 192.168.1.11:80
# Безопасности по умолчанию во избежание утечки информации
ServerTokens Prod
ServerSignature Off
# Установка DocumentRoot
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Сохраните и закройте файл.
PHP is a widely used server-side scripting language («Москва, столица нашей родины» прим.пер.)
Отредактируем файл /etc/httpd/conf.d/php.conf следующей командой:
# cat /etc/httpd/conf.d/php.conf
Приблизительный вывод команды:
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.<br />
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
# Присобачиваем PHP-интерпретатор к файлам с расширением .php
AddHandler php5-script .php
AddType text/html .php
# Add index.php to the list of files that will be served as directory
# indexes.
DirectoryIndex index.php
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
Смотрите и читайте о том, как защитить и оптимизировать PHP5 [4] в дополнительной статье по теме (или просите перевод, — прим.пер.)
Установим пакет mod_extract_forwarded, чтобы получить реальный IP источника направленного HTTP-запроса (подключаем EPEL-репозиторий):
# yum -y install mod_extract_forwarded package
Редактируем /etc/httpd/conf.d/mod_extract_forwarded.conf:
# vi /etc/httpd/conf.d/mod_extract_forwarded.conf
Добавим или изменим настройку следующим образом:
## Accept real ip from our nginx reverse proxy at 192.168.1.1 ##
MEFaccept 192.168.1.1
Сохраним/закроем файл и перезапустим web-сервер:
# service httpd reload
Отредактируйте файл /etc/sysconfig/Iptables, добавив следующие параметры (убедитесь, что они прописаны до окончательных LOG и DROP настроек INPUT-цепочки):
## разрешить доступ только из локальной сети ##
-A INPUT -m state --state NEW -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT
Сохраняем, закрываем. Перезапускаем iptables [5]:
# /sbin/service iptables restart
# /sbin/iptables -L -v -n
Запускам Apache2 web-сервер [6] следующей командой:
# chkconfig httpd on
# service httpd start
Врубаем браузер и ломимся на наш сервер:
http://192.168.1.11/
Если вам нужно использовать mysql в вашем приложении – IP-адрес 192.168.1.13 и tcp-порт 3306:
/* Пример php-конфигурации приложения */
/* Имя БД для WordPress */
define('DB_NAME', 'foo');
/* MySQL database username */
define('DB_USER', 'bar');
/* MySQL database password */
define('DB_PASSWORD', 'mypassword');
/* MySQL hostname */
define('DB_HOST', '192.168.1.13');
Если вам нужен memcached-сервер – IP-адрес 192.168.1.12 и tcp-порт 11211:
/* пример php-кода */
if ( isset($memcached_servers) )
$buckets = $memcached_servers;
else
$buckets = array('default' => array('192.168.1.12:11211'));
Или:
$config['Datastore']['class'] = 'myApp_MemCached;
$i = 0;
$i++;
$config['Misc']['memcacheserver'][$i] = '192.168.1.12';
$config['Misc']['memcacheport'][$i] = 11211;
$config['Misc']['memcachepersistent'][$i] = true;
$config['Misc']['memcacheweight'][$i] = 1;
$config['Misc']['memcachetimeout'][$i] = 1;
$config['Misc']['memcacheretry_interval'][$i] = 15;
Автор: danielnewman
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/apache-2/12072
Ссылки в тексте:
[1] цикла статей о настройке стека web-приложений: http://habrahabr.ru/post/147864/
[2] yum-менеджера: http://www.cyberciti.biz/faq/rhel-centos-fedora-linux-yum-command-howto/
[3] Установим пакеты Apache2: http://www.cyberciti.biz/faq/linux-install-and-start-apache-httpd/
[4] как защитить и оптимизировать PHP5: http://www.google.com/url?q=http%3A%2F%2Fwww.cyberciti.biz%2Ftips%2Fphp-security-best-practices-tutorial.html&sa=D&sntz=1&usg=AFQjCNFP7_prx70ldhVIyuhE4v9-mmDC6w
[5] Перезапускаем iptables: http://www.google.com/url?q=http%3A%2F%2Fwww.cyberciti.biz%2Ffaq%2Fhowto-start-iptables-under-rhel-centos-linux%2F&sa=D&sntz=1&usg=AFQjCNFvFhqYFfxijENg-ua8KiJexDK4Ug
[6] Запускам Apache2 web-сервер: http://www.cyberciti.biz/faq/restart-httpd/
[7] Шаг №1: Настройка / Установка: NFS файловый сервер: http://habrahabr.ru/post/148004/
[8] Шаг №2: Настройка / установка: сервер баз данных MySQL: http://habrahabr.ru/post/148077/
[9] Шаг №3: Настройка / Установка: Memcached сервера кэширования: http://habrahabr.ru/post/148488/
[10] Шаг №4: Настройка / Установка: Apache + php5 приложение веб-сервера: http://habrahabr.ru/post/148489/
[11] Шаг №5: Настройка / Установка: веб-сервер Lighttpd для статических активов: http://habrahabr.ru/post/148490/
[12] Шаг №6: Настройка / Установка: Nginx обратный (reverse) прокси-сервер: http://habrahabr.ru/post/148491/
Нажмите здесь для печати.