Установка веб-сервера apache22+php52

apache
Apache HTTP-сервер (сокращение от англ. a patchy server) — свободный веб-сервер.
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
— Конфигурация сервера (httpd.conf).
— Конфигурация виртуального хоста (httpd.conf c версии 2.2 extra/httpd-vhosts.conf).
— Конфигурация уровня директории (.htaccess).

Ставить будем apache22+php52

==============================================================
Часть 1 — Устанавливаем веб-сервер Apache
==============================================================
Первое, с чего необходимо начинать любую установку, это обновление портов . Рекомендую держать Ваши порты в current состоянии.
Далее, переходим в порты:

cd /usr/ports/www/apache22

выполняем установку:

/usr/ports/www/apache22/make install clean

Появится окошко выбора устанавливаемых опций, оставляем все в дефолте и нажимаем Ок

Полезные советы:
Если вам понадобится выбрать другие опции в апаче (или в любом другом порту), выполните /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. Так как мы будем использовать версию 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 root@soulbrat.org.ua
    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. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91