FAMP.

FAMP

А сейчас мы провернем установку FAMP (FreeBSD, Apache, MySQL, PHP) — краеугольный набор инструментов для любого сервера. За основу взят вот этот манул с сайта Лисяры. Про сайт хочу сказать отдельно: я не знаю, кто такой Лисяра, но мое уважение перед этим мужиком громадно: именно на его сайте я узнал большую часть вещей о UNIX и продолжаю черпать новое. А он все делится и делится. В общем — заходите к нему на сайт и читайте как можно больше. А тут я уже пишу во-первых конкретику, во-вторых с целью самообразования, ну и в-третьих как резервную копию. А Лисяра — крутой. Будьте как Лисяра 🙂

Итак — FreeBSD 11.0 x64, Apache 2.4 , MySQL 5.6, PHP 7.0, phpMyAdmin 4.6.4_1

Apache 2.4

С апачем всё просто: 

# cd /usr/ports/www/apache24
# make install clean   

    В всплывающем конфиге я ничего не трогал, все значения оставил по-умолчанию. Но в последующих всегда искал глазами а включал MySQL support (возможны вариации) — поддержку MySQL баз данных, работать в последствии мы будем именно с ними.  Но гладко было на бумаге, мы забыли про овраги — система начала безбожно ругаться на меня: 

1 problem(s) in the installed packages found.
=> Please update your ports tree and try again.
=> Note: Vulnerable ports are marked as such even if there is no update available.
=> If you wish to ignore this vulnerability rebuild with 'make DISABLE_VULNERABILITIES=yes'
Нам поможет:
# portsnap fetch update
# rehash
После этого придётся перезайти в папку с апачем в портах, иначе получим:
make: getcwd: No such file or directory.
И снова повторяем:
# cd /usr/ports/www/apache24
# make install clean   

После того, как апач установился, пропишем в файл /etc/rc.conf следующее:

# ee /etc/rc.conf
# apache24_enable="YES"
# mysql_enable="YES"
Мускула у нас еще нет, но зачем лишний раз бегать туда-сюда?
После этого у Лисяры в мануле начинается долгое (по-первому разу и для новичка) вошканье с конфигом. Главное — запомнить: не лезь в конфиги сонный.  Конфиг открывается это командой:
# ee /usr/local/etc/apache24/httpd.conf
Но, так как я скотина ленивая, я предпочитаю сначала установить всю херню, а потом уже ковырять конфиги, что бы по сотне раз к ним не возвращаться. Переходим к следующей главе:


MySQL

Начинаем установку мускула:

# cd /usr/ports/databases/mysql56-server/
# make install clean

Так как мы установливаем более новую версию (5.6) то и процесс установки у нас будет чуточку проще. Сразу после установки делаем:

# /usr/local/etc/rc.d/mysql-server onestart
# mysql_secure_installation

 

Этот расчудесный скрипт запустит сценарий доустановки мускула. Отвечаем на все вопросы утвердительно и назначаем новый пароль root‘у мускула. !!!!Внимание!!!! — root мускула не одно и тоже что и системный! Но пароль запомнить, в дальнейшем он нам пригодится. Создаем файл, куда мускул будет писать логи и даем ему доступ на него же:

# touch /var/log/mysql.log
# chown mysql:mysql /var/log/mysql.log

Создаем конфигурацию мускула:

# touch /usr/local/etc/my.cfg
# ee /usr/local/etc/my.cfg

И вписываем в неё следующее:

[mysqld]
log = /var/log/mysql.log

Переходим к следующей главе:


PHP

Попробуем установить новомодный PHP 7.0. И так же как и прежде, здесь  и далее везде где можно включаем поддержку MySQL и Apache.

# cd /usr/ports/lang/php70/
# make install clean

После этого устанавливаем расширения PHP:

# cd /usr/ports/lang/php70-extensions/
# make install clean

Далее — модуль сопряжения PHP и Apache:

# cd /usr/ports/www/mod_php70/
# make install clean

И PHPMyAdmin:

# cd /usr/ports/databases/phpmyadmin
# make install clean

Все. Установка на этом всё. Впереди — самый длительный процесс: настройка, допиливание под себя, запуск, маты и проклятья, отладка и снова запуск.


Конфигурация, отладка и запуск.

Apache24

Начинаем с апача. Основной конфиг у апача один:

/usr/local/etc/apache24/httpd.conf

С него и начнем. Рассмотрим основные параметры которые порой приходится менять:

ServerRoot — определяет директорию, куда установлен сам апач. В 99% случаев как стоит по-умолчанию, так трогать и не надо.

Listen — определяет, какой порт будет «слушать» наш веб-сервер. Полезно, если машина используется для чего-то еще — с помощью маршрутизатора можно например настроить переадресацию входящих запросов с 80 на 500 (например) порт. В таком случае сюда надо будет выставить тоже 500 порт. Но — если вы только начинаете — оставьте это значение по умолчанию. Лучше не трогать — хай работает. По-умолчанию 80.

User\Group — по умолчанию www оба поля. Определяет, от какого пользователя и группы будет работать веб-сервер. Не трогаем.

ServerAdmin — почтовый адрес, куда сервер будет слать письма в случае проблем. И  вообще контакты админа.

ServerName — наш домен. Но чаще всего срабатывает автоопределение, а вот конфликты бывают. Лучше оставить как-есть.

DocumentRoot — та папка в которой будет лежать наш сайт. Можете назначить любую папку, только не забудьте ее создать на диске и назначить владельцем пользователя www.

Теперь приступим к настройке апача вплотную. Создаем папку, где у нас будет храниться сам сайт:

# mkdir /DATA
# mkdir /DATA/WWW
# chown -R www:www /DATA/WWW

И начинаем уже обстоятельно править конфигурациооный файл /usr/local/etc/apache24/httpd.conf :

Сразу под ServerRoot вставляем алиас для phpMyAdmin, держать его постоянно включенным я не захотел, поэтому у меня два блока. Когда требуется включение пхпмайадмин, я снимаю комментарии в нужной части, и закрываю комментариями ненужную. Выглядит так:

#
#
#  PHPMyAdmin
#
#
Alias /pma "/usr/local/www/phpMyAdmin/"
#           !!! ON !!!
#    <Directory "/usr/local/www/phpMyAdmin/">
#        Options none
#        AllowOverride Limit
#        Order Deny,Allow
#        Require all granted  
#    </Directory>

     

#            !! OFF !!
     <Directory "/usr/local/www/phpMyAdmin/">
        Options none
        AllowOverride Limit
        Order Deny,Allow
        Deny from all
     </Directory>

Соответственно по адресу wash-sayt.ru/pma и будет открываться приветственное окно майадмина.

Теперь надо научить апач открывать пхп файлы, приводим конфиг к такому виду:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html index.php index.htm
</IfModule>

В блок <IfModule mime_module> добавим информацию о PHP:

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig etc/apache24/mime.types

    #
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media 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
    #
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
</IfModule>

Далее — создадим конфиг php.ini на базе готового:

# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

На этом базовые настройки закончены. Допиливание phpMyAdmin будет здесь же, но в последующих редакциях.