Новости
  04/12/2009

Legrand" DLP mini для каждого офиса
  10/04/2009

Сайт дополнился интерестными статьями о Сборке компьютеров, Веб-дизайне, Сетевых технологиях...
 


Free BSD для начинающих.
продолжение. (начало)

Устанавливка apache на FreeBSD

Для установки выполняете следующие команды. Можно установить Apache версии 2, но он не рекомендуется для использования вместе с php (т.е. работать он будет, но сами разработчики php не рекомендуют). Поэтому мы с рассмотрим установку версии 1.3, а если вы очень хотите устанавливать Apache2 - тогда просто замените цифры 13 на 2.
cd /usr/ports/www/apachel3 make install
Для того, чтоб оболочка нашла бы новопоставленную программу нужно набрать rehash
Проверить что apache нормально установился и проверить его версию можно при помощи команды %rehash %httpd -v
Server version: Apache/1.3.39 (Unix) Server built: Jan 13 2008 03:25:33 %

Настройка apache

Для создания и администрирования сайта нам понадобится отдельный пользователь, поэтому если вы его еще не создали, вернитесь назад и создайде пользователя wwwadmin. как показано в примере. Вместо sitel можете указать имя вашего сайта, и во всех примерах далее просто править sitel на имя вашего сайта.
На данный момент у нас уже должна быть директория /data/sites/sitel сейчас создадим под ней 3 директории.
/data/sites/sitel/htdocs будет хранить все файлы данного сайта, /data/sites/sitel/log будет хранить логи данного сайта, а в /data/sites/sitel/cgi-bin поместим CGI приложения, которые будут использоваться на данном сайте.
%mkdir /data/sites/sitel/htdocs %mkdir /data/sites/sitel/log %mkdir
/data/sites/sitel/cgi-bin '/.chown -R wwwadmin:www /data/sites/sitel
Команда chown меняет владельца этих файлов на пользователя wwwadmin и группу www.
Сейчас мы поменяем основную конфигурацию apache сервера, если у вас будет только один сайт на сервере, то тогда вы будете работать именно с ней. Если нужно создавать несколько разных сайтов - мы рассмотрим этот вариант далее (XXX).
Конфигурационный файл apache храниться в /usr/local/etc/apache/http cnf.
Откройте его в редакторе

/0cd /usr/local/etc/apache/ % ее httpd.conf
и сделайте следующие изменения:
Все места, в которых нужно изменить текст, помечены курсивом. Для поиска строки в файле, если вы используете редактор ее, можно использовать комбинацию клавиш Ctrl-X.
# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
# machine always knows itself by this address. If you use Apache strictly for
# local testing and development, you may use 127.0.0.1 as the server name. #
#ServerName example.com ServerName имя_вашего_сервера
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations. #
DocumentRoot "/data/sites/sitel/htdocs" #
# This should be changed to whatever you set DocumentRoot to. #
#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a VirtualHost
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a VirtualHost
# container, that host's errors will be logged there and not here. #
ErrorLog /data/sites/sitel/log/error_log #
# If you prefer a single logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive. #
CustomLog /data/sites/sitel/log/access_log combined
Насчет опции ServerName по-подробней. Если у вас есть зарегистрированное имя, которое при помощи DNS серверов прообразуется в IP вашей машины (т.е. команда host имя_вашего_сервера выдает ваш IP адpec), то можете поставить его. Если у вас пока нет зарегистрированного имени, то тогда вам лучше подставить туда просто IP адрес, который вы присвоили вашей машине. Все равно вы будете обращаться к ней, как к http://1.1.1.1/, т.е. используя адрес, а не имя.

Тестирование конфигурации

После редактирования конфиг файла стоит проверить, что вы ничего в нем не поломали и все в порядке (по крайней мере с синтаксисом). Для этого можно использовать команду httpd -t, которая считывает конфиг файл и httpd -t проверяет его синтаксис.
%httpd -t Syntax OK %
Если вы получили ошибку наподобие этой: %httpd -t
Syntax error on line 355 of /usr/local/etc/apache/httpd.conf:
DocumentRoot must be a directory
%
Это значит, что у вас неправильно указаны пути и вам нужно проверить либо написание пути в конфиг файле, либо удостовериться, что такая директория есть на файловой системе (скажем при помощи команды Is)
%ls -al /data/sites/sitel total 26
drwxr- ¦xr- ¦X 5 wwwadmin www 512 Jan 13 13: :31
drwxr- ¦xr- ¦X CO root wheel 512 Jan 13 03: :39
-rw-r- •-Г- 1 wwwadmin www 751 Jan 13 03: :39 . cshrc
-rw-r- •-Г- 1 wwwadmin www 248 Jan 13 03: :39 .login
-rw-r- •-Г- 1 wwwadmin www 158 Jan 13 03: :39 .login_conf
-rw--- 1 wwwadmin www 373 Jan 13 03: :39 .mail_aliases
-rw-r- •-Г- 1 wwwadmin www 331 Jan 13 03: :39 .mailrc
-rw-r- •-Г- 1 wwwadmin www 766 Jan 13 03: :39 .profile
-rw--- 1 wwwadmin www 276 Jan 13 03: :39 .rhosts
-rw-r- •-Г- 1 wwwadmin www 975 Jan 13 03: :39 . shrc
drwxr- ¦xr- ¦X 2 wwwadmin www 512 Jan 13 13: :31 cgi-bin
drwxr- ¦xr- ¦X 2 wwwadmin www 512 Jan 13 13: :31 htdocs
drwxr- ¦xr- ¦X 2 wwwadmin www 512 Jan 13 13: :31 logs
%
Команда httpd -T проверяет только синтаксис конфига и не проверяет httpd -Т правильность путей.

Тестирование конфигурации хостов


Apache сервер может обслуживать много домейнов на одном и том-же IP адресе. Как это настраивается будет описано дальше, а пока что - команда, httpd -S
чтоб просмотреть установки заданные в конфиг файле. Очень часто ошибки с конфигурацией виртуальных хостов выявляются именно при помощи этой команды.
'/.httpd -S
VirtualHost configuration: °/.
В нашем случае результат пустой, так как нет ни одного виртуального сервера, описан только основной сервер.
Qgasparch ~> httpd -S VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
_default_:13015 gasparchilingarov.com (/etc/httpd/conf/httpd.conf:1291)
_default_:13016 forum.gasparchilingarov.com (/etc/httpd/conf/httpd.conf:1310)
Syntax OK Qgasparch ~>
В данном случае сервера находятся на одном и том-же IP по умолчанию (_default_), но на разных портах. В результатах вывода указывается в какой строке конфиг файла была задана конфигурация этого сервера.

apachectl - управление apache сервером

Вручную apache сервер можно запустить при помощи команды apachectl start. Остановка производится при помощи команды apachectl stop. Можно заставить apache перечитать конфиг файл без рестарта сервера при помощи команды apachectl graceful. В случае некоторых изменений, в частности, касающихся конфигурации портов, на которых слушает apache сервер, лучше перезапустить его полностью при помощи apachectl restart.

Как проверить, что apache запущен?

Можно запустить команду 'ps -ах' (в Linux - 'ps ах') и отфильтровать оттуда строчки, относящиеся только к apache серверу.
Окончательная команда получится 'ps -ах | grep httpd | grep -v grep'.
Если эта команда выдает вам какой-то результат - то у вас запущен apache.
Вот типичный пример, как выглядят процессы запущенного apache сервера.
aldan# ps -ax | grep httpd | grep -v grep
643 ?? Ss 0: :03. .27 /usr/local/sbin/httpd -DSSL
651 ?? I 0: :00. .17 /usr/local/sbin/httpd -DSSL
652 ?? I 0: :00. .11 /usr/local/sbin/httpd -DSSL
653 ?? I 0: :00. .04 /usr/local/sbin/httpd -DSSL
654 ?? I 0: :00. .07 /usr/local/sbin/httpd -DSSL
655 ?? I 0: :00. .14 /usr/local/sbin/httpd -DSSL
26265 ?? I 0: :00. ,10 /usr/local/sbin/httpd -DSSL
31168 ?? w 0: :00. ,10 /usr/local/sbin/httpd -DSSL
aldan#
Этот сервер запущен в режиме поддержки SSL соединений, поэтому в выдаче команды ps виден ключ -DSSL.

Другой способ проверить, что apache запущен

Другой способ проверить, работает ли у вас apache - это просто присоединиться к нему с консоли. Для этого можно использовать команду telnet. Выглядеть сессия будет следующим образом:
Qaldan ~> telnet localhost 80 Trying 127.0.0.1. . . Connected to aldan. Escape character is '"]'. GET / HTTP/1.0
HTTP/1.1 200 OK
Date: Fri, 07 Nov 2008 22:44:25 GMT
Server: Apache/1.3.41 (Unix) PHP/5.2.6 with Suhosin-Patch mod_ssl/2.8.31 0penSSL/0.9.8e X-Powered-By: PHP/5.2.6 Content-Length: 7634 Connection: close Content-Type: text/html; encoding: iso-8859-1 html
здесь будет текст страницы /html
Самое важное здесь - это команда telnet localhost 80, которая устанавливает соединение с вашим веб-сервером и строчка, которую вы должны ввести - GET / НТТР/1.0, которая вызывает загрузку основной странички. После ввода этого заголовка ОБЯЗАТЕЛЬНО 2 раза нажмите Enter.

Зверская остановка apache

Если вам нужно остановить всякую работу apache сервера, то от имени httpd пользователя root запустите команду killall -9 httpd - это напрочь убьет ВСЕ процессы apache сервера. После этого поможет только его старт заново. Если при этом у вас клиенты что-то качали с сайта - то ... до свидания, клиенты. Они все будут отсоединены.

Автозапуск apache

Чтоб apache запускался бы при запуске системы добавьте в файл /etc/гс. conf строчку apache_enable="YES"

После этого вы можете использовать команду
/usr/local/etc/rc.d/apache start для запуска apache сервера. Для остановки используйте /usr/local/etc/rc.d/apache stop и для перезапуска apache - /usr/local/etc/rc.d/apache restart
При помощи этого вы можете оттестировать, как будет система запускать и останавливать процесс apache во время запуска и остановки системы.
Если у вас вдруг не запускается apache сервер при помощи /usr/local/etc/гс .d/apache start, но все нормально работает при использовании apachectl start, то вам следует проверить написание опции apache_enable в конфигурационном файле.




 


copyright (c) 2006-2013, ABNET Company. all right reserved

Click here Click here Click here