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