Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Security —> Apache, PostgreSQL, phpPgAdmin

Установка Apache, PostgreSQL, PHP и phpPgAdmin


Заметка сделана для себя (вечно какая-то важная мелочь забывается :) и молодого коллеги, дабы давать на изучение и приучение к FreeBSD. :)
Описываемое актуально для FreeBSD 9.0, Apache 2.2, PostgreSQL 9.2, PHP 5.4 и phpPgAdmin 0.6.4.

ОГЛАВЛЕНИЕ

Установка web-сервера Apache
Установка сервера PostgreSQL
Установка сервера PHP
Установка сервера phpMyAdmin
Последние штрихи
МЕЛОЧИ

  • Мелочь №1: Сброс забытого пароля пользователя для PostgreSQL
  • Мелочь №2: Обход ошибки при "битых страницах" БД

    Установка web-сервера Apache

    Здесь всё про: главное - установить поддержку MySQL в конфигурации порта:
    $ cd /usr/ports/www/apache22
    $ make install clean
    

    В файл /etc/rc.conf прописываем для автозапуска:
    apache22_enable="YES"
    

    В конфигурационный файл /usr/local/etc/apache22/httpd.conf прописываем имя сервера и адрес админа:
    ...
    ServerAdmin admin@mydomain.su
    ...
    ServerName mydomain.su:80
    ...
    

    В файл конфигурации загрузчика /boot/loader.conf добавляем строку:
    accf_http_load="YES"
    

    Запускаем наш Apache:
    $ apachectl start
    

    Если ошибок не появилось, значит всё нормально и сервер запустился.

    Установка сервера PostgreSQL

    Установка PHP

    Ставил сам PHP, не забывая указать в конфигурации сборки поддержку PostgreSQL и Apache:
    $ cd /usr/ports/lang/php5/
    $ make install clean
    

    В конфигурационный файл Apache /usr/local/etc/apache22/httpd.conf добавляем параметр DirectoryIndex в блок <Directory />, чтобы получилось следующее:
    <Directory />
        DirectoryIndex index.php index.html
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    

    Теперь надо PHP "активировать" в Apache. Для этого добавим две строчки в /usr/local/etc/apache22/httpd.conf в блоке <IfModule mime_module>:
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    

    Так же создадим файл cat /usr/local/etc/php.ini на основе /usr/local/etc/php.ini-production, удалив комментарии:
    $ cat php.ini-production | grep -v ";" > php.ini
    

    и добавим в него в блок [Date] параметр временной зоны:
    [Date]
    date.timezone = Europe/Moscow
    

    Перезапустим Apache:
    $ apachectl restart
    

    Для проверки нормальных подключения и работы модуля поддержки PHP можно открыть в браузре по ссылке http://xxx.xxx.xxx.xxx/index.php предварительно созданный файл /usr/local/www/apache22/data/index.php следующего содержания:
    <?php
        phpinfo( );
    ?>
    

    Для работы phpMyAdmin ещё понадобятся расширения PHP (php5-extensions), но ставить их отдельно смысла особого нет: она будут установлены, как необходимая зависимость для phpMyAdmin.

    МЕЛОЧИ

    Мелочь №1: Сброс забытого пароля пользователя для PostgreSQL
    http://wiki.linux.ru/wiki/index.php/Как_сбросить_пароль_root_PostgreSQL_сервера
    Остановим PostgreSQLSQL сервер
    $ /usr/local/etc/rc.d/postgres stop
    

    Хабра 173623
    http://myfreebsd.ru/other/administrirovanie-postgresql
    http://postgresql-lab.blogspot.ru/2013/01/175.html
    Мелочь №2: Обход ошибки при "битых страницах" БД
    В пункте насчёт VACUUM неплохо бы указать, что делать, если VACUUM не может производиться. Недавно столкнулся с ситуацией, когда что VACUUM, что pg_dumpall мирно дохнут, выдав на-гора что-то вроде:
    Invalid page header in block 946006 of pg_toast_3847720

    То есть, файл повреждён, и работы дальше не будет. Что его могло повредить – повод для отдельного выяснения, а мне нужен был быстрый рецепт обхода. В таких случаях может спасти (возможно, с потерей пары записей, но возможно и целиком) употребление перед VACUUM команды
    SET zero_damaged_pages=true;
    

    После этого VACUUM не споткнётся на битых страницах, а просто их обнулит. И дамп запишется, и всё такое.

    -----------------
    А вот это зря.. Нужно переодически это делать, я у себя делаю раз в 4 часа обычный VACUUM, раз в сутки FULL ANALYZE + backup.
    Так что более ли менее шустро всё работает и бэкап есть в случае чего.
    ---------
    >способ 1
    >postgresql$ vaccumdb -v database
    >
    >способ2
    >1. pg_dump
    >2. dropdb
    >3. createdb
    >4. pg_restore
    -----------------
    psql --username=pgsql db_zabbix
    -----------------

    СУБД PostgreSQL
    http://postgresql.ru.net/manual/index.html
    http://postgresql.ru.net/manual/backup-dump.html
    http://postgresqlrussia.org/pgsqldocrus/doc/src/sgml/auth-pg-hba-conf.html
    http://www.lissyara.su/?id=2063
    http://wiki.lissyara.su/wiki/Установка_PostgreSQL
    http://www.lissyara.su/articles/freebsd/mail/roundcube+postgresql/
    http://guruadmin.ru/page/15-practical-postgresql-database-administration-commands
    http://forum.oszone.net/thread-80181.html
    http://www.opennet.ru/tips/info/182.shtml
    http://www.opennet.ru/tips/sml/32.shtml

    http://postgresql.ru.net/manual/backup-dump.html
    http://www.postgresql.org/docs/9.2/interactive/runtime-config-autovacuum.html
    http://postgresql.ru.net/pgtune/postgresql.html#SECTION00800000000000000000

    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)

    template1=# select * from pg_database;
    datname | datdba | encoding | datcollate | datctype | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | dattablespace | datacl
    -----------+--------+----------+------------+----------+---------------+--------------+--------------+---------------+--------------+---------------+----------------------------
    template1 | 10 | 6 | C | C | t | t | -1 | 11866 | 654 | 1663 | {=c/pgsql,pgsql=CTc/pgsql}
    template0 | 10 | 6 | C | C | t | f | -1 | 11866 | 654 | 1663 | {=c/pgsql,pgsql=CTc/pgsql}
    postgres | 10 | 6 | C | C | f | t | -1 | 11866 | 654 | 1663 |
    (3 rows)

    template1-# \q
    $ psql -l
    Password:
    List of databases
    Name | Owner | Encoding | Collation | Ctype | Access privileges
    -----------+-------+----------+-----------+-------+-------------------
    postgres | pgsql | UTF8 | C | C |
    template0 | pgsql | UTF8 | C | C | =c/pgsql +
    | | | | | pgsql=CTc/pgsql
    template1 | pgsql | UTF8 | C | C | =c/pgsql +
    | | | | | pgsql=CTc/pgsql
    (3 rows)

    Это - пример просмотра информации о базе.



    fox, 2011-01-24 в 0:15:51

    А зачем шифровать swap??? При этом всё остольное не зашифровано...

    Fomalhaut, 2011-01-24 в 1:12:51

    В своп может попасть то, что, например, хранится в БСД в виде хэш-"оттиска" - пароли те же.
    У меня, например, отдельный "винт" зашифрован, но т.к. здесь рассматривается вопрос не общего шифрования, а конкретной системы - это не упоминается.

    Ёхман, 2013-05-10 в 15:48:18

    geli_swap_flags="-a hmac/sha256 -e blowfish -l 128 -s 4096 -d"

    Необходимость опции "-a" тут очень сомнительна. В определенных случаях, злоумышленник, который имеет неоднократную возможность сливать себе зашифрованные данные, может успешно манипулировать ими, даже не имея возможности их расшифровать. Например, откатить систему до непропатченного состояния. Проверка целосности нужна именно против этого. Навряд ли это актульная проблема для свопа. При этом уменьшение объема - как раз результат этой опции.

    Опция "-l" тоже не нужна, поскольку 128 - значение по-дефолту.

    Опция "-d" тоже не нужна, поскольку отмонтированние свопа как правило все равно не осуществляется до завершения работы.

    Опция "-e" тоже не нужна, поскольку blowfish не дает никаких преимуществ перед стандартным AES.

    Получается единственная опция, которая тут хоть что-то значит - это "-s".

    На самом деле вся премудрость шифрования свопа заключается в одной операции: достаточно прописать суффикс ".eli" к устройству свопа во fstab, и не париться.



  •  

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0374 секунд
    Из них PHP: 24%; SQL: 76%; Число SQL-запросов: 75 шт.
    У Вас отключено GZIP-сжатие в браузере. Размер страницы 29774