Установка Apache 2.2.x и PHP5 на FreeBSD 8.x

Apache — http демон, крайне незаменим для поднятия разного рода сайтов. Этого индейца не любит наверно, только тот, кто его не знает =) .
По факту это самый легко настраиваемый, живучий, производительный и гибкий http демон. Его разрабы хорошо позаботились о нем, для того, чтобы извращаться можно было с ним, как захочешь.


Узнать больше об Apache можно на сайте http://www.apache.org/.


Крайне рекомендую обновить, если не систему, то хотя бы порты, дабы не наставить проблемного и дырявого софта. И только потом продолжать установку и настройку оного.

Ставить будем версию Apache 2.2.x Найдем ее и установим:

# whereis apache22
apache22: /usr/ports/www/apache22
#cd /usr/ports/www/apache22
#make install clean

Параметры порта, без надобности лучше не менять. Отредактируем конфигурационный файл

/usr/local/etc/apache22/httpd.conf

:

ServerAdmin webmaster@domain.tld
...
ServerName www.domain.tld:80
...
# Various default settings
Include etc/apache22/extra/httpd-default.conf
# Virtual hosts
Include etc/apache22/extra/httpd-vhosts.conf
...
# Secure (SSL/TLS) connections
Include etc/apache22/extra/httpd-ssl.conf

Добавим поддержку php. В этом же файле приведем значения к такому виду:

...
<IfModule dir_module>
DirectoryIndex index.html index.php index.php5
</IfModule>
...
...
<IfModule mime_module>
TypesConfig etc/apache22/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>

Если собираетесь подымать админку какую, на php, то при ее сборке и установке php5 установится в качестве зависимости. Если нет, то нужно установить этот язык отдельно. Не забудьте выбрать “APACHE” в меню установки.:

#cd /usr/ports/lang/php5
#make all install clean

Надо поставить еще расширения для PHP. В меню установки можно выбрать самое потребное в общих случаях “BCMATH“, “GETTEXT“, “IMAP“, “MCRYPT“, “MYSQL“, “MYSQLI“, “SESSION“, “SOCKETS“ и “WDDX”.

#cd /usr/ports/lang/php5-extensions
#make all install clean

В /usr/local/etc/ ищем php.ini-development и копирим его в php.ini , правим:

# cd /usr/local/etc/
# cp ./php.ini-development ./php.ini
# ee ./php.ini

Здесь находим и корректируем до следующего вида:

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
include_path = "."

Создадим SSL сертификат для Apache:

#mkdir -p /usr/local/etc/apache22/sslcert
#cd /usr/local/etc/apache22/sslcert/
#openssl genrsa -des3 -out server.key 1024
#openssl req -new -key server.key -out server.csr
#openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
#chmod 0400 /usr/local/etc/apache22/sslcert/server.key
#chmod 0400 /usr/local/etc/apache22/sslcert/server.crt

Удалим пароль из SSL сертификата: это как бы необязательно, но напрягает каждый раз при подключении его вводить.

#cd /usr/local/etc/apache22/sslcert/
#cp ./server.key ./server.key.orig
#openssl rsa -in server.key.orig -out server.key

Кому надо PEM вариант, то вот:

#openssl req -new -nodes -x509 -out server.pem -keyout server.pem -days 3650

Защитим файлы ключей.

#chmod 400 /usr/local/etc/apache22/sslcert/*

Отредактируем файл /usr/local/etc/apache22/extra/httpd-default.conf

ServerTokens Prod
...
ServerSignature Off
...
HostnameLookups Off
...

Отредактируем файл /usr/local/etc/apache22/extra/httpd-ssl.conf

ServerName www.domain.tld:443
...
ServerAdmin webmaster@domain.tld
...
SSLCertificateFile /etc/ssl/apache/server.crt
...
SSLCertificateKeyFile /etc/ssl/apache/server.key
...

Добавим Apache в автозапуск системы и запустим его:

# ee /etc/rc.conf
apache22_enable="YES"
#/usr/local/etc/rc.d/apache22 start

Сразу же смотрим в

sockstat

и должны видеть несколько процессов

httpd

, причем на портах 80 и 443

# sockstat -4l
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
www      httpd      4290  3  tcp4 6 *:80                  *:*
www      httpd      4290  4  tcp4   *:*                   *:*
www      httpd      4290  5  tcp4 6 *:443                 *:*
www      httpd      4290  6  tcp4   *:*                   *:*
www      httpd      4270  3  tcp4 6 *:80                  *:*
www      httpd      4270  4  tcp4   *:*                   *:*
www      httpd      4270  5  tcp4 6 *:443                 *:*

Если этих процессов нет, смотрим

/var/log/httpd.log

и

/var/log/messages

на предмет ошибок и устраняем их.

Ну что же, пробуем: Открываем браузёр и в адресную строку его вбиваем “http://domain.tld/” или “http://ВАШ_IP/”, Вы должны увидеть умолчальную страницу — “It Works!“.
После этого лезем на “https://domain.tld/” или “https://ВАШ_IP/” для проверки защищенного соединения SSL/TLS.
Если оба варианта открылись, то надо немного порадоваться — Вы заставили работать Apache22 как демон. Если нет, то идем в самое начало статьи и смотрим вдумчиво с пониманием на все конфиги, ищем ошибки. Также посмотрите журналы на предмет ошибок.


Журналы всегда почему-то устроены так, что показывают не причину, а уже конкретное следствие какого-либо действия. И самому придется додумать, понять или придумать как это могло произойти. Это нужно сделать, потому-что нужно устранить причину, а не следствие проблемы.
Например: приложение, при попытке старта, пишет в журнале, что отсутствует /var/run/*/*.sock и умирает.
Причиной, в данном случае может быть банальная нехватка прав у учетной записи, инициирующей данный процесс создания файла. Устранение причины — дать права учетке на то место, куда нужно /var/run/*/ .

Дальше размещение сайта рассмотрим на примере phpMyAdmin.
Прикрутить любой сайт и его содержимое к Apache22 после установки можно двумя способами:
1. Вывалить его доменом второго

http://host.local

или третьего уровня

http://phpmyadmin.host.local

или чего там у Вас заместо

host.local

2. Сделать алиас вида

http://host.local/phpmyadmin/


Указывать нужно именно как написано, слэш в конце «…yadmin/» обязателен, иначе браузёр не найдет адрес.

Первый случай требует обязательного внесения доменного имени в DNS сервер окружения, где находится ваш хост. Чтобы другие хосты могли разрешить это имя.

Если это локалка, то на локальном DNS сервере, если это интернет хост во всемирной сети, то в админке Вашего интернет-домена. Например такие админки дает nic.ru, он же первый регистратор доменных имен в России. В любом случае после внесения изменений, любой держатель доменных зон гарантирует соответствие доменного имени указанному IP адресу через 4 часа. Хотя, как правило, срабатывать начинает раньше.

Для первого случая лучше изменить конфигурационный файл виртуальных хостов по адресу

/usr/local/etc/apache22/extra/httpd-vhosts.conf

.


Тоже самое можно сделать и в основном конфигурационном файле

/usr/local/etc/apache22/httpd.conf

, но не люблю бардак и Вам крайне советую подходить структурно к формированию конфигов, исключительно ради простоты, логичности и удобства. Память, она ведь тоже подводит. Хотя если будет у Вас всего один сайт, лучше, наверно запихать конфиг секции виртуального хоста в httpd.conf


В файле уже есть два примера, которые нужно просто оформить под себя, а ненужные просто закоментировать знаком «#». Обязательными здесь являются «NameVirtualHost *:80» и секция «VirtualHost *:80», в которой Вы и укажете ваш виртуальный домен-сайт.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/www/phMyAdmin"
ServerName phpmyadmin.dummy-host2.example.com
ErrorLog "/var/log/dummy-host2.example.com-error_log"
CustomLog "/var/log/dummy-host2.example.com-access_log" common
</VirtualHost>

После редактирования, сохраняем файл, и рестартуем apache

# apachectl restart

Пробуем лезть по адресу http://phpmyadmin.dummy-host2.example.com

Второй случай не требует каких-либо действий со стороны службы DNS, поэтому более прост и быстр.
Впихнем в Apache22 админку phpMyAdmin алиасом, для этого сделаем соответствующий phpmyadmin.conf в /usr/local/etc/apache22/Includes/

# cd /usr/local/etc/apache22/Includes/
# ee ./phpmyadmin.conf

Врисовываем простейшее содержимое в конфиг, обратите внимание РеГиСтР буковок очень важен:

Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
<Directory "/usr/local/www/phpMyAdmin/">
Options Indexes
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Сохраняем, перезапускаем Apache22

# apachectl restart

Пробуем лезть на Ваш алиас. Применительно к настоящему конфигу, выглядеть это будет примерно так: http://dummy-host2.example.com/phpmyadmin/
Если все получилось, хорошо, если нет смотрите что сделали не так, проверяйте себя по синтаксису и правам доступа к файлам и папкам.


Вроде бы все должно работать. (С) Petrushkin

Установка Apache 2.2.x и PHP5 на FreeBSD 8.x: 1 комментарий

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

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

CAPTCHA изображение

*