Установка и настройка www (apache)

Тут описывается нелёгкий путь настройки ОС FreeBSD, начиная с установки дистрибутива и заканчивая настройкой каждого сервиса
Ответить
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Установка и настройка www (apache)

Сообщение RomA »

В этой заметке будут рассмотрены вопросы поднятия вевсервиса. Косвенно они уже затрагивались в других статьях, но "повторение мать ученья". Опять же именно тут я постараюсь собрать все то, что касается именно вебсервиса.
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Установка вебсервера - apache

Сообщение RomA »

Итак, самый распространенный способ отдать файл через http - это поставить apache. Фраза ключавая - например если мне нужно передать большой файл по сети то зачастую я его подсовываю в директорию apache и скачиваю через web любой программой. Но это лирическое отступление. Давайте поставим Апачь.

Код: Выделить всё

cd /usr/ports/www/apache22
make install clean
Я выбрал такие параметны

Код: Выделить всё

                      ┌────────────────────────────────────────────────────────────────────┐
                      │                   Options for apache 2.2.17_1                      │  
                      │ ┌────────────────────────────────────────────────────────────────┐ │  
                      │ │[ ] THREADS               Enable threads support in APR         │ │  
                      │ │[ ] MYSQL                 Enable MySQL support for apr-dbd      │ │  
                      │ │[ ] PGSQL                 Enable PostgreSQL support for apr-dbd │ │  
                      │ │[ ] SQLITE                Enable SQLite support for apr-dbd     │ │  
                      │ │[ ] IPV6                  Enable IPv6 support                   │ │  
                      │ │[ ] BDB                   Enable BerkeleyDB dbm                 │ │  
                      │ │[X] AUTH_BASIC            Enable mod_auth_basic                 │ │  
                      │ │[X] AUTH_DIGEST           Enable mod_auth_digest                │ │  
                      │ │[X] AUTHN_FILE            Enable mod_authn_file                 │ │  
                      │ │[ ] AUTHN_DBD             Enable mod_authn_dbd                  │ │  
                      │ │[X] AUTHN_DBM             Enable mod_authn_dbm                  │ │  
                      │ │[X] AUTHN_ANON            Enable mod_authn_anon                 │ │  
                      │ │[X] AUTHN_DEFAULT         Enable mod_authn_default              │ │  
                      │ │[X] AUTHN_ALIAS           Enable mod_authn_alias                │ │  
                      │ │[X] AUTHZ_HOST            Enable mod_authz_host                 │ │  
                      ├─└────v(+)────────────────────────────────────────────────────────┘─┤  
                      │                       [  OK  ]       Cancel                        │  
                      └────────────────────────────────────────────────────────────────────┘  
                                                                                              
                      ┌────────────────────────────────────────────────────────────────────┐
                      │                   Options for apache 2.2.17_1                      │  
                      │ ┌────^(-)────────────────────────────────────────────────────────┐ │  
                      │ │[X] AUTHZ_GROUPFILE       Enable mod_authz_groupfile            │ │  
                      │ │[X] AUTHZ_USER            Enable mod_authz_user                 │ │  
                      │ │[X] AUTHZ_DBM             Enable mod_authz_dbm                  │ │  
                      │ │[X] AUTHZ_OWNER           Enable mod_authz_owner                │ │  
                      │ │[X] AUTHZ_DEFAULT         Enable mod_authz_default              │ │  
                      │ │[X] CACHE                 Enable mod_cache                      │ │  
                      │ │[X] DISK_CACHE            Enable mod_disk_cache                 │ │  
                      │ │[X] FILE_CACHE            Enable mod_file_cache                 │ │  
                      │ │[ ] MEM_CACHE             Enable mod_mem_cache                  │ │  
                      │ │[X] DAV                   Enable mod_dav                        │ │  
                      │ │[X] DAV_FS                Enable mod_dav_fs                     │ │  
                      │ │[ ] BUCKETEER             Enable mod_bucketeer                  │ │  
                      │ │[ ] CASE_FILTER           Enable mod_case_filter                │ │  
                      │ │[ ] CASE_FILTER_IN        Enable mod_case_filter_in             │ │  
                      │ │[ ] EXT_FILTER            Enable mod_ext_filter                 │ │  
                      ├─└────v(+)────────────────────────────────────────────────────────┘─┤  
                      │                       [  OK  ]       Cancel                        │  
                      └────────────────────────────────────────────────────────────────────┘  

                      ┌────────────────────────────────────────────────────────────────────┐
                      │                   Options for apache 2.2.17_1                      │  
                      │ ┌────^(-)────────────────────────────────────────────────────────┐ │  
                      │ │[ ] LOG_FORENSIC          Enable mod_log_forensic               │ │  
                      │ │[ ] OPTIONAL_HOOK_EXPORT  Enable mod_optional_hook_export       │ │  
                      │ │[ ] OPTIONAL_HOOK_IMPORT  Enable mod_optional_hook_import       │ │  
                      │ │[ ] OPTIONAL_FN_IMPORT    Enable mod_optional_fn_import         │ │  
                      │ │[ ] OPTIONAL_FN_EXPORT    Enable mod_optional_fn_export         │ │  
                      │ │[ ] LDAP                  Enable mod_ldap                       │ │  
                      │ │[ ] AUTHNZ_LDAP           Enable mod_authnz_ldap                │ │  
                      │ │[X] ACTIONS               Enable mod_actions                    │ │  
                      │ │[X] ALIAS                 Enable mod_alias                      │ │  
                      │ │[X] ASIS                  Enable mod_asis                       │ │  
                      │ │[X] AUTOINDEX             Enable mod_autoindex                  │ │  
                      │ │[X] CERN_META             Enable mod_cern_meta                  │ │  
                      │ │[X] CGI                   Enable mod_cgi                        │ │  
                      │ │[X] CHARSET_LITE          Enable mod_charset_lite               │ │  
                      │ │[ ] DBD                   Enable mod_dbd                        │ │  
                      ├─└────v(+)────────────────────────────────────────────────────────┘─┤  
                      │                       [  OK  ]       Cancel                        │  
                      └────────────────────────────────────────────────────────────────────┘  

                      ┌────────────────────────────────────────────────────────────────────┐
                      │                   Options for apache 2.2.17_1                      │  
                      │ ┌────^(-)────────────────────────────────────────────────────────┐ │  
                      │ │[X] DEFLATE               Enable mod_deflate                    │ │  
                      │ │[X] DIR                   Enable mod_dir                        │ │  
                      │ │[X] DUMPIO                Enable mod_dumpio                     │ │  
                      │ │[X] ENV                   Enable mod_env                        │ │  
                      │ │[X] EXPIRES               Enable mod_expires                    │ │  
                      │ │[X] HEADERS               Enable mod_headers                    │ │  
                      │ │[X] IMAGEMAP              Enable mod_imagemap                   │ │  
                      │ │[X] INCLUDE               Enable mod_include                    │ │  
                      │ │[X] INFO                  Enable mod_info                       │ │  
                      │ │[X] LOG_CONFIG            Enable mod_log_config                 │ │  
                      │ │[X] LOGIO                 Enable mod_logio                      │ │  
                      │ │[X] MIME                  Enable mod_mime                       │ │  
                      │ │[X] MIME_MAGIC            Enable mod_mime_magic                 │ │  
                      │ │[X] NEGOTIATION           Enable mod_negotiation                │ │  
                      │ │[X] REWRITE               Enable mod_rewrite                    │ │  
                      ├─└────v(+)────────────────────────────────────────────────────────┘─┤  
                      │                       [  OK  ]       Cancel                        │  
                      └────────────────────────────────────────────────────────────────────┘  

                      ┌────────────────────────────────────────────────────────────────────┐
                      │                   Options for apache 2.2.17_1                      │  
                      │ ┌────^(-)────────────────────────────────────────────────────────┐ │  
                      │ │[X] SETENVIF              Enable mod_setenvif                   │ │  
                      │ │[X] SPELING               Enable mod_speling                    │ │  
                      │ │[X] STATUS                Enable mod_status                     │ │  
                      │ │[X] UNIQUE_ID             Enable mod_unique_id                  │ │  
                      │ │[X] USERDIR               Enable mod_userdir                    │ │  
                      │ │[X] USERTRACK             Enable mod_usertrack                  │ │  
                      │ │[X] VHOST_ALIAS           Enable mod_vhost_alias                │ │  
                      │ │[X] FILTER                Enable mod_filter                     │ │  
                      │ │[X] VERSION               Enable mod_version                    │ │  
                      │ │[X] PROXY                 Enable mod_proxy                      │ │  
                      │ │[X] PROXY_CONNECT         Enable mod_proxy_connect              │ │  
                      │ │[X] PATCH_PROXY_CONNECT   Patch proxy_connect SSL support       │ │  
                      │ │[ ] PROXY_FTP             Enable mod_proxy_ftp                  │ │  
                      │ │[ ] PROXY_HTTP            Enable mod_proxy_http                 │ │  
                      │ │[ ] PROXY_AJP             Enable mod_proxy_ajp                  │ │  
                      ├─└────v(+)────────────────────────────────────────────────────────┘─┤  
                      │                       [  OK  ]       Cancel                        │  
                      └────────────────────────────────────────────────────────────────────┘  

                      ┌────────────────────────────────────────────────────────────────────┐
                      │                   Options for apache 2.2.17_1                      │  
                      │ ┌────^(-)────────────────────────────────────────────────────────┐ │  
                      │ │[X] FILTER                Enable mod_filter                     │ │  
                      │ │[X] VERSION               Enable mod_version                    │ │  
                      │ │[X] PROXY                 Enable mod_proxy                      │ │  
                      │ │[X] PROXY_CONNECT         Enable mod_proxy_connect              │ │  
                      │ │[X] PATCH_PROXY_CONNECT   Patch proxy_connect SSL support       │ │  
                      │ │[ ] PROXY_FTP             Enable mod_proxy_ftp                  │ │  
                      │ │[ ] PROXY_HTTP            Enable mod_proxy_http                 │ │  
                      │ │[ ] PROXY_AJP             Enable mod_proxy_ajp                  │ │  
                      │ │[ ] PROXY_BALANCER        Enable mod_proxy_balancer             │ │  
                      │ │[ ] PROXY_SCGI            Enable mod_proxy_scgi                 │ │  
                      │ │[X] SSL                   Enable mod_ssl                        │ │  
                      │ │[X] SUEXEC                Enable mod_suexec                     │ │  
                      │ │[ ] SUEXEC_RSRCLIMIT      SuEXEC rlimits based on login class   │ │  
                      │ │[X] REQTIMEOUT            Enable mod_reqtimeout                 │ │  
                      │ │[ ] CGID                  Enable mod_cgid                       │ │  
                      ├─└────────────────────────────────────────────────────────────────┘─┤  
                      │                       [  OK  ]       Cancel                        │  
                      └────────────────────────────────────────────────────────────────────┘  

Естественно эти параметры будут меняться, но на сегодня мне были нужны вот эти параметры. Больше у меня он не спросил ничего криминального и апачь поставился. Единственное что где-то он у меня спросил что-то еще, где я просто выключил IPv6, а все остальное осталось по умолчанию.

Не забываем включить загрузку апача в конфиге - то есть в конец /etc/rc.conf добавляем apache22_enable="YES" И вроде как на этом все - теперь приступаем к настройке
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Ограничение доступа к ресурсам

Сообщение RomA »

В этой статье будут рассмотрены простые способы ограничения доступа к ресурсам, размещенным на веб сервера apache

Установка пароля
За работу того, что будет описано ниже отвечает опция apache AllowOverride

Код: Выделить всё

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None
Она в директории ищет специальный файл, в котором могут содержаться дополнетельные настройки. Таким образом в данной директории эта директива должны быть включена

Код: Выделить всё

    <Directory "/usr/home/www/admin/">
        AllowOverride All
     </Directory>
Сохраняем, перезапускаем apache. Теперь можно приступить к созданию самого файла - идём в ту директорию, о которой мы рассказали конфигу, и создаём там файл - его имя строго предопределено!

Код: Выделить всё

cd /usr/home/www/admin/
touch .htaccess
Открываем этот файл и приводим к виду

Код: Выделить всё

AuthUserFile /usr/home/www/admin/.htpasswd

AuthGroupFile /dev/null
AuthName "Test pass of go"
AuthType Basic

<limit GET POST>
require user roman
</limit>
Ну вроде как тут всё понятно
1) мы задаём путь к файлу с паролями
2) сообщение при авторизации и метод
3) определяем каким пользователям можно входить - так же можно разрешить всех пользователей, которые прошли авторизацию - для этого строку require user roman следует заменить на require valid-user

Сохраняем, закрывем и создаём файл с паролями, раз уж мы его упомянули

Код: Выделить всё

touch .htpasswd
Ntgthm надо вписать в него пароли. Для этого существует специальная утилитка, синтаксис которой весьма прост - утилита, файл куда сохранить, логи, пароль:

Код: Выделить всё

www# /usr/local/sbin/htpasswd -b /usr/home/www/admin/.htpasswd roman 123123
Adding password for user roman
Проверим что получилось

Код: Выделить всё

www# cat .htpasswd 
roman:cpndBbxb1EbxU
Всё. Перезапускать apache при этом не надо - этот файл он будет сканировать как только кто-то обратится к этой папке
Хочу заметить, что содержимое файла .htaccess вполне можно было вписать и в сам конфиг apache в раздел <Directory> - такой способ увеличил бы скорость работы, но при внесении изменений пришлось бы перезапускать вебсервер


Ограничение по IP
Иногда бывают ситуации, когда надо просто разрешить одному ИП адресу - в этом случае морочиться с паролем не совсем хочется, и тогда можно ограничить доступ по IP адресу. В этом случае файл .htpasswd нам не нужен, а .htaccess имел бы следующий вид

Код: Выделить всё

<Files upsset.cgi>
deny from all
allow from 192.168.1.42
</Files>
Вот так мы ограничили доступ к файлу upsset.cgi одним IP 192.168.1.42, и соответственно доступ к папке будет выглядеть как

Код: Выделить всё

deny from all
allow from 192.168.1.42
Ну а что сделать, если нам надо запретить один ИП, и разрешить все остальные? Да просто поменять местами :-)

Код: Выделить всё

deny from 192.168.1.42
allow from all
Хочу заметить, что содержимое файла .htaccess вполне можно было вписать и в сам конфиг apache в раздел <Directory> - такой способ увеличил бы скорость работы, но при внесении изменений пришлось бы перезапускать вебсервер


NTLM авторизация
Но ведь у нас есть домен, и правильнее будет авторизоваться там - возразите вы, и будите правы. О том, как это сделать написано вот тут http://corp.stniva.ru/forum/viewtopic.p ... &t=44#p298
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Работа с php как модулем

Сообщение RomA »

Если мы собрали php как модуль к апачу, то для того что бы фалы начали обрабатываться в конфиг httpd.conf нужно добавить следующее

найти
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
и заменить на
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
Затем найти секцию
<IfModule mime_module>
и прописать туда
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
После чего требуется перезапустить апачь
Scorp
Сообщения: 22
Зарегистрирован: 16 янв 2009, 14:19

"Проксирующий" Апач

Сообщение Scorp »

Часто возникают задачи, при которых нам необходимо использовать несколько web серверов, расположенных в локальной сети за NAT, для данной задачи есть множество решений (например взять у провайдера еще один белый статический адрес или использовать несколько портов - например 80 и 81), решение с портами я отбросил, т.к. не хотелось делать лишнюю "дырку" в свою сеть и не очень удобно заводить адрес с портом, за дополнительный адрес надо платить, после изучения материала по Apache - решение пришло само :)

подгружаем модули, добавив в основной конфиг httpd.conf:

Код: Выделить всё

LoadModule proxy_module libexec/apache22/mod_proxy.so
LoadModule proxy_html_module libexec/apache22/mod_proxy_html.so
LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so
настройки виртуальных хостов будут выглядеть так:

Код: Выделить всё

<VirtualHost *:80>
    ServerName mail.mydomain.ru
    ProxyPass / http://192.168.*.11/mail/
    ProxyPassReverse / http://192.168.*.11/mail/
</VirtualHost>

<VirtualHost *:80>
    ServerName gps.mydomain.ru
    ProxyPass / http://192.168.*.12/
    ProxyPassReverse / http://192.168.*.12/
</VirtualHost>
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

apache - Доступ запрещен

Сообщение RomA »

Скорее всего, после установки, apache будет говорить что у вас отсутствует доступ к директории.
Forbidden
You don't have permission to access /zabbix/ on this server.
Что бы он мог показывать файлы, в секции конфигурации данного виртуального хоста надо прописать следующее:

Для apache 2.4

Код: Выделить всё

 
<Directory "/usr/home/www/">
    Options None
    AllowOverride All
    Require all granted
</Directory>
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Ротация логов

Сообщение RomA »

Введение:
Веб-сервис - это такой ресурс, который работает и по сути со временем за него забываешь. Но логи он пишет и через время размер лог-файла становится огромным и начинаются проблемы - медлено работает сервис, кончается место на диске и так далее. Что бы этого не происходило в системе предусмотрен механизм ротации логов, к которому надо подключить и наш лог

Задача:
Настроить ротацию логов. Логи должны архивироваться и обрезаться раз в сутки. Храниться будут логи за последнии 28 дней. Все новые логи сервиса должны ротироваться автоматически.

Решение:
В файл /etc/newsyslog.conf добавляем следующую строчку:

Код: Выделить всё

/var/log/apache/*.log			644  28	   *	@T00  GJ	/var/run/httpd.pid 30
Где:
/var/log/apache/*.log - директория с логами сервиса
644 - права доступа - соответственно только стение
@T00 - время - полночь
GJ - флаги - G как раз и разрешает использовать * в имени лог-файла

После изменений надо перезапустить

Код: Выделить всё

/etc/rc.d/newsyslog restart
Ответить