freebsd apache php postgresql
Freebsd apache php postgresql
В качестве примера используются apache24, php5, mysql56.
Операционная система — FreeBSD 10.
Подготавливаем сервер
Заходим под суперпользователем:
Выставляем часовой пояс (у меня московское время) и сразу синхронизируем время:
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime; ntpdate 0.freebsd.pool.ntp.org; |
Создаем задание в cron для автоматической синхронизации времени каждую ночь:
# echo ‘0 0 * * * /usr/sbin/ntpdate 0.freebsd.pool.ntp.org’ >> /var/cron/tabs/crontab && crontab /var/cron/tabs/crontab |
Обновляем список пакетов:
# pkg update && pkg upgrade |
# freebsd-update fetch && freebsd-update install |
Установка и настройка MySQL
Устанавливаем из пакета mysql-server:
Разрешаем запуск демона mysql:
# echo ‘mysql_enable=»YES»‘ >> /etc/rc.conf |
# service mysql-server start |
Меняем пароль для пользователя root в mysql:
Установка и настройка Apache
Указываем правильное имя сервера через файл hosts:
192.168.166.155 dmosk dmosk.local
* IP-адрес указан для локального сервера, для внешнего сервера указываем внешний адрес. dmosk — имя моего сервера.
Разрешаем запуск демона apache24:
# echo ‘apache24_enable=»YES»‘ >> /etc/rc.conf |
Отредактируем файл конфигурации для apache:
# ee /usr/local/etc/apache24/httpd.conf |
# ee /usr/local/etc/apache24/extra/httpd-vhosts.conf |
# service apache24 start |
Проверяем работоспособность сервера apache, введя в адресной строке браузера IP-адрес сервера (в данном примере, 192.168.166.155). Сервер должен вернуть ответ «It Works!»
Установка и настройка PHP
Устанавливаем интерпретатор PHP с необходимыми модулями:
Редактируем файл конфигурации php.ini:
# ee /usr/local/etc/php.ini |
# ee /usr/local/etc/apache24/httpd.conf |
# cd /usr/local/www/apache24/data && mv index.html index.php |
Теперь добавляем в него функцию вызова параметров настройки сервера phpinfo():
# service apache24 restart |
Проверьте работоспособность сервера apache, введя в адресной строке браузера IP-адрес сервера (в данном примере, 192.168.166.155). Сервер должен вернуть много параметров в различных таблицах.
Также в данных таблицах вы должны увидеть «MySQL Suppert — Enabled». Это говорит о том, что сервер готов к работе с базой MySQL.
Freebsd apache php postgresql
Сообщения: 673
Благодарности: 21
Если Вы это видите, это значит, что установка ПО веб-сервера Apache на этой системе завершилась успешно. Вы можете теперь добавлять содержимое в эту директорию и заменить эту страницу. Вы видите это вместо ожидаемой страницы? Эта страница находится здесь потому, что администратор системы изменил конфигурацию этого веб-сервера. Пожалуйста, свяжитесь с лицом, ответсвенным за поддержку этого сервера для выяснения ваших вопросов. Apache Software Foundation, автор ПО веб-сервера, которым пользуется администратор этой системы, не связан с поддержкой этой системы и не может помочь Вам разрешить проблемы конфигурации. |
Если вношу изменения в /usr/local/etc/apache2/httpd.conf
DirectoryIndex index.php index.html index.html.var
то начинает качать index.php
Invalid page header in block 946006 of pg_toast_3847720 |
То есть, файл повреждён, и работы дальше не будет. Что его могло повредить – повод для отдельного выяснения, а мне нужен был быстрый рецепт обхода. В таких случаях может спасти (возможно, с потерей пары записей, но возможно и целиком) употребление перед VACUUM команды
После этого VACUUM не споткнётся на битых страницах, а просто их обнулит. И дамп запишется, и всё такое.
template1=# CREATE USER user_name WITH CREATEDB LOGIN PASSWORD ‘Pas$w0rd’; CREATE ROLE template1=# select * from pg_shadow; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ————+———-+————-+———-+————+————————————-+———-+———— pgsql | 10 | t | t | t | md500ba091dd8401516e01e318ebf4c476f | | fomalhaut | 16384 | t | f | f | md54117783cb97c642fbe0eb685653b7b67 | | (2 rows) А зачем шифровать swap. При этом всё остольное не зашифровано. Fomalhaut, 2011-01-24 в 1:12:51 Ёхман, 2013-05-10 в 15:48:18 Опция «-d» тоже не нужна, поскольку отмонтированние свопа как правило все равно не осуществляется до завершения работы. Опция «-e» тоже не нужна, поскольку blowfish не дает никаких преимуществ перед стандартным AES. На самом деле вся премудрость шифрования свопа заключается в одной операции: достаточно прописать суффикс «.eli» к устройству свопа во fstab, и не париться. Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки. Установка на FreeBSD Apache, Mysql и PHP для сайтовВ этом уроке вы узнаете, как установить Apache, MySQL и PHP на FreeBSD. Эта комбинация программ с открытым исходным кодом более известна как стек FAMP, FAMP является акронимом для трех. Стек FAMP — это, по сути, набор программных утилит, которые предоставляют серверу FreeBSD все необходимое для размещения динамических веб-страниц. Если вы когда-либо использовали Linux, вы, вероятно, заметили сходство со стеком LAMP, который служит той же цели в Linux. Вне зависимости от того, арендуете ли вы виртуальные серверы в Германии или другой стране, это руководство поможет вам превратить только что установленную систему в полноценный веб-сервер и разместить на нём сайты. Шаг 1. Подготовьте вашу систему FreeBSD к установке FAMPПрежде чем мы начнем установку, лучше убедиться, что наша система обновлена. Чтобы узнать, какую версию вы используете, введите: Если версия устарела, введите команду ниже, чтобы обновить ее: Затем установите поддерживающие зависимости: Затем добавьте нового пользователя с помощью следующей команды: Вам будет предложено ввести учетные данные пользователя и информацию об учетной записи. Наконец, выполните команду visudo, как показано ниже, чтобы делегировать командные привилегии администратора всем пользователям группы wheel: Используйте команду su, за которой следует новое имя пользователя, чтобы изменить учетную запись на ту, которую вы только что создали: Также обновите часовой пояс: Шаг 2. Установите сервер Apache HTTPS 2.4Из всех используемых сегодня веб-серверов HTTPS-сервер Apache является самым популярным и используется во всем мире для размещения как статических, так и динамических веб-страниц и приложений. Pkg, менеджер пакетов FreeBSD по умолчанию, позволяет удобно установить сервер Apache HTTPS из репозитория FreeBSD. Введите команду ниже, чтобы установить Apache с помощью pkg: Посмотрите, какая версия установлена, с помощью команды ниже: Перед загрузкой Apache необходимо включить его: Затем введите команду ниже, чтобы запустить Apache: Проверьте запуск с помощью следующей команды: В выводе должно быть четко указано, работает ли он. Вы также можете убедиться, что все работает правильно, указав свой общедоступный IP-адрес в поле поиска вашего веб-браузера. Если установка прошла гладко и все работает правильно, вы должны быть перенаправлены на веб-страницу, подтверждающую вашу установку. Шаг 3. Установите MySQL 8.0 с помощью pkgКогда HTTPS-сервер Apache активен и работает, мы можем перейти к третьему шагу: установке MySQL. MySQL — это сервер базы данных, который поддерживает и регулирует доступ к базам данных, в которых хранится информация, относящаяся к веб-сайту. Как и в случае с Apache, мы загрузим MySQL из репозитория FreeBSD с помощью pkg. После выполнения указанной выше команды в вашей системе должна быть установлена последняя версия. Найдите последнюю версию в Интернете, а затем сравните ее с версией, установленной на вашем диске, с помощью следующей команды: Перед запуском MySQL необходимо включить его: Введите команду ниже, чтобы запустить базу данных: Проверьте запуск, введя следующую команду: Чтобы усилить меры безопасности в вашей базе данных, вы должны ввести сценарий безопасности, чтобы удалить некоторые несоответствия с MySQL и ограничить доступ к вашей системе: Затем установите пароль и ответьте на последующие вопросы. Вы можете выбрать значение по умолчанию для всех вопросов, нажав: key_enter: Шаг 4: установите PHP 7.4Последний компонент стека FAMP — это PHP, ведущий язык программирования в области веб-разработки на данный момент. Без PHP динамические веб-сайты, которые вы хотите запускать на своем сервере, не будут полностью функционировать. Подобно тому, как мы использовали команду pkg раньше, мы также можем установить PHP из репозиториев FreeBSD. Чтобы установить важные пакеты php74, php74-mysqli и mod_php74, введите команду ниже: Смотрите установленную версию: Если установленная версия актуальна, перейдите к репликации образца файла конфигурации PHP, выполнив команду, как показано ниже: Чтобы запустить PHP, введите: Чтобы проверить, запущен ли PHP, введите: Чтобы добавить что-то еще к только что установленному пакету PHP, попробуйте несколько вспомогательных модулей. Найдите пакеты, написанные с помощью модулей PHP: Затем используйте команду ниже для поиска любых доступных модулей PHP: Вы должны увидеть несколько модулей PHP. Вы можете установить любой из них, который хотите попробовать, с помощью команды pkg. Шаг 5. Настройте Apache для загрузки модулей PHPСтек FAMP может работать только тогда, когда Apache настроен для работы с PHP. Выполните команду ниже, войдите в файл конфигурации: Затем добавьте в файл следующие записи: Чтобы применить изменения, сохраните и выйдите из файла. Протестируйте конфигурацию Apache с помощью следующей команды: Чтобы применить настроенные изменения, перезапустите Apache с помощью следующей команды: Шаг 5: Тестирование обработки PHPПрежде чем приступить к работе со стеком FAMP, рекомендуется проверить, нет ли проблем с PHP. Настройка PHP может облегчить для нас эту ситуацию. Вы можете легко выполнить настройку с помощью простого скрипта PHP. Используйте команду ниже: Скопируйте строку ниже и вставьте ее в файл конфигурации: Перейдите по адресу http://your_server_IP/info.php, и вы будете перенаправлены на эту страницу: Сделайте детали сервера приватными, удалив файл info.php. В итогеВ этом руководстве показано, как установить стек FAMP в системе FreeBSD 12.2. Теперь вы можете размещать динамический веб-контент в своей системе и использовать его как полнофункциональный веб-сервер. Будь то динамический веб-сайт или крупномасштабное веб-приложение, потенциал вашего сервера не имеет границ. Однако не забудьте ознакомиться с дополнительными руководствами по FreeBSD на нашем веб-сайте, прежде чем начать. На нашем веб-сайте много контента, и вы обязательно найдете то, что поможет вам начать работу. Кстати! Вот видео по установке операционной системы FreeBSD, которое будет полезно посмотреть перед выполнением рекомендаций, описанных в статье. FreeBSD + PostgreSQL: тюнинг сервера БДНаверное, моя статья будет не интересна матерым сисадминам и покажется копипастом. Но я адресую ее тем, кто, как и я, будучи только разработчиком, впервые столкнулся с необходимостью еще и администрировать сервер, при этом решая задачи высоконагруженной БД. И чтобы гугл вас не проклял, постараюсь собрать в одном месте основные приемы для разгона сервера БД, которые мне успешно удалось реализовать. Входные данные моей задачи следующие: двухпроцессорная (Intel Xeon) машинка, 8 хардов по 500Гб и 12Гб оперативки. И полный, в том числе физический, доступ к этому добру. Задача: организовать быстрый сервер БД на основе ОС FreeBSD и PostgreSQL. 1. RAIDПравильное разбиение имеющихся хардов на рейды нам понадобится для такой возможности PostgreSQL, как tablespacing (об это ниже). Свои 8 хардов я разбил на пары, организовав таким образом: две пары объеденил в RAID1 и две пары в RAID0 (вообще, для наших целей нужно минимум 6 хардов — две пары объеденить в RAID1, остальные 2 оставить как есть). При наличии же большего числа хардов можно придумать что-нибудь и понадежнее, типа RAID5, RAID10 и т.п., но есть вероятность, что работать это будет несколько медленнее. Не буду вдаваться в подробности как организовывать рейды, т.к. в железе я не силен, скажу лишь только, что никаких контроллеров не трогал, т.к. на серваке после биоса грузится утилита, которая позволяет это сделать программно. 2. Установка ОС, сервера БД и использование своего ядраСначала просто ставим фряху на первый RAID1. Я ставил дистрибутив FreeBSD 8.2 Release AMD64 со всеми файлами. 64-х битная версия нужна, чтобы система «видела» всю оперативную память. 1) Максимальное число соединений
(это значения для max_connection = 256). 2) Максимальный объем оперативной памяти, который может занять PostgreSQL (это важно при объемных запросах). За него отвечает параметр shared_buffers в postgresql.conf. Насчет значения для этой величины существуют разные рекомендации. Я пришел к выводу, что если это выделенный под БД сервер, то можно одному процессу отдать почти весь объем оперативки минус то, что нужно системе на свои нужды. Я выделил 8Гб из 12. Для того, чтобы система разрешила выставить нужное нам значение для shared_buffers, в ядре необходимо изменить опцию SHMMAXPGS, значение которой вычисляется по формуле: SHMMAXPGS = shared_buffers / PAGE_SIZE в моем случае shared_buffers = 8Гб, PAGE_SIZE = 4Кб для всех i386, значит
Осталось скомпилировать ядро с конфигом KERNEL_MAX_PERF. Сама процедура компиляции ядра проста, здесь я вас отсылаю к официальному ману. Загружаем ОС со своим ядром, устанавливаем PostgreSQL последней версии (у меня это была версия 9.0.4), сначала для проверки стартуем PostgreSQL с умолчальным конфигом. Если все ок, меняем параметры в postgresql.conf на оговоренные выше, делаем рестарт PostgreSQL. Запустилось — едем дальше. Замечание: если по какой-либо причине не удалось скомпилить ядро с выставленными параметрами, то можно их прописать в sysctl.conf:
и запускать фряху с умолчальным ядром GENERIC. 3. TablespacingTablespacing — это возможность PostgreSQL определять в файловой системе локации, где будут храниться файлы, представляющие объекты баз данных. Проще говоря, если мы раскидаем таблицы, индексы и логи на разные диски, то чтение запись/данных будет происходить быстрее, чем если бы все это находилось на одном диске. Вот здесь нам и понадобятся наши рейды. Напомню, что у нас имеется четыре раздела: два RAID1 и два RAID0. На первом RAID1 у нас установлена операционка и постгрес. На втором RAID1 будем хранить таблицы нашей БД. Предположим, что он монтирован как /disk1. На первом RAID0 будем хранить индексы. Пусть он будет монтирован в файловой системе как /disk2. Логам оставим второй RAID0, предполагаем, что он монтирован как /disk3.
Если все сделали правильно, демон должен запуститься. 4. PartitioningПартицирование – это логическое разбиение одной большой таблицы на маленькие физические куски. Это позволяет существенно ускорить время выполнения запросов, если таблица действительно большая. У меня довольно типичная ситуация: в кроне работает скрипт, собирая статистику по некоему измерению. По веб-интерфейсу пользователь может эту статистику посмотреть. За неделю в таблицу инсертится примерно 10млн строк. Если все писать в одну таблицу, то вас проклянут. Работать все это будет ужасно медленно. Попробуем разбить эту таблицы на куски, взяв за критерий разбиения время. В таком случае, когда пользователь захочет посмотреть статистику, а посмотреть ее можно только за определенный временной период, серверу БД при запросе придется шерстить не всю большую таблицу, а несколько маленьких, попавших в выбранный временной промежуток. К сожалению, в PostgreSQL партицирование не реализовано на уровне БД, поэтому придется его делать ручками, используя свойство наследования таблиц.
Конечно, писать такие большие запросы неудобно. Я написал скрипт на php, который создает таблицы и все что для них нужно на целый год вперед. Вот, пожалуй, и все, что я хотел рассказать. Если поделитесь своим опытом из данной области, буду очень благодарен.
|