
Apache HTTP-сервер (сокращение от англ. a patchy server) — свободный веб-сервер.
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
— Конфигурация сервера (httpd.conf).
— Конфигурация виртуального хоста (httpd.conf c версии 2.2 extra/httpd-vhosts.conf).
— Конфигурация уровня директории (.htaccess).
Ставить будем apache22+php52
==============================================================
Часть 1 — Устанавливаем веб-сервер Apache
==============================================================
Первое, с чего необходимо начинать любую установку, это обновление портов . Рекомендую держать Ваши порты в current состоянии.
Далее, переходим в порты:
|
|
выполняем установку:
|
|
Появится окошко выбора устанавливаемых опций, оставляем все в дефолте и нажимаем Ок
Полезные советы:
Если вам понадобится выбрать другие опции в апаче (или в любом другом порту), выполните /usr/ports/www/apache22/make config
после этого /usr/ports/www/apache22/make deinstall clean && make install clean. При удалении программы, например apache, она будет работать до ее выключения или перезагрузки системы.
Если вам нужно удалить порт, выполните /usr/ports/www/apache22/make deinstall clean
Если, при установке какого-либо порта, Вы получаете похожую ошибку —
===> apache-2.2.21 is already installed
You may wish to ``makedeinstall''andinstallthis port again
by ``makereinstall''to upgrade it properly.
If you really wish to overwrite the old port of www/apache22
without deleting it first,setthe variable"FORCE_PKG_REGISTER"
inyour environment or the"make install"commandline.
*** Error code 1
Stopin/usr/ports/www/apache22.
*** Error code 1Значит порт, который вы ставите, или явно зависящий от него порт — уже установлены. Если это порт-зависимость, то перейдите к этому порту и выполните make deinstall clean, после чего вернитесь в порт, который вы ставили, и продолжайте установку. Зависимость он установит сам.
После успешной установки, конфигурационные файлы Вы найдете в /usr/local/etc/apache22/
Добавляем apache в автозагрузку apache
echo'apache22_enable="YES"'>>/etc/rc.conf==============================================================
Часть 2 — Устанавливаем PHP5.2
==============================================================
Далее устанавливаем модуль PHP. Так как мы будем использовать версию PHP 5.2, то переходим в соответствующий порт и запускаем установку:
cd/usr/ports/lang/php52
/usr/ports/lang/makeinstallcleanПоявится меню выбора соответствующих модулей, нам необходимо поставить галочку на:
[X] APACHE Build Apache moduleи нажимаем Ок
Дожидаемся окончания процесса установки. В конфигурационный файл apache httpd.conf автоматически будет добавлен модуль PHP:
LoadModule php5_module libexec/apache22/libphp5.soА программа установки напоследок выдаст следующее сообщение:
***************************************************************
Make sure index.php is part of your DirectoryIndex.
You should add the following to your Apache configurationfile:
AddType application/x-httpd-php.php
AddType application/x-httpd-php-source.phps
***************************************************************Последние две строчки мы должны добавить в главный конфигурационный файл веб-сервера /usr/local/etc/apache22/httpd.conf в директиву IfModule mime_module
В директиве Directorylndex можно задать несколько имен файлов. Если первый документ, указанный в строке, не найден в каталоге, то сервер ищет следующий и, в случае успеха, передает его клиенту. Чтобы разрешить в качестве индексных страниц передавать файлы index.php или index.phps, приведите строку Directorylndex к такому виду:
DirectoryIndex index.html index.html.var index.php index.phpsЧто бы проверить, что мы ничего не забыли, выполните следующую команду и сравните результат с моим:
/usr/local/etc/apache22]# cat httpd.conf | grep php
LoadModule php5_module libexec/apache22/libphp5.so
DirectoryIndex index.html index.html.var index.php index.phps
AddType application/x-httpd-php.php
AddType application/x-httpd-php-source.phpsНа этом, работа с PHP еще не закончена. Возвращаемся в порты и переходим к установке модулей PHP:
cd/usr/ports/lang/php52-extensions/
/usr/ports/lang/php52-extensions]# make install cleanПоявится окно с выбором модулей. Здесь Вы должны выбрать модули, которые планируете использовать в дальнейшей работе вашего веб-сервера.
Мне необходимы следующие модули:
Optionsforphp52-extensions 1.3_1
│ │ [X] BCMATHbcstyle precision math functions
│ │ [X] BZ2bzip2library support
│ │ [ ] CALENDAR calendar conversion support
│ │ [X] CTYPE ctype functions
│ │ [X] CURL CURL support
│ │ [ ] DBA dba support
│ │ [ ] DBASE dBase library support
│ │ [X] DOM DOM support
│ │ [X] EXIF EXIF support
│ │ [X] FILEINFO fileinfo support
│ │ [X] FILTER input filter support
│ │ [ ] FRIBIDI FriBidi support
│ │ [ ] FTP FTP support
│ │ [X] GD GD library support
│ │ [X] GETTEXT gettext library support
│ │ [ ] GMP GNU MP support
│ │ [X] HASH HASH Message Digest Framework
│ │ [X] ICONV iconv support
│ │ [X] IMAP IMAP support
│ │ [ ] INTERBASE Interbase 6 database support (Firebird)
│ │ [X] JSON JavaScript Object Serialization support
│ │ [ ] LDAP OpenLDAP support
│ │ [X] MBSTRING multibyte string support
│ │ [X] MCRYPT Encryption support
│ │ [ ] MHASH Crypto-hashing support
│ │ [ ] MING ming shockwave flash support
│ │ [X] MSSQL MS-SQL database support
│ │ [X] MYSQL MySQL database support
│ │ [X] MYSQLI MySQLi database support
│ │ [ ] NCURSES ncurses support (CLI only)
│ │ [ ] ODBC unixODBC support
│ │ [X] OPENSSL OpenSSL support
│ │ [ ] PCNTL pcntl support (CLI only)
│ │ [X] PCRE Perl Compatible Regular Expression support
│ │ [ ] PDF PDFlib support (implies GD)
│ │ [ ] PDO PHP Data Objects Interface (PDO)
│ │ [ ] PDO_SQLITE PDO sqlite driver
│ │ [ ] PDO_MYSQL PDO mysql driver
│ │ [ ] PGSQL PostgreSQL database support
│ │ [X] POSIX POSIX-like functions
│ │ [X] PSPELL pspell support
│ │ [ ] READLINE readline support (CLI only)
│ │ [ ] RECODE recode support
│ │ [X] SESSION session support
│ │ [ ] SHMOP shmop support
│ │ [X] SIMPLEXML simplexml support
│ │ [X] SNMP SNMP support
│ │ [ ] SOAP SOAP support
│ │ [X] SOCKETS sockets support
│ │ [X] SPL Standard PHP Library
│ │ [ ] SQLITE sqlite support
│ │ [ ] SYBASE_CT Sybase database support
│ │ [ ] SYSVMSG System V message support
│ │ [ ] SYSVSEM System V semaphore support
│ │ [ ] SYSVSHM System V shared memory support
│ │ [ ] TIDY TIDY support
│ │ [ ] TOKENIZER tokenizer support
│ │ [ ] WDDX WDDX support (implies XML)
│ │ [X] XML XML support
│ │ [X] XMLREADER XMLReader support
│ │ [X] XMLRPC XMLRPC-EPI support
│ │ [X] XMLWRITER XMLWriter support
│ │ [X] XSL XSL support (Implies DOM)
│ │ [ ] YAZ YAZ support (ANSI/NISOZ39.50)
│ │ [X] ZIP ZIP support
│ │ [] ZLIB ZLIB supportНажимаем Ок и ждем. Установка займет какое-то время, в течении которого, вам будут предложены к установке дополнительные опции устанавливаемых модулей. Можете просто соглашаться с предлагаемыми значениями.
Если вам необходимо добавить какой-нибудь модуль PHP, например php52-zlib, Вам нет необходимости пересобирать полностью все модули. Выполняем поиск:
/usr/ports]# whereis php52-zlib
php52-zlib:/usr/ports/archivers/php52-zlibУстанавливаем:
/usr/ports/archivers/php52-zlib#/make install cleanПерезапускаем apache
/usr/local/etc/rc.d/./apache22restartВсе, Ваш модуль php52-zlib установлен и работает.
И в конце, нам необходимо показать PHP как ему работать. Делается это через файл php.ini – это файл настроек и конфигурации PHP. В нем находится ряд директив, которые определяют различное поведение PHP, ну и, следовательно, сайта.
После установки в каталоге /usr/local/etc/ будет несколько вариантов этого файлы. Скопируем и переименуем нужный нам:
cp/usr/local/etc/php.ini-dist/usr/local/etc/php.ini===================================================
Часть 3 — настройка Apache+PHP
===================================================Полезный совет:
Сделаю небольшое отступление — когда я начинал изучать apache, я делал все по разным мануалам, не до конца представляя себе конечную цель. Имею ввиду всю структуру, с дальнейшим наращиванием виртуалхостов, каких-то дополнительных программ и модулей. К чему я это говорю? А к тому, что сразу приучите себя видеть конечный результат. Делайте сразу эстетично и удобно структуру тех же каталогов и логов. Когда у Вас их будет 50, а Вы все еще будете писать все виртуалхосты в одном файле httpd-vhosts.conf — сразу же поймете как это было неправильно. При том, что можно было сразу делать удобнее. Логи хранить отдельно для каждого хоста. Ротировать их и снимать статистику. Один хост — отдельный конфиг. А в httpd-vhosts.conf только глобальные алиасы сервера.Итак, мы установили apche 2.2+PHP5.2 и прописали в http.conf использовать PHP
Для запуска apache необходимо изменить еще несколько секций в конфигурационном файле /usr/local/etc/apache22/httpd.conf
Раскомментировать и изменить значение:
ServerName на своё, например —
ServerName soulbrat.org.ua:80Раскомментировать следующие конфиги:
# Вирутал хосты
Include etc/apache22/extra/httpd-vhosts.conf
# Статистика apache
Include etc/apache22/extra/httpd-info.conf
# Различные настройки по умолчанию
Include etc/apache22/extra/httpd-default.conf
# Убедиться, что раскомментирован конфиг - тут мы будем хранить конфигурационные файлы наших виртуалхостов:
Include etc/apache22/Includes/*.confВ конфигурационном файле /etc/apache22/extra/httpd-vhosts.conf мы будем описывать только глобальные алиасы сервера и дефолтовый хост, который будет выводиться при запросе о несуществующем виртуахосте нашего сервера.
Если мы не создадим виртуалхост по-умолчанию, то при не найденных запросах, будет выводиться виртуалхост, который apache найдет первым по списку, просматривая файлы в порядке очереди — httpd.conf, httpd-vhosts.conf и дальше каталог Includes/*.conf — первый найденный конфиг в алфавитном порядке.
Удаляем все, что есть в нашем текущем /etc/apache22/extra/httpd-vhosts.conf и пишем что нам необходимо:
cat/etc/apache22/extra/httpd-vhosts.conf
NameVirtualHost *:80
# Наш виртуалхост по-умолчанию, слушает 80-й порт
# Какой домен
ServerName default
# Директория с файлами
DocumentRoot/usr/local/www/non-existent-host/www
# Подключаемые директивы, в указанном каталоге
"/usr/local/www/non-existent-host/www">
# Включаем листинг каталога (что бы отключить листинг, добавте минус Options -Indexes)
Options Indexes
# Разрешаем чтение файлов .htaccess
AllowOverride All
# Индексный файл директории
DirectoryIndex index.php
</Directory>
</VirtualHost>
#######################################################
###############ALIASES#################################
# Наш первый алиас, по этому принципу добавляются и остальные
### В алиасе выведем PHP-info для проверки работы нашего php-модуля
### php-info
Alias/testphp"/usr/local/www/test"
"/usr/local/www/test">
Options Indexes
AllowOverride All
# Запретим доступ к нашей странице, всем кроме своей сети. Незачем кому-то видеть настройки нашего PHP
Order deny,allow
Deny from all
Allow from 195.8.40.0/24
DirectoryIndex index.php
</Directory>Создаем необходимые директории и файлы:
mkdir/usr/local/www/non-existent-host
mkdir/usr/local/www/non-existent-host/www
touch/usr/local/www/non-existent-host/www/.htaccess
mkdir/usr/local/www/test
touch/usr/local/www/test/index.phpРедактируем htaccess дефолтового хоста:
ee/usr/local/www/non-existent-host/www/.htaccessЗдесь будет всего одна строчка, которая будет редиректить (перенаправлять), любой, не найденный запрос, на наш виртуалхост (любой), например -
Redirect 301 / http://soulbrat.org.uaПишем наш PHP-info
ee/usr/local/www/test/index.php
phpinfo();
?>Теперь создадим конфигурационный файл, нашего виртуалхоста:
touch/usr/local/etc/apache22/Includes/soulbrat.org.ua.conf
ee/usr/local/etc/apache22/Includes/soulbrat.org.ua.conf
###################################################
###SOULBRAT.ORG.UA######################
ServerAdmin [email protected]
DocumentRoot"/usr/www/soulbrat.org.ua/WWW"
ServerName soulbrat.org.ua
ServerAlias http://soulbrat.org.ua, www.soulbrat.org.ua
"/usr/www/soulbrat.org.ua/WWW">
Options Indexes
AllowOverride All
DirectoryIndex index.php
</Directory>
# Делаем отдельные логи для нашего хоста
ErrorLog/usr/www/soulbrat.org.ua/logs/soulbrat-error.log
CustomLog/usr/www/soulbrat.org.ua/logs/soulbrat.log combined
</VirtualHost>Мне удобно хранить все виртуалхосты в директории /usr/www — это дело вкуса каждого. Так же я создаю имена директорий по доменному имени, так удобней.
Создаем директории:
mkdir/usr/www
mkdir/usr/www/soulbrat.org.ua
mkdir/usr/www/soulbrat.org.ua/WWW
mkdir/usr/www/soulbrat.org.ua/logsСоздаем индексный файл:
touch/usr/www/soulbrat.org.ua/WWW/index.phpИ выведем в нем надпись:
ee/usr/www/soulbrat.org.ua/WWW/index.php
echo"Привет мир!";
?>В конфигурационном файле httpd.conf, мы так же включили статистику apache. Настроим ее:
ee/usr/local/etc/apache22/extra/httpd-info.conf
# включаем ExtendedStatus, меняем значение на On
ExtendedStatus On
# В директиве, добавляем разрешение просмотра этой
# страницы, только нашей внутренней сети.
/server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.0.0.0/24
</Location>Сохраняем изменения.
==============================================================
Часть 4 — Запуск и проверка веб-сервера Apache
==============================================================Итак все готово, можно проверять.
Запускаем наш апач и если все нормально, Вы должны увидеть такую надпись:
/usr/local/etc/rc.d/./apache22start
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.Проверяем что апач запущен и слушает 80-й порт
sockstat |grep80
www httpd 49729 3 tcp46 *:80 *:*
www httpd 49728 3 tcp46 *:80 *:*Видим, что все нормально. Идем дальше, открываем браузер и проверяем http://soulbrat.org.ua — если Вы увидели надпись «Привет мир!» — значит наш виртуалхост работает нормально.
Добавьте к имени алиас — http://soulbrat.org.ua/testphp и должна открыться такая страница:
А теперь введите в строке адреса, просто IP-адрес Вашего сервера — http://195.8.40.85
Если Вы снова увидели надпись «Привет мир!» — значит редирект дефолтового хоста работает так же нормально.Для просмотра статистики веб-сервера, добавим алиас в виде server-status:
http://soulbrat.org.ua/server-status
должна открыться страница текущего состояния Apache, вот такая:
На этом наша установка завершена.
Если вы, вместо PHP-info, видите белый, пустой лист — значит PHP не работает. Возможно Вы забыли прописать нужные параметры в файл httpd.conf
Если у Вас возникли проблемы с запуском, например апач ругается на какие-то файлы и не стартует, более подробную информацию Вы найдете в его логах —
cat /var/log/httpd-error.logЛоги конкретного вируалхоста Вы найдете, там, где их создали:
/usr/www/soulbrat.org.ua/logs/*logПо этой аналогии, теперь Вы можете добавлять следующие виртуалхосты и алиасы.
По материалам: soulbrat.org.ua/?p=230Запись опубликована в рубрике *CentOS, *Unix,*Linux, *Web, FreeBSD. Добавьте в закладки постоянную ссылку.

RSS & RSS to Email