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 ``
make
deinstall
''
and
install
this port again
by ``
make
reinstall
''
to upgrade it properly.
If you really wish to overwrite the old port of www
/apache22
without deleting it first,
set
the variable
"FORCE_PKG_REGISTER"
in
your environment or the
"make install"
command
line.
*** Error code 1
Stop
in
/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/make
install
clean
Появится меню выбора соответствующих модулей, нам необходимо поставить галочку на:
[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 configuration
file
:
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
Появится окно с выбором модулей. Здесь Вы должны выбрать модули, которые планируете использовать в дальнейшей работе вашего веб-сервера.
Мне необходимы следующие модули:
Options
for
php52-extensions 1.3_1
│ │ [X] BCMATH
bc
style precision math functions
│ │ [X] BZ2
bzip2
library 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
/NISO
Z39.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/.
/apache22
restart
Все, Ваш модуль 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/.
/apache22
start
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
Проверяем что апач запущен и слушает 80-й порт
sockstat |
grep
80
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. Добавьте в закладки постоянную ссылку.