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 будет здесь же, но в последующих редакциях.